资源描述:
《jacobi G-S,超松弛迭代法MATLAB程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、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('超松弛的结果和次数如下:':')[
2、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=Db;x=B*x0+f;k=1;whilenorm(x-x0)>=tolx0=x;x=B*x0+f;k=k+1;if(k>=max)disp('µü´ú
3、³¬¹ý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´Î£¬·½³Ì×é¿ÉÄܲ»ÊÕÁ²
4、');return;endend%超松弛迭代法function[x,k]=Fsor(A,b,x0,w,tol)max=300;if(w<=0
5、
6、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('µü
7、´ú³¬¹ý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