高等数值分析作业第一次实验.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高等数值分析作业第一次实验

高等数值分析第一次实验T1. 构造例子说明CG的数值形态。当步数 = 阶数时CG的解如何?当A的最大特征值远大于第二个最大特征值,最小特征值远小于第二个最小特征值时,方法的收敛性如何?Answer:对于问题1:当步数 = 阶数时CG的解如何?在MATLAB中构造N阶对称正定矩阵代码如下:N=1000D = diag(rand(N,1));U = orth(rand(N,N));A = U*D*U;在计算时,取X0=zeros(N,1);b=ones(N,1);自己编写CG算法,如下:Xk = X0;rk=b-A*Xk;pk=rk;crk_1=rk*rk;for k=1:N k=k+1; apk=A*pk; ak=crk_1/(pk*apk); Xk=Xk+ak*pk; rk=rk-ak*apk; crk=rk*rk; bk_1=crk/crk_1; crk_1=crk; pk=rk+bk_1*pk; m(k)=norm(rk); r(k)=k;end plot(r,m,r-); Ek=m(k)计算结果如下(绘制出来的随迭代次数的变化如上图所示):N1000200030004000-81.8505-98.3653-126.3256-115.8889运行时间(s)4205448105.792648289.610550由上表可以看出对于对称正定矩阵A,CG算法还是比较稳定的,但求解步数=阶数时,CG算法的解即为准确解(误差极小)。对于问题2:当A的最大特征值远大于第二个最大特征值,最小特征值远小于第二个最小特征值时,方法的收敛性如何?构造1000阶的对称正定矩阵如下,收敛准则取为绝对ε10(-10):首先构造一个特征值分别为0.1到1的对称正定矩阵A,代码如下(算例1):D = diag(linspace(0.1,1,N));U = orth(rand(N,N));A = U*D*U;在之前的基础上,将最大特征值调为107,最小特征值为10-5,代码如下(算例2):DIA=linspace(0.1,1,N);DIA(1)=10^(-5);DIA(N)=10^7;D = diag(DIA);U = orth(rand(N,N));A = U*D*U;最后生成一个特征值在10-5到107均匀分布的矩阵(算例3):DIA=linspace(10^(-5),10^7,N);D = diag(DIA);U = orth(rand(N,N));A = U*D*U;计算结果如右图所示,首先对比可以发现矩阵的收敛速度跟其条件数大小有关,条件数小时,收敛速度快,算例123,同时,A的中间特征值分布对CG的收敛速度有巨大的影响。实际上,在经过几步后,CG的收敛因子将是:而非因此,本题中算例2的矩阵的收敛速度较算例3快很多,而与算例1较为接近。T2. 对于同样的例子,比较CG和Lanczos的计算结果。Answer:首先构造一个1000阶的对称正定矩阵,代码如下:D = diag(linspace(1,1000,N));U = orth(rand(N,N));A = U*D*U;在计算时,取X0=zeros(N,1);b=ones(N,1);CG算法代码同上,在计算时取停机准则为绝对误差e10-12,Lanczos算法的代码如下所示(这里取得矩阵为对称正定矩阵,因此Lanczos过程求解yk时采用cholesky分解):Xk = X0;n=size(A,1);aj=zeros(n,1);bj=zeros(n,1);r0=b-A*Xk;rk=r0;q=rk/norm(rk);r=A*q;aj(1)=q*r;r=r-aj(1)*q;if r~=0 bj(1)=norm(r);endq1=r/bj(1);qk=q;k=1;TK(1,1)=aj(1);L=chol(TK);lyk=YK(L,norm(r0)*eye(k,1));yk=YKN(L,lyk);Xk=X0+qk*yk;rk=b-A*Xk;m(k)=log10(norm(rk));num(k)=k;TK(1,2)=bj(1);TK(2,1)=bj(1);qk=[q q1];while norm(rk)e kn k=k+1; r=A*q1-bj(k-1)*q; aj(k)=q1*r; r=r-aj(k)*q1;if r~=0 bj(k)=norm(r);end q=q1; q1=r/bj(k); TK(k,k)=aj(k); L=chol(TK); lyk=YK(L,norm(r0)*eye(k+1,1)); yk=YKN(

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档