Hilbert代数方程组数值解法.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文档。上传文档
查看更多
Hilbert代数方程组的数值解法1 Hilbert矩阵的条件数和矩阵的阶数的关系编制Matlab程序:clear,clcformat long%format shortfor n=1:14;A=hilb(n);%A=rand(n);condA(n)=cond(A,inf);endplot(log10(condA))得出图形图1:Hilbert矩阵和阶次的关系由图可见a.Hilbert矩阵的2-条件数的对数与阶次近似正比; b.阶次超过12后,计算困难,舍入误差会导致计算不准结论:Hilbert矩阵的2-条件数随阶次指数增长,关系大概是:Log10(Cond(A))= 1.33791720780254(n-1)2.各种求解方法的对比2.1 直接法:Gauss消去方法(程序见附录,下同)在双精度型变量下,即eps=2.220446049250313e-016,对于直接法Gauss消去方法,求解Hilbert矩阵方程组,在阶次n=13时,解得:X=[10.999971.00130.978811.1906-0.0354414.6171-7.396714.089-12.5429.9162-2.38171.5624]出现明显错误,可见Gauss消去方法对病态问题比较敏感。求解阶次不高。2.2 Jacobi迭代法很遗憾,jakobi迭代法的迭代矩阵的谱半径随阶次线性上升(程序见附录2),普遍大于1,计算结果发送,无法迭代出满意的结果。需放弃图2:Jacobi迭代矩阵的谱半径2.3 Gauss-Seidel迭代与SOR迭代求解先分析SOR迭代矩阵的谱半径和松弛因子w的关系图3:SOR迭代矩阵的谱半径和松弛因子w的关系可以发现SOR迭代和G-S迭代的谱半径都普遍接近于1,因此松弛因子的选择对计算结果的影响不大。我们选择w=1,即G-S迭代来做数值实验:选定e=0.000001;迭代次数:15610次下降曲线:图4:G-S迭代下降曲线取w=1.5时,迭代次数需58798次前100步下降曲线图5:SOR(w=1.5)下降曲线w=0.5 迭代次数16290图6:SOR(w=0.5)下降曲线2.4 SOR按照寻优算法的迭代求解寻优得出w=0.1时,谱半径相对较小,迭代次数只需3689次,下降曲线也非常快,如图7图7:SOR(w=0.1)下降曲线2.5共轭梯度法迭代求解奇迹发生了,迭代只需要9次就完成了,下降也非常快,见图图8:共轭梯度法下降曲线2.6 各算法综合对比综上所述,在双精度的数值精度下和e=0.00001下,在笔记本可接受的计算时间里,做各种算法的对比如下:GaussJacobiG-SSORCG能计算到n阶122120020005500迭代次数//最多中等较少计算时间/慢较快超快稳定性较差最差一般较好很好3. 讨论病态方程组的求解3.1 对于Hilbert病态方程组的求解Gauss直接法和Jacobi迭代法都比较差,G-S法和SOR虽能求解,但由于其条件数都接近于1,收敛太慢,计算时间太长,因此实际可计算的阶次不高。3.2 采用高精度计算我们分别采用单精度和双精度型变量,以Gauss消去方法为求解办法,做数值实验,x2=gauss(A, b)x3=gauss(single(A), single(b))当阶次n=6时,得x2 = 0.99999999999908 1.00000000002630 0.99999999982172 1.00000000046435 0.99999999948691 1.00000000020235x3 = 1.0003130 0.9906988 1.0645127 0.8293791 1.1905806 0.9242350可以发现,x3已经明显偏离了正解,得出结论,采用高精度计算所得解有更多有效位。3.3 采用预处理方法预处理共轭梯度法见附录,采用后,可以发现,计算4000阶的问题,速度加快很多,迭代次数也减少了。附录1 Gauss消去方法function x=Gauss(a,b)% Gauss消去法[n,m]=size(a);nb=length(b);det=1;%存储行列式值x=zeros(n,1);for k=1:n-1 for i=k+1:n if a(k,k)==0 return end m=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-m*a(k,j); end b(i)=b(i)-m*b(k); end det=det*a(k,k);enddet=det*a(n,n);for k=n:-1:1

您可能关注的文档

文档评论(0)

189****6140 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档