# Algorithme de Lanczos

En algèbre linéaire, l’algorithme de Lanczos (ou méthode de Lanczos) est un algorithme itératif pour déterminer les valeurs et vecteurs propres d'une matrice carrée, ou la décomposition en valeurs singulières d'une matrice rectangulaire.
Cet algorithme n'a pas de lien avec le fenêtrage de Lanczos (utilisé par exemple pour le redimensionnement d'images), si ce n'est que tous les deux tirent leur nom du même inventeur, le physicien et mathématicien hongrois Cornelius Lanczos.

## Description de l'algorithme
### Méthode de la puissance itérée

La méthode de la puissance itérée pour trouver la plus grande valeur propre d'une matrice carrée symétrique $A\,$ d'ordre p est la suivante.
Si $x_{0}$ est un vecteur et $x_{n+1}=Ax_{n}$, alors $x_{n}=A^{n}x_{0}$.
On sait qu'une matrice symétrique est diagonalisable$^,$, et les termes $\sigma _{i},i=1,\ldots ,p$ de la matrice diagonale sont les valeurs propres de la matrice. Soit donc
$A=U\cdot {\begin{pmatrix}\sigma _{1}&&&&&0\\&\ddots &&&&\\&&\sigma _{i}&&&\\&&&\ddots &&\\&&\vdots &&\ddots &\\0&&&&&\sigma _{p}\\\end{pmatrix}}\cdot U'=U\cdot \operatorname {diag} (\sigma _{i})\cdot U'$
la décomposition en valeurs propres de $A$, où U est une matrice orthogonale ; alors
$A^{n}=U\operatorname {diag} (\sigma _{i}^{n})U'$
Pour des valeurs de $n\,$ très grandes, la matrice diagonale des valeurs propres sera dominée par la plus grande d'entre elles — à l'exception du cas où il y a deux plus grandes valeurs égales : en effet, soit $\sigma _{\max }$ la valeur propre de plus grand module.
$\lim _{n\rightarrow \infty }A^{n}=\lim _{n\rightarrow \infty }|\sigma _{\max }|^{n}\cdot U\operatorname {diag} \left({\frac {\sigma _{i}^{n}}{|\sigma _{\max }|^{n}}}\right)U'=U\operatorname {diag} \left(0...0,\left({\frac {\sigma _{\max }}{|\sigma _{\max }|}}\right)^{n},0...0\right)U'$
Alors, $|x_{n+1}|/|x_{n}|$ converge vers la plus grande valeur propre et $x_{n}/|x_{n}|$ au vecteur propre correspondant.
Dans le cas où il y a plusieurs valeurs propres maximales, $x_{n}$ converge vers un vecteur dans le sous-espace engendré par les vecteurs propres associés à ces valeurs. Après avoir déterminé le premier, on peut successivement restreindre l'algorithme au noyau des vecteurs propres connus pour déterminer les autres.
En pratique, cet algorithme possède deux inconvénients : une vulnérabilité aux erreurs d'arrondi, et une vitesse de convergence parfois trop faible.

### Algorithme de Lanczos

L'algorithme de Lanczos améliore la méthode précédente, dans laquelle chaque $u\,$ est restreint à l'orthogonal de toutes les valeurs précédentes. Lors de la construction de ces vecteurs, les constantes de normalisation sont regroupées dans une matrice tridiagonale dont les valeurs propres les plus significatives convergent, rapidement, vers les valeurs propres de la matrice de départ.
La multiplication par $A$ est alors la seule opération de grande ampleur, ce qui fait l'intérêt de la méthode.

## Applications, variantes et généralisations

L'algorithme de Lanczos est particulièrement pratique pour déterminer la décomposition de très grandes matrices, en météorologie ou en traitement des langues naturelles, où ces matrices peuvent compter des centaines de milliers de termes.
Il se généralise en l'algorithme d'Arnoldi pour les matrices non symétriques.
Une variante de cet algorithme est utilisée pour la résolution de systèmes linéaires (en particulier pour les systèmes linéaires creux) et la recherche d'éléments du noyau d'une matrice. Sous cette forme, il est fréquemment utilisé dans le cadre d'algorithmes comme le crible quadratique ou le crible algébrique pour la factorisation d'entiers ou la méthode de l'index pour le problème du logarithme discret. Il est apparenté à la méthode du gradient conjugué.