function x=jacobi(A,b)
n=length(b);
N=100;
e=1e-5;
x0=zeros(n,1);
x=x0;
x0=x+2*e;
k=0;
D=diag(diag(A));
L=zeros(n,n); %定义L为n乘n的矩阵
U=zeros(n,n); %定义U为n乘n的矩阵
M=zeros(n,n); %定义M为n乘n的矩阵
for i=1:n %求d的逆
for j=1:n
M=1/d(i,j);
end
end
for i=2:n %求L,下三角矩阵
for j=1:i-1
L(i,j)=-A(i,j);
end
end
for i=1:n-1 %求U,下三角矩阵
for j=i+1:n
U(i,j)=-A(i,j);
end
end
while max(abs(x0-x))>e&k x=M*(L+U)*x+M*b; k=k+1; k disp(x') end if k==N WARNING('已达到最大迭代'); end A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 0 0 -1;-1 0 0 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4];b=[0;5;0;6;-2;6]x=agui_jacobi(A,b) Gauss_Seidel迭代法的Matlab程序 function x=agui_gs(A,b) n=length(b); N=100; e=1e-5; x0=zeros(n,1); x=x0; x0=x+2*e; k=0; D=diag(diag(a)); L=zeros(n,n); %定义L为n乘n的矩阵 U=zeros(n,n); %定义U为n乘n的矩阵 for i=2:n %求L,下三角矩阵 for j=1:i-1 L(i,j)=-A(i,j); end end for i=1:n-1 %求U,下三角矩阵 for j=i+1:n U(i,j)=-A(i,j); end end while max(abs(x0-x))>e&k x=(D-L)\D-L)\\b; k=k+1; k disp(x') end if k==N WARNING('已达到最大迭代'); end SOR算法: function[x,k]=SOR(A,b,w)%k为迭代次数,w为松弛因子 ep=1e-5; n=length(A); k=0; x=zeros(n,1); y=zeros(n,1); while 1 y=x; for i=1:n z=b(i); for j=1:n if j~=i z=z-A(i,j)*x(j); end end z=z/A(i,i); x(i)=(1-w)*x(i)+w*z; end if max(abs(y-x)) end k=k+1; end