雅可比迭代法,function tx=jacobi(A,b,imax,x0,tol)
del=10^(-10);
tx=[x0];
n=length(x0);
for i=1:n
dg=A(i,i);
if abs(dg)<del
disp;
return
end
end
for k=1:imax
for i=1:n
sm=b(i);
for j=1:n
if j~=i
sm=sm-A(i,j)*x0(j);
end
end
x(i)=sm/A(i,i);
end
tx=[tx,x];
if norm(x-x0)<tol
return
else
x0=x;
end
end
clear all
clc
A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4];
b=[0 5 -2 5 -2 6];
x0=[0 0 0 0 0 0];
imax=100;
tol=10^(-4);
tx=jacobi(A,b,imax,x0,tol);
for j=1:length(tx)
fprintf('%d%f%f%f%f%f%f\n',j,tx(j,1),tx(j,2),tx(j,3),tx(j,4),tx(j,5),tx(j,6));
end
function tx=jacobi(A,b,imax,x0,tol)
del=10^(-10);
tx=[x0];
n=length(x0);
for i=1:n
dg=A(i,i);
if abs(dg)<del
disp;
return
end
end
for k=1:imax
for i=1:n
sm=b(i);
for j=1:n
if j~=i
sm=sm-A(i,j)*x0(j);
end
end
x(i)=sm/A(i,i);
end
tx=[tx,x];
if norm(x-x0)<tol
return
else
x0=x;
end
end
clear all
clc
A=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4];
b=[0 5 -2 5 -2 6];
x0=[0 0 0 0 0 0];
imax=100;
tol=10^(-4);
tx=jacobi(A,b,imax,x0,tol);
for j=1:length(tx)
fprintf('%d%f%f%f%f%f%f\n',j,tx(j,1),tx(j,2),tx(j,3),tx(j,4),tx(j,5),tx(j,6));
end