function [x,errs,iter]=gauss_seidel(A,x0,b,max_iter,tol) M = diag(diag(A))+tril(A,-1); if det(M) == 0 error('Metodo di Gauss-Seidel non applicabile'); end N = -triu(A,1); for iter=1:max_iter if iter ==1 x_old = x0; else x_old = x(:,iter-1); end x(:,iter) = M\(N*x_old+b); % nuova iterazione errs(iter) = norm(x-x_old)/norm(x); % stima errore relativo if (errs(iter) <= tol) return end end end