Jacobi-Gauss-Seidel-共轭梯度算法比较.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文档。上传文档
查看更多
第三章上机题目: 题目一:试分别用: (1)Jacobi迭代法;(2)Gauss-Seidel迭代法和;(3)共轭梯度法解线性方程组:10 迭代初始向量取. 解: Jacobi迭代法算法: 输入,,精度. 置i=1 对k=1,2,…,n,,,, 若,输出最终结果和迭代次数,停机;否则转5. 置i+1i,(k=1, 2, n),转3;否则,停机 源程序: clear clc i=1; a=[10,1,2,3,4; 1,9,-1,2,-3; 2,-1,7,4,-5; 3,2,3,12,-1; 4,-3,-5,-1,15]; d=diag(diag(a)); l=d-tril(a); u=d-triu(a); d0=inv(d); b=[12;-27;14;-17;12]; x0=[0,0,0,0,0]; B=d0*(l+u); f=d0*b; x=B*x0+f; while norm(x-x0,inf)=1e-4 x0=x; x=B*x0+f; i=i+1; end x i 运行结果: Gauss-Seidel迭代法 Gauss-Seidel迭代法算法: 输入,,精度,维数N. 置K=1. 由Gauss-Seidel算法, L=00000 若,输出“第次迭代”和最终结果,停机;否则转5. 置k+1k,(i=1, 2, n),转3;否则,停机 源程序: clear;clc; A=[10,1,2,3,4; 1,9,-1,2,-3; 2,-1,7,4,-5; 3,2,3,12,-1; 4,-3,-5,-1,15]; b=[12;-27;14;-17;12]; N=length(b); fprintf(库函数计算结果: ); x=inv(A)*b x=[0,0,0,0,0]; D=diag(diag(A)); E=-tril(A,-1); F=-triu(A,1); B=inv(D-E)*F; g=inv(D-E)*b; eps=0.001; for k=1:50 fprintf(第%d次迭代: ,k); y=B*x+g; fprintf(\n与上次计算结果距离(2 范数):%f\n,norm(x-y)^2); if norm(x-y)eps break; end x=y end 运行结果: 共轭梯度法 共轭梯度法算法: 输入,初始向量,误差限. 库函数计算结果作对比. 计算 对于k=1,2,…,计算 若=0或,则终止计算,输出“第k次迭代”以及,否则转3. 源程序: clear A=[10,1,2,3,4; 1,9,-1,2,-3; 2,-1,7,4,-5; 3,2,3,12,-1; 4,-3,-5,-1,15]; b=[12;-27;14;-17;12];%自定义初始化非齐次部分 N=length(b); %解向量的维数 fprintf(库函数计算结果:); X=inv(A)*b %库函数计算结果 x=zeros(N,1);%迭代近似向量 eps=0.0000001;%精度 r=b-A*x;d=r; for k=0:N-1 fprintf(第%d次迭代,k+1); a=(norm(r)^2)/(d*A*d) x=x+a*d rr=b-A*x; %rr=r(k+1) if (norm(rr)=eps)||(k==N-1) break; end C=(norm(rr)^2)/(norm(r)^2); d=rr+C*d; r=rr; end 运算结果: 结果分析以及结论: 从结果来看,Jacobi迭代法用了45次迭代得到精确解,Gauss-Seidel迭代法用了21次迭代得到精确解,共轭梯度法仅仅用了5次就得到了精确解。所以,我们不难得出这样一个结论,对于此题所需解决的线性方程组求解问题,三种迭代方法都是收敛的,且由迭代次数可以看出,共轭梯度法的收敛速度最快,运用这种方法求解这道题的算法是最有效的,Gauss-Seidel迭代法次之,Jacobi迭代法最慢。 题目二:用共轭梯度法或最速下降法求解Hilbert矩阵问题。(程老师上课布置的作业) 解: 由于题目一种已使用共轭梯度法,在题目二中采用最速下降法求解。 算法: 按照每一个元素以及Hilbert矩阵的元素特性,即,建立Hilbert矩阵,对其中元素用循环语句逐一建立。要想完成此题,我们需要先建立一个Hilbert矩阵,在此我以5×5的Hilbert矩阵为例,并令非齐次项矩阵b=[1,1,1

文档评论(0)

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

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

1亿VIP精品文档

相关文档