function [x,norma_r,k]=jacobi(A,b,x,tol,k_max)
//
[sol,norma_r,k]=jacobi(A,b,x,tol,k_max)
// Calcula a solução para o sistema Ax=b usando o método de Jacobi.
// A solução é aceita sujeita a um resíduo menor do que "tol"
desde que
// não exceda a "k_max" iterações.
// (C) Rudnei Dias da Cunha 2008
mode(0)
[n,m]=size(A);
D=diag(diag(A));
Q=inv(D);
for k=1:k_max
// r=b-A*x
r = b-A*x;
norma_r=norm(r,'fro');
mprintf('k=%g norma_r=%g\n',k,norma_r);
if (norma_r<tol) break; end;
// x=x-Q*A*x+Q*b
x = x+Q*r;
end
endfunction
Nenhum comentário:
Postar um comentário