function [r,Niter]=rayonspectral1(A,X,epsilon,k); 

% [r,Niter] = rayonspectral1 (A,X,epsilon,k); 
%Calcule de manière approchée le rayon spectral d'une matrice 
%réelle ou complexe A de taille (N,N). L'algorithme est initié 
%au vecteur X (de taille (N,1). Le nombre d'itérations 
%autorisées est k. La sortie Niter correspond au nombre d'itérations nécessaires 
%pour que abs(r(k+1)-r(k) finisse par devenir inférieur ou égal au seuil epsilon. 

x=X;
r=1; 
err=2*epsilon; 
Niter=0; 
while (err>epsilon) && (Niter<k) 
    rold=r; 
    y=A*x;
    r=norm(y);
    x=y/r; 
    err=abs(r-rold); 
    Niter=Niter+1; 
end 