高斯

高斯-赛德尔迭代法的代码实现

function x=agui_GS(a,b)
n=length(b);
N=100;
e=10^(-4);
x0=zeros(n,1);
x=x0;
x0=x+2*e;
k=0;
a1=tril(a);
a2=inv(a1);
while norm(x0-x,inf)>e&k<Nk=k+1;x0=x;x=-a2*(a-a1)*x0+a2*b;format longkdisp(x')
end
if k==N warning('已达最大迭代次数');end

 如求以下方程

 

输入代码 

a=[5 2 1;-1 4 2;2 -3 10]
b=[-12;20;3]
x=agui_GS(a,b)

 

得到如下结果  

a =5     2     1-1     4     22    -3    10b =-12203
k =1-2.40000000000000   4.40000000000000   2.10000000000000k =2-4.58000000000000   2.80500000000000   2.05750000000000k =3-3.93350000000000   2.98787500000000   1.98306250000000k =4-3.99176250000000   3.01052812500000   2.00151093750000k =5-4.00451343750000   2.99811617187500   2.00033753906250k =6-3.99931397656250   3.00000273632813   1.99986361621094k =7-3.99997381777344   3.00007473745117   2.00001718479004k =8-4.00003333193848   2.99998307462036   2.00000158877380x =-4.000033331938482.999983074620362.00000158877380