function [xnew,iter,vscarti]=jacobi(A,b,x0,itmax,toll)
%Metodo iterativo di JACOBI [x,iter,vscarti]=jacobi(A,b,x0,itmax,toll)
[n,m] = size(A);
% vettore iniziale x = x_0
xold = x0;
% partizionamento della matrice
D = diag(diag(A));
L = tril(A,-1);
U = triu(A,1);
M = D;
N = -(L +U);
% norme
vscarti= [];
scarto = 1;
iter = 0;
% ciclo iterativo M x_k+1 = N x_k + b; 
while scarto > toll & iter < itmax
    tnoto = N*xold + b;
    xnew = M\tnoto;
    scarto = norm(xnew-xold);
    vscarti = [vscarti;scarto];
    iter = iter + 1;
    xold = xnew;
end
