- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北航数值分析大作业2.
一、算法设计方案计算矩阵A对i,j=1到10执行i,j=1, …,n。设置标志量flag=0,flag=0表示A[i][r]全为零,flag=1表示A[i][r]不全为零。对r=1到n-2执行
(1) if |air|Epsilon,flag=1,转(2);
(2) 计算
dr=sqrt(A[i][r]* A[i][r])
cr=--sgn(A[r+1][r])
hr = cr*(cr-A[r+1][r]);
(3) 对i=r+1到n执行ur[i] = A[i][r]; ur[r+1] = ur[r+1]-cr;
(4) 计算
pr=A’*ur/hr
qr=A*ur/hr
tr=pr’*ur/hr
wr=qr-tr*ur
A=A-wr*ur-ur*pr’
3.对A(n-1)做双步位移QR分解
(1) 记A1=A(n-1)=A[i][j],令k=0,m=n;
(2) if | A[m][m-1]=Epsilon|,则得到A的一个特征值Lamda[m][0]=A[m][m],置m=m-1,转(3);否则转(4);
(3) if m=1,则得到A的一个特征值Lamda[m][0]=A[1][1],转(10);if m=0,则直接转(10);if m1,则转(2);
(4) 求二阶子阵的两个特征值,即计算二次方程的两个根,
x*x- s1[0]*x+ s2[0]=0 (*)
其中s1[0] = A[m-1][m-1]+A[m][m]; s2[0]= A[m-1][m-1]*A[m][m]-A[m-1][m]*A[m][m-1]
(该过程可用求解二次方程子程序实现,注意讨论根的情况);
(5) if m=2,则得到A的两个特征值,转(10);否则转(7);
(6) if |A[m-1][m-2]) |=Epsilon,则得到A的两个特征根,置m=m-2,转(3);否则转(7);
(7) if k=L,printf “Fail to get all the eigenvalues of matrix A!”;否则转(8);
(8) 对i,j=1,…,m,计算
s= A[m-1][m-1]+A[m][m];
t= A[m-1][m-1]*A[m][m]-A[m-1][m]*A[m][m-1];
Mk[i][j] = Mk[i][j]-s*A[i][j]+t*I[i][j]
Mk=Qk*Rk(对Mk作QR分解,可调用QR分解子程序)
Ak+1=Qk’*Ak*Qk
(9) 置k=k+1,转(2);
(10) printf “Get all the eigenvalues of matrix A! Congratulations!”,停止计算。
Mk的QR分解算法:
记B[][N]=Mk[][N],C[][N]=A[][N],置flag=0(B[i][r]=0)。对r=1到m-1执行
(1) if |B[i][r]|=Epsilon,flag=1,转(2);
(2) 计算
dr=sqrt(A[i][r]* A[i][r])
cr=--sgn(A[r+1][r])
hr = cr*(cr-A[r+1][r]);
(3) 对i=r+1到m执行ur[i] = A[i][r]; ur[r+1] = ur[r+1]-cr;
(4)计算
vr=Br’*ur/hr
Br+1=Br-ur*vr’
pr=Crur/hr
qr=Crr/hr
tr=pr’*ur/hr
wr=qr-tr*ur
Cr+1=Cr-wr*ur-ur*pr’
(5) continue.
求二元一次方程算法:
置根Lamda[][3]={0}。对方程(*),令t1=s1[0];t2=s2[0];
计算
delt = t1*t1-4*t2;
sqdelt = sqrt(fabs(delt));
(2) if delt=0.0,则s1[0] = (t1+sqdelt)/2.0,s2[0] = (t1-sqdelt)/2.0;否则转(3);
(3)置Lamda[m][2]=1; Lamda[m-1][2]=1; s1[0]=t1/2.0; s1[1]=sqdelt/2.0; s2[0]=t1/2.0; s2[1]=-sqdelt/2.0;
4.用列主元Gauss消去法求解实特征根对应的特征向量
(1) if Lamda[m][2]=0,转(2);
(2) 调用GaussOptimal子程序;
(3) printf “When the eigenvalue is %4.12e, the corresponding eigenvector is\n,Lamda[i][0]”
GaussOptimal算法
记a1=aij,令b[N]
文档评论(0)