矩阵计算上机实验报告(哈工程)课件.docVIP

  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文档。上传文档
查看更多
哈尔滨工程大学 矩阵计算上机实验报告 姓名: 学号: 2012-2013 学年第二学期《矩阵计算》上机实验报告 矩阵计算实验报告 实验名称 矩阵计算上机实验 指导教师 姓名 年级 学号 成绩 实验一、用共轭梯度法求实对称线性方程组的解 一、实验目的: 1、学习使用 matlab 编写数值计算程序。 2、了解共轭梯度法原理和编程方法。 二、实验要求: 1、阐述共轭梯度法原理和编程方法。 2、根据共轭梯度法算法原理编写 matlab 程序,并运行的出结果。 ( 提示:下文是 Jacobi 迭代求解线性方程组的实验过程, 仅供参考。提交作业时, 请删除!) 三、实验原理: 设 n 阶非奇异矩阵A的主对角元 a11,a22, ,ann 全不为0,记D= diag ( a11,a22, ,a )是非奇异对角阵,做A的一个分裂: nn A D (D A) 。 1 1 -1 。迭代过程式为 x Bx g 记B D (D A) I D A,g D b k 。 1 k 这种迭代方法称为 Jacobi 迭代法。 其迭代矩阵记为: B 右端向量记为: g J J 1 a 11 0 a 12 a 13 a 1n 1 a 22 a 21 0 a 23 a 2n B J 1 = a a a 0 a 33 31 32 3n 1 a nn a n1 a n2 a 0 n3 0 a 21 a 22 a 12 a 11 0 a 13 a a 11 23 a 22 a 1n a 11 a 2n a 22 - a 31 a 33 a 32 a 33 0 a 3n a 33 a n1 a nn a n2 a nn a n3 a nn 0 2012-2013 学年第二学期《矩阵计算》上机实验报告 ( k) ( k) ( k) ( k ) T 记k x1 ,x ,x , ,x ,Jacobi 迭代过程为: x ( ) 2 3 n ( k x 1 1) 0 a 12 a 13 a 1n ( x 1 k) b 1 ( k x 2 1 ) a 21 0 a 23 a 2n ( k) 2 x b 2 ( k x 3 1 ) D 1 a 31 a 32 0 a 3n ( k) x 3 b 3 ( k n x 1) a n1 a n2 a n3 0 ( k) n x b n 对照等号两边,得到计算 ( k 1) x (i=1,2, ? ,n) 的公式为 i i 1 n ( 1 k 1) ( k ) ( k) xi a x a x b ij j ij j i a ii j 1 j i 1 ,或 n ( 1 k k 1) ( k) ( ) x ,i=1,2, ? i b a x x i ij j i a j 1 ii 四、实验内容与步骤: 1、实验内容: 依照实验原理编写共轭梯度法的程序。 2、实验步骤: 首先,在电脑上安装 matlab ,然后,启动matlab ,新建一个 M文件。 实验程序如下: 程序代码程序代码说明 function % use the function 。 [x,k]=jacobi( A ,b); % 初始化 x0。 x=zeros(size(b)); % D为A 的主对角元上的值。 D=diag(diag( A )); -1 。 % 根据公式 B D (L U) B=inv(D)*(D- A ); g=inv(D)*b; % 最小精度设为tol 。 tol=1e-6; err=2; % 从 k=0 开始迭代。 k=0; % 先要判断是否收敛,如果不收 while(errtol) 敛,则提示出错。如果收敛,则根 x1=B*x+g; 据 x1 =B*x+g,计算出第一步迭代的 err= max(abs(x1-x)); 值。 x=x1; % 把 x 的值放在 x1 中,k 加一继 k=k+1; 续迭代,直到达到设定的精度为止。 end 五、实验数据及结果: 1、实验数据为: A=[-2 1 0; 1 -2 1 ; 0 1 -2]; b=[-2 0 -3] ; 2、实验结果为: (请指出你选定的初值x 和所用的迭代次数 ) 0 2012-2013 学年第二学期《矩阵计算》上机实验报告 六、实验分析: 1、在本次实验中所输的初值所对应的矩阵为收敛的, 所以会产生结果, 如果当输入一 个 Jacobi 矩阵为发散的初值时,则 matlab 会提示出错。同时也可能会导致死机。 2、在本次实验中, 很容易把迭代矩阵中各分量的代码的写错, 因为编程技术还不够熟 练, 所以在使用数学指令上还不够全面, 因此常翻阅书籍找指令代码, 这在以后的实验 中是 应该加强训练的。 3、通过本次实验也增强了我对 matlab 这个软件的了解。 实验二、利用正交化方法最小二乘法问题 一、

文档评论(0)

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

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

1亿VIP精品文档

相关文档