- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ch10. 数值算法实现 §1. 线性方程组解法 1、三角形线性方程组解法 以上三角形线性方程组 为例。 回代: %文件 uptri.m function u = uptri ( a, b ) n= size(a,1) ; x(n)= b(n) / a(n, n) ; for i = n-1:-1:1 s=0 ; for j = i+1: n s=s+a(i, j) * x( j ) ; end x(i) = ( b(i) –s) / a(i, i) ; end u = x ; 2、顺序Gauss消去法 (1)消去过程: 第 k 步,计算 (2)回代过程: %文件 gauss.m function u = gauss (a, b) n = length (b) ; for k=1: n –1 for i = k+1 : n mult = a ( i, k) / a (k, k) ; for j =k +1: n % if abs ( a( k, k) ) 1e–6 a (i, j) = a (i, j) – mult * a(k, j) ; % else % disp (‘顺序Gauss消去法失败’); % pause ; % exit ; % end end b (i) = b (i) – mult * b (k) ; end end x(n)= b(n) / a(n, n) ; for i = n-1:-1:1 s=0 ; for j = i+1: n s=s+a(i, j) * x( j ) ; end x(i) = ( b(i) –s) / a(i, i) ; end u = x ; 例: % 主文件main.m a=[6, -2, 2, 4; 12, -8, 6, 10; 3,-13, 9, 3; -6, 4, 1, -18 ]; b=[16, 26, -19, -34]; x= gauss (a, b); disp ( ‘方程组解为:’ ); x 则有: main 方程组解为: x= 3 1 -2 1 3、Jacobi迭代法 % jacobi.m function y = jacobi ( a, b, x0) D = diag ( diag (a) ) ; U = - triu (a, 1) ; L = - tril (a, -1) ; B = D \ ( L+U) ; f = D \ b ; y = B* x0 + f ; n=1; while norm (y –x0 ) = 1.0e –6 x0 = y ; y = B * x0 + f ; n = n +1; end y n 例: P249 例7.21 a =[10, -1, 0; -1, 10, -2; 0, -2, 10]; b =[9; 7; 6]; jacobi ( a, b, [0; 0; 0] ) y = 0.9958 0.9579 0.7916 n = 11 §2. 方程求根 1、二分法 % erfen.m function y = erfen (fun,a, b, esp ) if nargin 4 esp =1e –4 ; end if feval (fun, a) * feval (fun, b) 0 n = 1 ; c = (a+ b) / 2 ; while c esp if feval ( fun, a) * feval (fun, c) 0 b = c ; c = ( a+b) / 2 ; elseif feval ( fun, c) * feval (fun, b) 0 a = c ; c = ( a+b) / 2 ; else y = c ; esp = 10000 ; end n= n+1 ;
原创力文档


文档评论(0)