解线性方程组之Jacobi迭代,Gauss-Seidel迭代类似
% Jacobi方法和Gauss-Seidel方法
clear all
A = [8,-1,1;2,10,-1; 1 1 -5];
b = [1;4;3]; n = length(b);
itermax = 100; iter = 0; tol = 1e-4;
x = zeros(n,1);
while iter<itermax
iter = iter + 1;
for i = 1: n
xnew(i,1) = (b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x(i+1:n))/A(i,i);
% xnew(i,1) = (b(i)-A(i,:)*x+A(i,i)*x(i))/A(i,i);
end
if norm(x - xnew)<tol
break
else
x = xnew;
end
end
iter
x