function [x,nit,er,res]=jacobi(A,b,toll,nmax)
  x=zeros(size(b));
  nit=0;
  er='';
  res=norm(b-A*x);
  E=tril(A,-1);
  F=triu(A,1);
  d=diag(A);
  if min(abs(d))==0
    er='La diagonale di A ha un elemento uguale a zero';
    return
  end
  C=norm(b);
  tollC=C*toll;
  while nit < nmax & res > tollC
    nit=nit+1;
    x=(b-E*x-F*x)./d;
    res=norm(b-A*x);
  end
  if res > tollC | isnan(res)
    er='Test di arresto non soddisfato';
  end
