function [sol,iter]=Jacobi(A,b,x0,tol,kmax)
% ----------------------------------------------
% Funzione che implementa il metodo iterativo
% di Jacobi
%-----------------------------------------------
% Inputs
% A, b: matrice e termine noto, rispettivamente
% x0  : guess iniziale
% tol : tolleranza calcoli
% 
% Outputs
% sol : vettore soluzione
% iter: numero delle iterazioni
%-----------------------------------------------

D=diag(diag(A));
DI=inv(D);
J=-DI*(A-D);
b1=DI*b';
x1=J*x0+b1;
k=1;

while(abs(x1-x0)>tol*abs(x1) & k<=kmax)
    x0=x1;
    x1=J*x0+b1;
    k=k+1;
end

sol=x1;
iter=k-1;
