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