高斯赛德尔迭代法matlab编程.doc

高斯赛德尔迭代法matlab编程.doc

ID:53113236

大小:12.50 KB

页数:2页

时间:2020-04-01

高斯赛德尔迭代法matlab编程.doc_第1页
高斯赛德尔迭代法matlab编程.doc_第2页
资源描述:

《高斯赛德尔迭代法matlab编程.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、function[x,k]=GaussSeidel(A,b,x0,eps,M)%高斯赛德尔迭代法求方程组的解(矩阵公式求解)%A为方程组的系数矩阵;b为方程组的右端项%x为线性方程组的解了;x0为迭代初值%eps为误差限;M为迭代的最大次数ifnargin==3eps=1.0e-6;%默认精度M=10000;%参数不足时默认后两个条件elseifnargin==4M=10000;%参数的默认值elseifnargin<3error('参数不足');returnend[n,m]=size(A);nb=length(b);%当方程组行与列的维数不相等时,停止计算,并输出出错信息

2、ifn~=merror('矩阵A行数和列数必须相等!');return;end%当方程组与右端项的维数不匹配时,停止计算,并输出出错信息ifn~=nberror('矩阵A的行数必须和b的长度相等!');return;endL=zeros(n,n);U=zeros(n,n);D=zeros(n,n);fori=2:nforj=1:i-1L(i,j)=-A(i,j);endendfori=1:n-1forj=i+1:nU(i,j)=-A(i,j);endendfori=1:nD(i,i)=A(i,i);endB=inv(D-L)*U;%B为迭代矩阵g=inv(D-L)*b;%g

3、为右端项pr=max(abs(eig(B)));%求迭代矩阵谱半径ifpr>=1error('迭代矩阵谱半径大于1迭代法不收敛');return;endk=0;tol=1;whiletol>=epsx=B*x0+g;k=k+1;%迭代步数tol=norm(x-x0);%前后两步迭代结果的误差x0=x;if(k>=M)disp('Warning:迭代次数太多,可能不收敛!');return;endend

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。