算法步骤
例题
程序代码
function x=GaussSeidel(A,b,x0,eps,N)
n=length(b);
if nargin<5
N=500;
end
if nargin<4
eps=1e-6;
end
if nargin<3
x0=zeros(n,1);
end
k=0;
x=zeros(n,1);
while k<N
x(1)=(b(1)-A(1,2:n)*x0(2:n))/A(1,1);
for i=2:n-1
x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i);
end
x(n)=(b(n)-A(n,1:n-1)*x(1:n-1))/A(n,n);
if norm(x-x0,inf)<eps
break;
end
x0=x;k=k+1;
end
if k==N
warning('已达到迭代次数上限');
end
fprintf('k= %d',k)
end