194
6 Valeurs propres et vecteurs propres
% t o l é rance sur l ’ erreur absolue TOL (1e -6 par défaut )
% un nombre maximum d ’ i t é r ations NMAX (100 par défaut )
% en d é m arr ant d ’ un vecteur initial X0 .
% [ LAMBDA ,V , ITER ]= INVSHIFT (A , MU , TOL , NMAX , X0) retourne
% aussi un vecteur propre V tel que A* V= LAMBDA * V et
% l ’ i t é r ation à laquelle V est calculée .
[n , m ]= size ( A );
if n ~= m , error ( ’ Matrices carrées s e u l ement’ ); end
if nargin == 1
x0 = rand (n ,1); nmax = 100; tol = 1.e -06; mu = 0;
elseif nargin == 2
x0 = rand (n ,1); nmax = 100; tol = 1.e -06;
end
[L , U ]= lu(A - mu* eye ( n ));
if norm ( x0) == 0
x0 = rand (n ,1);
end
x0= x0 / norm ( x0 );
z0= L\ x0 ;
pro =U \ z0;
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 );
z= L\ x;
pro =U \z ;
l a m b danew = x ’* pro;
err = abs( l a m bdane w - lambda );
lambda = l a m b danew;
iter = iter + 1;
end
lambda = 1/ lambda + mu ;
return
Exemple 6.4 Appliquons la méthode de la puissance inverse pour calculer la
valeur propre de plus petit module de la matrice A(30) définie dans l’Exemple
6.1. Le Programme 6.2, appelé avec l’instruction :
[ lambda ,x , iter ]= invshift (A (30))
converge en 5 itérations vers la valeur 0.2854.
Exemple 6.5 Pour la matrice A(30) de l’Exemple 6.1, on cherche la valeur
propre la plus proche de 17. On utilise pour cela le Programme 6.2 avec mu=17,
tol =10
−10 et x0=[1;1;1;1]. Après 8 itérations, le programme retourne la valeur lambda=17.82079703055703. Une connaissance moins précise du décalage
aurait entraîné plus d’itérations. Par exemple, si on pose mu=13 on obtient la
valeur 17.82079703064106 après 19 itérations.
On peut modifier la valeur du décalage au cours des itérations, en
posant μ = λ
(k) . Ceci accélère la convergence mais augmente significativement le coût de chaque itération puisque la matrice A μ doit être
refactorisée à chaque modification de μ.
Voir Exercices 6.4–6.6.
Précédent

- 205/374

Suivant