function [x,flag,it] = itera(A,b,x,itmax,tolr,s) % % Uso: [x,flag,it] = jacobi(A,b,x,itmax,tolr,s) % % Input: % A (matrice dei coefficienti) % b (vettore dei termini noti) % x (stima iniziale) % itmax (numero massimo di iterazioni) % tolr (tolleranza per il criterio % d'arresto) % s (scelta del metodo: 'j' per jacobi, % 'g' per Gauss-Seidel % % Output: % x (soluzione) % flag (variabile di controllo: vale 1 se si % e' soddisfatto il criterio d'arresto, % vale 0 altrimenti) % it (numero di iterazioni effettuate) % if s=='j' M = diag(diag(A)); elseif s=='g' M = tril(A); else disp('Metodo iterativo non specificato s=[''j'',''g'']'); return end %if N = A-M; tolr_nb = tolr*norm(b); flag = 0; for it=1:itmax r = b-A*x; err = norm(r); if err <= tolr_nb % verifica del criterio d'arresto flag = 1; return end %if x = M\(b-N*x); %calcolo nuova iterata end %for