function [x,res]=Richardson(A,b,alpha,x0,tol,maxiter)
% Richardson Résolution de systèmes linéaires par la méthode de Richardson
%   [x,res]=Richardson(A,b,relax,x0,tol,maxiter) résoud Ax=b par la méthode de
%   Richardson avec parametre relax  en utilisant x0 pour choix initial. 
%   L'algorithme s'arrête quand maxiter opérations ont été effectué ou que 
%   la norme 2 du résidu devient plus petite que tol. La variable de sortie 
%   res est un vecteur contenant l'historique des normes des résidus.

if nargin <3 
  error('not enough arguments');
end
if nargin < 6 
  maxiter=500; 
end
if nargin <5
  tol=1e-6;
end
if nargin <4 
   x0=zeros(size(A,1),1);
end

x=x0;

res(1)=norm(b-A*x,inf);

i=1;
while i<=maxiter & res(i)>tol
  x=(eye(size(A))-alpha*A)*x+alpha*b;
  res(i+1)=norm(b-A*x,inf);
  i=i+1;
end

