# Algorithme d'Arnoldi

En algèbre linéaire numérique, l’algorithme d'Arnoldi (ou méthode d'Arnoldi) est un algorithme de recherche de valeurs propres prenant la forme d'une méthode itérative. Elle permet de construire une approximation des valeurs propres et des vecteurs propres de matrices carrées (éventuellement non hermitiennes) en construisant une base orthonormée de leur sous-espace de Krylov, ce qui la rend particulièrement utile lorsqu'il s'agit de grandes matrices creuses ou encore d'opérateurs linéaires peu coûteux à évaluer pour toute autre raison.
La méthode d'Arnoldi appartient à une classe d'algorithmes d'algèbre linéaire qui donnent un résultat dit « partiel », après un petit nombre d'itérations, en contraste des méthodes dites « directes » qui doivent être complétées exhaustivement pour donner des résultats utiles (voir par exemple la transformation de Householder). Le résultat partiel dans ce cas donne les premiers vecteurs de la base que l’algorithme construit.
Lorsqu'elle est appliquée aux matrices hermitiennes (ou symétriques), cette méthode est adaptée via l'algorithme de Lanczos. Elle a été inventée par W. E. Arnoldi en 1951.

## Sous-espaces de Krylov et puissances itérées

Une méthode intuitive pour trouver la plus grande valeur propre (en valeur absolue) d'une matrice m × m donnée $A$ est la méthode de la puissance itérée : en commençant par un vecteur initial arbitraire b, calculer les puissances successives $\{Ab,A^{2}b,A^{3}b,...\}$ et normaliser le résultat après chaque application de la matrice $A$ .
Cette suite converge vers le vecteur propre correspondant à la valeur propre de plus grande valeur absolue, souvent notée $\lambda _{1}$. Cependant, une grande partie des calculs potentiellement utiles sont d'une manière perdus en n'utilisant que le résultat final, $A^{n-1}b$. Ce constat pousse donc à construire à la place ce que l'on appelle la matrice de Krylov :
    $K_{n}={\begin{bmatrix}b&Ab&A^{2}b&\cdots &A^{n-1}b\end{bmatrix}}.$
Les colonnes de cette matrice ne sont en général pas orthogonales, mais on peut en extraire une base orthogonale, via une méthode telle que l'algorithme de Gram-Schmidt. L'ensemble de vecteurs résultant est donc une base orthogonale du sous-espace de Krylov, ${\mathcal {K}}_{n}$ .

## La méthode d'Arnoldi

Les itérations de la méthode d'Arnoldi utilisent l'algorithme de Gram-Schmidt pour produire une séquence de vecteurs orthonormés, $q_{1},q_{2},q_{3},\cdots$, appelés vecteurs d'Arnoldi, tels que pour tout $n$, les vecteurs $q_{1},\cdots ,q_{n}$ forment une base du sous-espace de Krylov ${\mathcal {K}}_{n}$. L'algorithme qui en découle est le suivant :
Algorithme d'Arnoldi :
* Entrée = La matrice A de taille m×m Sortie = La matrice H, et une matrice Q contenant la base du sous-espace
* Initialiser un vecteur arbitraire q1 de norme 1, et une matrice vide H de taille (n+1)×n Répéter pour k = 2, 3, ...     qk := A qk−1     Répéter pour j de 1 à k − 1         hj, k−1 := qj • qk         qk ← qk − hj, k−1 qj     hk, k−1 := ‖qk‖     qk ← qk / hk, k−1
La boucle interne de ce pseudo-code projette les coordonnées de $q_{k}$ perpendiculairement à l'unique hyperplan porté par $q_{1},\dots ,q_{k-1}$dans $\mathbb {R} ^{k}$. Cela garantit l’orthogonalité de tous les vecteurs générés successivement.
L'algorithme parvient à son terme si à une itération donnée $q_{k}$ est le vecteur nul. Cela se produit lorsque le polynôme minimal de $A$ est de degré $k$. Dans la plupart des applications de la méthode d'Arnoldi, y compris l'algorithme des valeurs propres ci-dessus et d'autres applications comme GMRES, l'algorithme a convergé à ce stade, c'est-à-dire que $\mathrm {Im} (A)={\mbox{ Vect}}(q_{1},\dots ,q_{n})$.
Chaque itération de la boucle principale demande un produit matrice-vecteur et environ $4mk$ opérations en virgule flottante.

## Propriétés de la méthode d'Arnoldi

Soit $Q_{n}$ la matrice de taille $m$ par $n$ formée par les $n$ premiers vecteurs d'Arnoldi $q_{1},\cdots ,q_{n}$, et soit $H_{n}$ la matrice de Hessenberg supérieure formée par les nombres $h_{j,k}$ calculés par l'algorithme :
    $H_{n}=Q_{n}^{*}AQ_{n}.$
La méthode d'orthogonalisation doit être spécifiquement choisie de telle sorte que les composantes précédentes de la base de Krylov en cours de composition soient supprimées des nouveaux vecteurs Krylov ajoutés. Comme $Aq_{i}$ peut être exprimé comme une combinaison de $q_{1},\cdots ,q_{i+1}$ par construction, il est orthogonal à $q_{i+2},\cdots ,q_{n}$.
On a alors
    $H_{n}={\begin{bmatrix}h_{1,1}&h_{1,2}&h_{1,3}&\cdots &h_{1,n}\\h_{2,1}&h_{2,2}&h_{2,3}&\cdots &h_{2,n}\\0&h_{3,2}&h_{3,3}&\cdots &h_{3,n}\\\vdots &\ddots &\ddots &\ddots &\vdots \\0&\cdots &0&h_{n,n-1}&h_{n,n}\end{bmatrix}}.$
