function [x,iter]=jacobi(A,b,itermax,toll,x_0)
if prod(diag(A))==0
    error('A ha un elemento diagonale nullo')
    return
end
D=diag(diag(A));
C=A-D;
D_1=inv(D);
B_j=-D_1*C;
rho_j=max(abs(eig(B_j)));
disp(sprintf('Raggio spettrale=%.15e\n',rho_j))
if rho_j>1
    error('Raggio spettrale maggiore di 1')
    return
end
for iter=1:itermax
    x=D_1*(b-C*x_0);
    err=norm(x-x_0,inf);
    if err<=toll*norm(x,inf)
        break
    end
    x_0=x;
end