3、由初始解逐步迭代即可得到方程组的解。来计算*曲)的所有分量,显然在计算第i个分量兀时,已经计*胡被利用,对这些最新计算出来的第k+1次近似%曲)的分量巧加以利用,就得到所谓解方程组的Gauss-Seidel迭代法。(4)超松弛迭代法:在Gauss-Saidel迭代法的基础上,对每次迭代是的改变量乘以一个因子w,是收敛速度加快。四、实验步骤(1)高斯列主元消去法:根据实验原理编写matlab程序,首先判断解的个数,再分情况进行列主元消去求解。MatIab程序如下:clcA=input(,A,);b=input('b‘);B=[A
4、b1];n=length(b);RA=rank(A);RB=rank(B);c=RB-RA;ifc>0,dispC方程组无解)returnendifRA=RBifRA==nfprintf('方程组有唯—解;n)X=zcros(n,l);forp=l:n-lt=find(abs(B(p:end,p))==max(abs(B(p:end,p))))+p-l;ifabs(B(t,p))〜=abs(B(p,p))l=B(t,:);B(t,:)=B(p,:);B(p,:)=l;endfork=p+l:nm=B(k,p)/B(p,p);B
5、(k,p:n+1)=B(k,p:n+l)-m*B(p,p:n+1);endendb=B(l:n,n+l);A=B(l:n,l:n);X(n)=b(n)/A(n,n);forq=n-l:-l:lX(q)=(b(q)-sum(A(q,q+l:n)*X(q+l:n)))/A(q,q);endelsedisp(方程组有无穷多解Jreturnendenddisp(X);X(1)Jacobi迭代法:根据实验原理编写matlab程序,调用Jacobiitcrativc函数,首先给定误差限,确定最大迭代次数,确认矩阵A的阶,然后进行迭代过程,
6、最后输出结果。MatIab程序如下:A=[2100-3;-3-4-1213;123-4;4149-13];b=[105-27]*;e=0.000001;%控制误差n=max(size(A));%测定维数fori=l:nifA(i,i)=0'对角元为零,不能求解’returnendendx=zcros(n,l)%设置初始解k=0;%预设迭代次数为0kend=50%最大迭代次数为50r=l;%前后项之差的无穷范数,初始值设为1whilek<=kend&r>e%达到预定精度或迭代超过50次退出计算x0=x;%记下前次近似解fori=
7、l:ns=0;fbrj=l:i-ls=s+A(i,j)*xO(j);endforj=i+l:ns=s+A(i,j)*xO(j);endx(i)=b(i)/A(i,i)-s/A(i,i);endr=norm(x-xO,inf);%重新计算前后项之差的无穷范数k=k+l;endifk>kend'迭代不收敛,失败1else,求解成功,xkend(1)Gauss-Saidel迭代法:根据实验原理编写matlab程序,调用GaussSeideliterative函数,首先给定误差限,确定最大迭代次数,确认矩阵A的阶,然后进行迭代狂程,靈
8、后输出结果。MatIab程序如下:function[x]=Gauss_Seidel_iterative(A,b)x0=zeros(1,length(b));tol=10A(-3);N=10;[n,n]=size(A);k=l;whilek<=Nx(l)=(b(l)-A(l,2