Algorithme de la Méthode de Puissance pour le calcul des Valeurs Propres d'une Matrice en Matlab :
function [lambda ,x,iter]=eigpower (A,tol ,nmax,x0) %EIGPOWER Evalue numériquement une valeur propre % d’une matrice % LAMBDA=EIGPOWER (A) calcule avec la méthode de la % puissance la valeur propre de A de module maximal % à partir d’une donnée initial qui par défaut est % le vecteur constitué de 1 % LAMBDA=EIGPOWER (A,TOL ,NMAX,X0) utilise la tolérance % TOL pour l’erreur absolue (1.e-6 par défaut), un % nombre maximal d’itérations NMAX (100 par défaut), % et démarre d’un vecteur initial X0. % [LAMBDA,V,ITER]=EIGPOWER (A,TOL ,NMAX,X0) retourne % aussi le vecteur propre V tel que A*V=LAMBDA*V et le % numéro de l’itération à laquelle V a été calculé . [n,m] = size(A); if n ~= m, error(’Matrices carrées seulement’); end if nargin == 1 tol = 1.e -06; x0 = ones(n,1); nmax = 100; end x0 = x0/norm(x0); pro = A*x0; lambda = x0 ’*pro; err = tol*abs(lambda) + 1; iter = 0; while err >tol*abs(lambda) & abs(lambda )~=0 & iter<=nmax x = pro; x = x/norm(x); pro = A*x; lambdanew = x’*pro; err = abs( lambdanew - lambda); lambda = lambdanew; iter = iter + 1; end return |
Aucun commentaire:
Enregistrer un commentaire