数值分析实验病态线性方程组的算法设计.docxVIP

数值分析实验病态线性方程组的算法设计.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值分析课程实验报告 实验名称 病态线性方程组的算法设计 班级 任课教师 学号 姓名 序号 评分 一、实验目的 1、 初步病态线性方程组的判定。 2、 初步了解常规方法在求解病态线性方程组时遇到的困难。 3、 针对病态问题设计求解算法并验证算法的有效性。二、用文字或图表记录实验过程和结果 1、Hilbert矩阵如下: ?? 1 1/ 2 L 1/ n ? ? H ? (h n ij ?1/ 2 1/ 3 L ) ? ? ?? M M ? 1/( n ?1) ? 1)?M 1)? ?1/ n 1/( n ?1) L 1/(2 n ? ? 其中h ij ? 1(i ? j ?1) ,它是一个对称正定矩阵,并且 cond (H ) 随着n 的增加 n 迅速增加,利用Matlab分析如下: 可以发现在阶数不断增大Hilbert矩阵的条件数不断增大,这样使得求解Hilbert病态方程变得非常困难,即使A或b有微小扰动时,即使求解过程是精确进行的(即没有舍入误差),所得的解相对于原方程的解也会有很大的相对误差。这就需要提出病态线性方程组的求解方法,对于一般的方程求解常用的有高斯(选主元)消去算法、高斯— 赛德尔迭代。本试验先使用用列主元高斯消去算法和高斯-赛德尔迭代算法求解线性方程组: H x ? b ?n n 其中b ? (b ,L , b )T , b ? h (i ? 1,2,L , n) 。 1 n i ij 2、高斯列主元消去算法 j ?1 设计流程图: 开始 给定阶数n 自动生成Hilbert 矩阵和常数向量b 将 j 列主元Ajj 存放在top 中 |Aij|| 交换 i=i+1 计算并储存结果在上三角矩阵 j=j+1 j=n 回代 结束 计算结果: 图 1 高斯列主元消去算法流程图 n X(i) i=1,2…….n 3 5 10 20 40 误差分析: 从表中明显发现当Hilbert 矩阵的阶数较大时(n=40),与精确解 X=1 完全不一样,而且误差很大,究其原因,在有Hilbert 矩阵的病 态性,对于算法中的舍入误差,即使不是很大,而且在算法中的步骤也是精确的,会经过相应的算法将误差进行放大,导致矩阵的条件数随着阶数的升高而不断增大,条件数反映了方程组解对原始数据变化的敏感程度,其值越大,这种敏感性就越高,对于微小的扰动,解的相对误差就可能越大。通常认为条件数是初始的相对误差引起解的相对误差的放大倍数。当n=20 时,由于计算机的本身的保存问题,带入了微小的扰动误差,因此导致条件数的不断增大和解的不准确。 3、高斯-赛德尔迭代算法(1)设计流程图 开始 给定阶数n 和迭代精度 生成Hilbert 矩阵和常数b 向 给定初始解y 和准确解并赋值x1 迭代求解y ||y-x1|| tol 结束 图 2 高斯—赛德尔迭代算法流程图 计算结果: n X(i) i=1,2……n 3 5 10 20 40  (迭代精度 tol= 误差分析: 高斯—赛德尔迭代是对于线性方程组的比较行之有效的方法,高 斯—赛德尔迭代较之雅可比迭代有很大的改进,因为在每次迭代中都是采用最新的迭代数据,对迭代解的控制有很大的进步,本试验在精度控制的时候采用步数的自动控制,进一步控制解的准确性。虽然在计算机存储的时候也有微小的舍入误差,但是当控制精度得到后,由于迭代的步数没有指定,经过迭代后,其解会达到恨到的精度。但是对于高斯赛德尔迭代,要达到指定的精度,需要 大量的迭代步骤,降低了运算速度。因此在设计新算法的时候, 主要考虑如何降低运算迭代次数,由于在实际的运算中,时间的快慢直接关系到算法的好坏,因此,在设计新算法的时候,采用最速下降法进行初始值的估算,然后用高斯—赛德尔迭代进行进一步的求解。虽然在实际的运算过程中,最速下降法速度很慢,但是由于本实验仅仅用它来求迭代初始解,故选用最速下降法,而放弃共轭梯度算法。 4、设计新算法——利用最速下降法求得迭代的初始解(1)设计流程图: 开始 给定初始解x0,eps k=0,计算相关量 ||r(k)|| =eps k=k+1 结果(高斯—赛德尔迭代的初始 高斯—赛德尔迭代 结果 计算结果: n X(i) i=1,2……n 3 5 图 2 高斯—赛德尔迭代算法流程图 (迭代精度tol=、最速下降法精度eps=) 10 20 40 误差分析: 虽然在采用了最速下降法后的速度有很大的提高,但是结果较高斯—赛德尔迭代有不足,这是由于这种方法和共个梯度都是利用二次函数极小问题求解对称正定矩阵的线性方程组,故在求解二元函数的解的舍入误差直接带入高斯—赛德尔迭代的迭代过程中,将误差进一步放大,导致解的误差较直接高斯—赛德尔迭代所得解有所增大。但就速度来说,它的意义比带来的误差影响大,故对原来计算方法有所

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档