jacobi-G-S-超松弛迭代法MATLAB程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

functioniterationA=[10,1,2,3,4;1,9,-1,2,-3;2,-1,7,3,-5;3,2,3,12,-1;4,-3,-5,-1,15];b=[12,-27,14,-17,12]';x0=[0,0,0,0,0]';tol=1e-12;disp('jacobi迭代法的结果和次数如下:')[x,k]=Fjacobi(A,b,x0,tol)disp('G-S迭代法的结果和次数如下:':')[x,k]=Fgseid(A,b,x0,tol)disp('超松弛的结果和次数如下:':')[x,k]=Fsor(A,b,x0,1.2,tol)disp('共轭梯度法的结果和次数如下:':')[x,k]=Fcg(A,b,x0,tol)%jacobi迭代法function[x,k]=Fjacobi(A,b,x0,tol)max=300;D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=D\(L+U);f=D\b;x=B*x0+f;k=1;whilenorm(x-x0)=tolx0=x;x=B*x0+f;k=k+1;if(k=max)disp('µü´ú³¬¹ý300´Î£¬·½³Ì×é¿ÉÄܲ»ÊÕÁ²');return;endend%G-S迭代法function[x,k]=Fgseid(A,b,x0,tol)max=300;D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);G=(D-L)\U;f=(D-L)\b;x=G*x0+f;k=1;whilenorm(x-x0)=tolx0=x;x=G*x0+f;k=k+1;if(k=max)disp('µü´ú³¬¹ý300´Î£¬·½³Ì×é¿ÉÄܲ»ÊÕÁ²');return;endend%超松弛迭代法function[x,k]=Fsor(A,b,x0,w,tol)max=300;if(w=0||w=2)error;return;endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=inv(D-L*w)*((1-w)*D+w*U);f=w*inv((D-L*w))*b;x=B*x0+f;k=1;whilenorm(x-x0)=tolx0=x;x=B*x0+f;k=k+1;if(k=max)disp('µü´ú³¬¹ý300´Î£¬·½³Ì×é¿ÉÄܲ»ÊÕÁ²');return;endend%共轭梯度法function[x,k]=Fcg(A,b,x0,tol)n=size(A,1);x=x0;r=b-A*x;d=r;alpha=(r'*r)/(d'*A*d);x=x0+alpha*d;k=1;whilenorm(x-x0)=tolx0=x;x=x+alpha*d;r2=b-A*x;k=k+1;beta=norm(r2)^2/norm(r)^2;d=r2+beta*d;r=r2;end

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功