您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 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
本文标题:jacobi-G-S-超松弛迭代法MATLAB程序
链接地址:https://www.777doc.com/doc-7250863 .html