La matrice $H_{n}$ peut être considérée comme le changement de base de $A$ dans le sous-espace ${\mathcal {K}}_{n}$ avec les vecteurs d'Arnoldi comme base orthogonale : $A$ est projetée orthogonalement sur ${\mathcal {K}}_{n}$ . La matrice $H_{n}$ peut être caractérisée par la condition d'optimalité suivante. Le polynôme caractéristique de $H_{n}$ minimise ‖p(A)q$_1$‖{\textstyle \|p(A)q_{1}\|} parmi tous les polynômes unitaires $p$ de degré $n$. Ce problème d’optimalité a une solution unique si et seulement si l’algorithme arrive à son terme après $m$ itérations.
L'extension de la base à l'itération $k$ contenue dans la matrice $Q_{k}$ est caractérisée par la relation de récurrence :
    $AQ_{n}=Q_{n+1}{\tilde {H}}_{n}$
telle que
    ${\tilde {H}}_{n}={\begin{bmatrix}h_{1,1}&h_{1,2}&h_{1,3}&\cdots &h_{1,n}\\h_{2,1}&h_{2,2}&h_{2,3}&\cdots &h_{2,n}\\0&h_{3,2}&h_{3,3}&\cdots &h_{3,n}\\\vdots &\ddots &\ddots &\ddots &\vdots \\\vdots &&0&h_{n,n-1}&h_{n,n}\\0&\cdots &\cdots &0&h_{n+1,n}\end{bmatrix}}$
soit une matrice de dimensions $(n+1)\times n$ formée en ajoutant une ligne supplémentaire à $H_{n}$.

## Trouver des valeurs propres avec la méthode d'Arnoldi

L'idée de la méthode d'Arnoldi en tant qu'algorithme de recherche de valeurs propres est de calculer les valeurs propres de $A$ dans son sous-espace de Krylov. Les valeurs propres de $H_{n}$ sont appelées valeurs propres de Ritz. Puisque $H_{n}$ est une matrice de Hessenberg de taille modeste, ses valeurs propres peuvent être calculées efficacement, par exemple avec l'algorithme QR qui réalise des décompositions QR successives, ou une méthode similaire l'algorithme de Francis. Ce dernier lui-même peut également être considéré comme étant lié aux itérations de puissance, opérant sur des sous-espace de Krylov imbriqués. En fait, la forme la plus élémentaire de l'algorithme de Francis semble être de choisir $b$ égal à $Ae_{1}$ et d'étendre $n$ à la pleine dimension des colonnes de $A$.
Un fait notable est qu'il s'agit aussi d'un exemple de la méthode de Rayleigh-Ritz.
On observe souvent en pratique que certaines valeurs propres de Ritz convergent vers les valeurs propres de $A$. Puisque $H_{n}$ est de dimension $n\times n$, elle a au plus n valeurs propres, et toutes les valeurs propres de $A$ ne peuvent pas être approchées avec certitude par ses valeurs propres de Ritz. Généralement, ces dernières convergent vers les plus grandes valeurs propres de $A$. Pour obtenir les plus petites valeurs propres de $A$, l’inverse (opération) de $A$ doit être utilisé à la place. Cela peut être lié à la construction de $H_{n}$ comme la matrice dont le polynôme caractéristique minimise ‖p(A)q$_1$‖{\textstyle \|p(A)q_{1}\|}. Un bon moyen d'obtenir des polynômes $p(A)$ bornés est de choisir le polynôme $p$ tel que $p(x)$ soit « petit » chaque fois que $x$ est une valeur propre de $A$. Par conséquent, les zéros de $p$ (et donc les valeurs propres de Ritz) seront proches des valeurs propres de $A$.
Cependant, les détails ne sont pas encore établis par la littérature, tandis que si $A$ est hermitienne, la méthode d'Arnoldi peut être reformulé comme l'algorithme de Lanczos pour laquelle la théorie est plus complète.

## Méthode d'Arnoldi redémarrée implicitement (IRAM)

Pour des raisons informatiques de stockage, les implémentations courantes des méthodes d'Arnoldi « redémarrent », généralement, après un certain nombre d'itérations. Une innovation majeure en la matière est due à Lehoucq et Sorensen qui ont proposé la méthode d'Arnoldi implicitement redémarrée. Ils ont également implémenté l'algorithme dans une bibliothèque logicielle disponible gratuitement appelé ARPACK (elle est utilisée dans de nombreux langages comme Python via SciPy, Julia, ou encore Matlab). Cela a donné lieu à un certain nombre d’autres variantes, notamment la méthode de Lanczos implicitement redémarrée$^,$$^,$. Cela a également influencé la manière dont les autres méthodes redémarrées sont analysées. Les résultats théoriques ont montré de meilleurs résultats de convergence avec une augmentation de la dimension $n$ du sous-espace de Krylov. Cependant, aucune valeur a priori de $n$ qui conduirait à une convergence optimale n’est connue. Récemment, une stratégie de « commutation dynamique » a été proposée : elle fait varier la dimension $n$ avant chaque redémarrage et conduit ainsi à une amélioration du taux de convergence.

## Voir également

GMRES est une méthode de résolution de systèmes linéaires d'équations ($Ax=b$) reposant sur la méthode d'Arnoldi pour construire un espace dans lequel on minimise les résidus $\|Ax-b\|$.