3、ndifnorm(x-xO,inf)<0.0001,break;end%0.0001为误差精度xO=x;k=k+l;endifk〉NdispC雅可比迭代次数已经超过最大迭代次数N’)end输入:A=hilbcrt(10);b=[l;1/2;1/3;1/4;1/5;1/6;1/7;1/8;1/9;1/10];x0=zeros(10,1);N=300;[x,k]=myjacobi(A,b,xO,N)结果为:m=7.7798对任意的初始值雅可比迭代法不收敛雅可比迭代次数已经超过最大迭代次数Nx=1.0e+267*0.74451.74192.43842.
4、96703.38643.72934.01574.25904.46864.6512k=301分析:由8=11^(0)*(04)矩阵的谱半径m=7.7798〉1可知对任意的初始值雅可比迭代法不收敛,且雅可比迭代次数己经超过最大迭代次数N=300。Gauss-Seidel迭代法求解方程组A*x=b的程序如下:%mygauss.mfunction[x,k]=mygauss(A,b,xO,N)9(^Gauss-Seidel迭代法求解线性方程组Ax=b%说明:A为系数矩阵,b为右端向量,xO为初始向量,%N为最大迭代次数,x返回近似解n二length(b);
5、x=zcros(n,1);k=0;%通过判断A是否对称正定来判断Gauss-Seidel迭代法的收敛情况%由题意知A为对称矩阵,故只需判断是否正定dl=A(l,1);fori=2:nd=det(A(l:i,l:i));endif(dl>0)&(max(d)>0)dispC对任意的初始值Gauss-Seidel迭代法收敛’)elsedispC对任意的初始值Gauss-Seidel迪代法不收敛’)end%求解线性方程组的解和迭代次数whilek〈=Nfori=l:nifi==lx(l)=(b(l)-A(l,2:n)*xO(2:n))/A(l,1);e
6、lseifi==nx(n)=(b(n)-A(n,1:n-l)*x(l:n-l))/A(n,n);elsex(i)=(b(i)-A(i,i+l:n)*xO(i+l:n))/A(i,i);endendifnorm(x-xO,inf)〈0.0001,break;end%0.0001为误差精度xO=x;k=k+l;endifk〉NdispCGauss-Seidel迭代次数己经超过最大迭代次数N’)end输入:A=hilbert(10);b=[1;1/2;1/3;1/4;1/5;1/6;1/7;1/8;1/9;1/10];x0=zeros(10,1);N二
7、300;[x,k]=mygauss(A,b,xO,N)结果为:对任意的初始值Gauss-Seidel逃代法收敛x二1000000000k=1分析:由A为对称正定矩阵可知对任意的初始值Gauss-Seidel迭代法收敛,且Gauss-Seidel迭代次数k=l。SOR迭代法求解方程组A*x=b的程序如下:%mysor.mfunction[x,k]=mysor(A,b,w,x0,N)%用501?迭代法求解线性方程组Ax=b%说明:A为系数矩阵,b为右端向量,xO为初始向量,%w为松弛因子,N为最大迭代次数,x返冋近似解n=length(b);x=zc
8、ros(n,1);k=0;%通过判断A是否对称正定来判断SOR迭代法的收敛情况%由题意知A为对称矩阵,故只需判断是否正定dl=A(l,1