//Méthode du gradient à pas variable
function [X,n]=gpv(A,B,X0,nmax,tol)

X=X0; R=B-A*X;
for n=0:nmax
  if (norm(R)<=tol), break, end
  AR=A*R; //on va calculer un produit de matrices en moins
  alpha=(R'*R)/(AR'*R);
  X=X+alpha*R;
  R=R-alpha*AR; //on a moins d'opérations qu'avec "R=B-A*X"
end

endfunction