MATLAB 块雅克比迭代法求线性方程组Ax=b的解 块高斯-赛德尔迭代法求线性方程组Ax=b的解.docVIP

MATLAB 块雅克比迭代法求线性方程组Ax=b的解 块高斯-赛德尔迭代法求线性方程组Ax=b的解.doc

  1. 1、本文档共5页,可阅读全部内容。
  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文档。上传文档
查看更多
MATLAB 块雅克比迭代法求线性方程组Ax=b的解 块高斯-赛德尔迭代法求线性方程组Ax=b的解

function [x,N]= BJ(A,b,x0,d,eps,M) %块雅克比迭代法求线性方程组Ax=b的解 if nargin==4 ??? eps= 1.0e-6; ??? M = 10000; elseif nargin4 ??? error ??? return elseif nargin ==5 ??? M = 10000;???????????? %参数的默认值 end NS = size(A); n = NS(1,1);??????????????? if(sum(d) ~= n) ??? disp(分块错误!); ??? return; end bnum = length(d); bs = ones(bnum,1); for i=1:(bnum-1) ??? bs(i+1,1)=sum(d(1:i))+1; ??? %获得对角线上每个分块矩阵元素索引的起始值 end DB = zeros(n,n);??????????????? for i=1:bnum ??? endb = bs(i,1)+d(i,1)-1; ??? DB(bs(i,1):endb,bs(i,1):endb)=A(bs(i,1):endb,bs(i,1):endb); ??? %求A的对角分块矩阵 end for i=1:bnum ??? endb = bs(i,1)+d(i,1)-1; ??? invDB(bs(i,1):endb,bs(i,1):endb)=inv(DB(bs(i,1):endb,bs(i,1):endb)); ??? %求A的对角分块矩阵的逆矩阵 end N = 0; tol = 1; while tol=eps ??? x = invDB*(DB-A)*x0+invDB*b;??? %由于LB+DB=DB-A ??? N = N+1;?????????????????????????????? %迭代步数 ??? tol = norm(x-x0);?????????????????? %前后两步迭代结果的误差 ??? x0 = x; ??? if(N=M) ??????? disp(Warning: 迭代次数太多,可能不收敛!); ??????? return; ??? end end function [x,N]= BGS(A,b,x0,d,eps,M) %块高斯-赛德尔迭代法求线性方程组Ax=b的解 if nargin==4 ??? eps= 1.0e-6; ??? M = 10000; elseif nargin4 ??? error ??? return elseif nargin ==5 ??? M = 10000; end NS = size(A); n = NS(1,1); bnum = length(d); bs = ones(bnum,1); for i=1:(bnum-1) ??? bs(i+1,1)=sum(d(1:i))+1; ??? %获得对角线上每个分块矩阵元素索引的起始值 end DB = zeros(n,n);?????? for i=1:bnum ??? endb = bs(i,1)+d(i,1)-1; ??? DB(bs(i,1):endb,bs(i,1):endb)=A(bs(i,1):endb,bs(i,1):endb); ??? %求A的对角分块矩阵 end LB = -tril(A-DB);????? %求A的下三角分块阵 UB = -triu(A-DB);????? %求A的上三角分块阵 N = 0; tol = 1; while tol=eps ??? invDL = inv(DB-LB); ??? x = invDL*UB*x0+invDL*b;??? %块迭代公式 ??? N = N+1; ??? tol = norm(x-x0); ??? x0 = x; ??? if(N=M) ??????? disp(Warning: 迭代次数太多,可能不收敛!); ??????? return; ??? end end 类别:matlab 编程 | | 添加到搜藏 | 分享到i贴吧 | 浏览(168) | 评 论?(0) ? 上一篇:MATLAB 共轭梯度法求线性方程组A...????

文档评论(0)

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

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

1亿VIP精品文档

相关文档