La méthode de Gram–Schmidt–Arnoldi

Transcription

La méthode de Gram–Schmidt–Arnoldi
La méthode de Gram–Schmidt–Arnoldi
Daniele A. Di Pietro
11 avril 2013
Soit A ∈ Rn,n et v ∈ Rn non nul. L’algorithme de Gram–Schmidt–Arnoldi (GSA) permet
de trouver une base orthonormée pour l’espace de Krylov
K k (A, v ) := {v, Av, . . . , A k −1 v }.
Il est utile de rappeler qu’il existe un indice k 0 à partir duquel l’inclusion K k −1 (A, v ) ⊂ K k (A, v )
devient une égalité, à savoir
(
dim(K k (A, v )) = k si 0 ≤ k ≤ k 0 ,
dim(K k (A, v )) = k 0
si k ≥ k 0 .
L’algorithme GSA consiste à poser v 1 := v /kv k2 puis à calculer pour k = 1, . . .
h i k = v iT Av k
w k = Av k −
∀1 ≤ i ≤ k
k
X
h i k vi ,
h k +1,k = kw k2 .
(1)
i =1
Si w k = 0 l’algorithme s’arrête et k = k 0 , sinon on pose v k +1 = w k /kw k k2 , on incrémente
k d’une unité, et on reprend. Les vecteurs v 1 , . . . , v k 0 ainsi obtenus forment une base pour
l’espace de Krylov K k 0 (A, v ).
En pratique, on peut arrêter l’algorithme à toute itération 1 ≤ m ≤ k 0 , ce qui permet de
déterminer une base pour l’espace K m (A, v ). La mémorisation de la base demande alors de
stocker une matrice de Hessenberg supérieure H ∈ Rm +1,m contenant les coefficients h i j .
Soit Vm ∈ Rn ,m la matrice dont les colonnes sont les vecteurs v (k ) , 1 ≤ k ≤ m , engendrés par
l’algorithme GSA. On peut prouver que
VmT+1 AVm = H m .
(2)
1) On considère la procédure suivante pour le calcul de la base de K m (A, v ) : pour n, m entiers
donnés et v avec size(v) = (n,1) et norm(v) != 0,
H = zeros ( m +1 , m );
V = zeros (n ,m +1);
%% Premier vecteur de la base de Krylov
V (: ,1) = v / norm (v ,2);
%% Génération de la base de Krylov
for k = 1: m
[l , V , H] = GramSchmidtArnoldi (A , m , k , V , H );
1
if ( l != k +1)
warning (" Dimension maximale de l ' espace de Krylov atteinte " );
end
end
avec
function [l , V , H ] = GramSchmidtArnoldi (A , m , k , V , H , epsilon = 1. e -16)
% Entrées
% A : matrice
% m : dimension maximale de l ' espace de Krylov
% k : dimension courante de l ' espace de Krylov
% V : V_ { k +1}
% H : H_k
% epsilon : zéro numérique
% Sorties
% k : nouvelle dimension de la base de Krylov
% V : V_ { k +1}
% H : H_kx
La fonction GramSchmidtArnoldi a pour but de réaliser l’itération (1) à partir des matrices Vk +1 et H k . L’entier k correspond à la dimension courante de l’espace de Krylov et,
plus précisément,
(a) si k > m , la dimension souhaitée de l’espace de Krylov a été atteinte, et on sort de
la fonction ;
(b) si k ≤ m , on effectue une itération (1). Deux cas sont possibles : (i) soit w (k ) 6= 0, et
alors on ajoute le vecteur normalisé à la base en posant V:k +1 = w (k ) /kw (k ) k2 puis on
met à jour la dimension courante l ← k + 1. La nouvelle matrice Vl aura alors une
colonne non nulle en plus par rapport à Vk ; (ii) soit w (k ) = 0, ce qui indique que
k ≥ k 0 et la suite K k (A, v ) est devenue stationnaire. Dans ce cas on n’ajoute aucun
vecteur à la base et l ← k . Le fait que l = k à la sortie de la fonction est utilisé pour
arrêter l’itération sur k .
Mettre en œuvre la fonction GramSchmidtArnoldi en suivant les indications données.
2) A l’aide de la procédure développée au point précédent, calculer une base orthonormée
pour l’espace de Krylov K m (A, v ) avec m = 3 et
 


5 7 6 5 7
1


 
10
8
7
6
8
1


 


A = 10 9 5 7 9 ,
v = 1 .


 
1
10 5 7 6 5
1
7 10 8 7 6
Vérifier numériquement la condition (2).
3) Déterminer la dimension maximale k 0 de l’espace de Krylov K k (A, v ) avec
A := tridiag4 (−1, 2, −1)
2
€
ŠT
v= 1 1 1 1