30/11/09 19:23
ingMark
L'altr'anno ne ho implementata una versione matlab durante il corso di calcolo numerico.
%es11
function [x,r] = jacobi(A,b,itermax);
N = length(b);
D = diag(diag(A));
x= zeros(N,1);
%facoltativo per verificare la teoria
%si calcola il raggio spettrale della matrice
%se il raggio spettrale è minore di uno il metodo converge
I = eye(N);
D1 = inv(D);
Bj = I - D1*A; %matrice di interazione di jacobi
r = max(abs(eig(Bj))); %raggio spettrale
%////////////////////////////////////////
for i=1:itermax
x = D1*((D-A)*x+b);
%x = D\((D-A)*x+b); da usare se non si calcola il raggio spettrale
end;
Tradurlo in C non dovrebbe essere molto difficile, a patto di avere qualche nozione di algebra lineare (wikipedia ti può sicuramente aiutare)
aaa