6.5 Calcul de toutes les valeurs propres
199
lim
k→+∞
A
(k) = T =
⎡
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎣
λ 1 t 12 . . . t 1n
0
. . .
. . .
. . .
. . .
λ n−1 t n−1,n
0 . . . 0
λ n
⎤
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦
.
(6.8)
La vitesse de décroissance vers zéro des coefficients triangulaires inférieurs, a
(k)
i,j , i > j, quand k tend vers l’infini, dépend de max i |λ i+1 /λ i |.
En pratique, on stoppe les itérations quand max i>j |a
(k)
i,j | ≤ , où > 0
est une tolérance fixée.
Si de plus A est symétrique, la suite {A
(k)
} converge vers une matrice
diagonale.
Le Programme 6.4 implémente la méthode QR. Les paramètres d’entrée sont la matrice A, la tolérance tol et le nombre maximum d’itérations nmax.
Programme 6.4. qrbasic : méthode des itérations QR
function D= qrbasic (A , tol , nmax )
% QRBASIC calcule les valeurs propres de la matrice A .
% D= QRBASIC (A , TOL , NMAX ) calcule par i t é r ati ons QR
% toutes les valeurs propres de A avec une t o l é rance
% TOL en NMAX i t é rat ions au maximum . La c o n v er gence
% de cette méthode n ’ est pas toujours garantie .
[n , m ]= size ( A );
if n ~= m , error ( ’ Matrices carrées s e u l ement’ ); end
T = A ; niter = 0; test = norm ( tril (A , -1) , inf );
while niter <= nmax & test >= tol
[Q , R ]= qr( T );
T = R* Q;
niter = niter + 1;
test = norm ( tril (T , -1) , inf );
end
if niter > nmax
warning ([ ’La méthode ne converge pas dans le ’
’ nombre d ’ ’ i t é r ati ons maximum voulu \ n ’ ]);
else
fprintf ([ ’La methode converge en ’ ...
’% i i t é rat ions\ n ’] , niter );
end
D = diag ( T );
return
Exemple 6.8 Considérons la matrice A(30) de l’Exemple 6.1 et appelons le
Programme 6.4 pour calculer ses valeurs propres :
D = qrbasic (A (30) ,1.e -14 ,100)
La méthode converge en 56 itérations
D =
39.3960
199
lim
k→+∞
A
(k) = T =
⎡
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎣
λ 1 t 12 . . . t 1n
0
. . .
. . .
. . .
. . .
λ n−1 t n−1,n
0 . . . 0
λ n
⎤
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦
.
(6.8)
La vitesse de décroissance vers zéro des coefficients triangulaires inférieurs, a
(k)
i,j , i > j, quand k tend vers l’infini, dépend de max i |λ i+1 /λ i |.
En pratique, on stoppe les itérations quand max i>j |a
(k)
i,j | ≤ , où > 0
est une tolérance fixée.
Si de plus A est symétrique, la suite {A
(k)
} converge vers une matrice
diagonale.
Le Programme 6.4 implémente la méthode QR. Les paramètres d’entrée sont la matrice A, la tolérance tol et le nombre maximum d’itérations nmax.
Programme 6.4. qrbasic : méthode des itérations QR
function D= qrbasic (A , tol , nmax )
% QRBASIC calcule les valeurs propres de la matrice A .
% D= QRBASIC (A , TOL , NMAX ) calcule par i t é r ati ons QR
% toutes les valeurs propres de A avec une t o l é rance
% TOL en NMAX i t é rat ions au maximum . La c o n v er gence
% de cette méthode n ’ est pas toujours garantie .
[n , m ]= size ( A );
if n ~= m , error ( ’ Matrices carrées s e u l ement’ ); end
T = A ; niter = 0; test = norm ( tril (A , -1) , inf );
while niter <= nmax & test >= tol
[Q , R ]= qr( T );
T = R* Q;
niter = niter + 1;
test = norm ( tril (T , -1) , inf );
end
if niter > nmax
warning ([ ’La méthode ne converge pas dans le ’
’ nombre d ’ ’ i t é r ati ons maximum voulu \ n ’ ]);
else
fprintf ([ ’La methode converge en ’ ...
’% i i t é rat ions\ n ’] , niter );
end
D = diag ( T );
return
Exemple 6.8 Considérons la matrice A(30) de l’Exemple 6.1 et appelons le
Programme 6.4 pour calculer ses valeurs propres :
D = qrbasic (A (30) ,1.e -14 ,100)
La méthode converge en 56 itérations
D =
39.3960
