Utilisateur:CetaGM/Brouillon2

Une page de Wikipédia, l'encyclopédie libre.

En algèbre linéaire, l’algorithme de Lanczos (ou méthode de Lanczos) est un algorithme itératif de tridiagonalisation d'une matrice symétrique. Il est très efficace dans le cas de matrices creuses. Il est principalement utilisé pour déterminer les valeurs et vecteurs propres d'une matrice hermitienne. Par extension, il est aussi très utilisé pour 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[modifier | modifier le code]

Principe général[modifier | modifier le code]

L'algorithme de Lanczos prend en entrée une matrice symétrique et un vecteur initial . Il réalise une tridiagonalisation de [1] de sorte que

est une matrice orthogonale et est une matrice tridiagonale symétrique :

et

Pour tout valeur propre de et vecteur propre associé, est aussi valeur propre de et est vecteur propre associé.

De plus, si on prend la tridiagonalisation partielle :

et

alors les valeurs propres extrémales (les plus grandes et les plus petites) des convergent très vite vers les valeurs propres extrémales de et si est le vecteur propre associé à l'une de ces valeurs propre de , alors converge vers le vecteur propre de associé à la même valeur propre.

Exécution de l'algorithme[modifier | modifier le code]

En transformant en , on voit que

(Il faut considérer que et sont égaux au vecteur nul, pour gérer les cas aux bords).

Sachant que les sont orthogonaux entre eux et de norme 1 (car est une matrice orthogonale), alors

L'algorithme est alors :

Entrées :  la matrice à tridiagonaliser,  le vecteur initial,  le nombre d'itérations maximum souhaité

, , 
Tant que  et  :
    
    
    
    
    

Si on recherche les valeurs et vecteurs propres, il est alors possible d'utiliser un algorithme de décomposition en valeurs propres adapté aux matrices tridiagonales symétriques, par exemple l'algorithme diviser-pour-régner (en), pour trouver la décomposition de et en déduire les valeurs et vecteurs propres extrémaux de

Théorie[modifier | modifier le code]

Les vecteurs qui composent la matrice forment une base orthonormale du sous-espace de Krylov d'ordre k associé à et .

Convergence vers les valeurs propres[modifier | modifier le code]

À toute étape , la plus grande valeur propre de est égale au maximum du quotient de Rayleigh de sur le sous-espace de Krylov d'ordre , et elle est donc plus petite que la plus grande valeur propre de . De plus, la plus grande valeur propre est croissante d'une étape sur l'autre. Le même raisonnement peut être fait pour la plus petite valeur propre.

Nommons les valeurs propres de en ordre décroissant, et les vecteurs propres associés. Notons aussi les valeurs propres décroissantes de la matrice . On a alors le théorème suivant[1] :

Théorème de convergence de Kaniel-Page — 

et

, , et est le polynôme de Tchebychev de degré

Complexité[modifier | modifier le code]

On suppose que la matrice comporte éléments non-nuls, avec . Alors l'opération la plus coûteuse de l'exécution est la multiplication qui a un coût asymptotique de . La complexité temporelle de l'algorithme est alors

De plus, les seules données à stocker sont les vecteurs et les valeurs et . La complexité spatiale est donc de

Comparaison avec la méthode de la puissance itérée[modifier | modifier le code]

La méthode de la puissance itérée recherche le vecteur propre associé à la plus grande valeur propre en multipliant itérativement le vecteur initial par la matrice . On peut donc considérer qu'à une étape , la méthode consiste à rechercher le vecteur associé à la plus grande valeur propre dans l'espace vectoriel de dimension engendré par le vecteur .

L'algorithme de Lanczos améliore ce processus en recherchant, à une étape , le vecteur associé à la plus grande valeur propre dans l'espace vectoriel de dimension engendré par l'ensemble des vecteurs des itérations précédentes, c'est à dire les vecteurs .

Avantages et inconvénients[modifier | modifier le code]

L'opération la plus coûteuse effectuée par l'algorithme de Lanczos est la multiplication d'un vecteur par la matrice . Lorsque est une matrice creuse, l'algorithme est donc très efficace par rapport aux autres algorithmes de tridiagonalisation tel que les transformations de Householder. Il est même possible de calculer les valeurs propres d'une matrice qui n'est pas connue explicitement, mais telle qu'on dispose d'une fonction telle que .

Dans le cadre de la recherche de valeurs propres, c'est également un des rares algorithmes de recherche de valeur propre qui permettent de trouver les plus petites valeurs propres d'une matrice hermitienne sans réaliser sa décomposition complète.

Par contre, l'algorithme n'est pas stable numériquement. En effet, même si les calculs donnent des résultat de la meilleur précision possible, il reste un résidu d'erreur. Lorsque les coefficients sont petits, cela condition à une perte de l'orthogonalité de la matrice , ce qui complique grandement la déduction des vecteurs propres de à partir de ceux de . Plusieurs méthodes existent pour pallier ce problème, telles que l'orthogonalisation de chaque nouveau vecteur par rapport à l'ensemble des vecteurs déjà calculés, ou encore l'orthogonalisation de à la fin de l'exécution de l'algorithme.

Applications[modifier | modifier le code]

Recherche de valeurs singulières[modifier | modifier le code]

Soit un matrice . Si est une valeur singulière de et le vecteur singulier associé à droite, alors est une valeur propre de et est le vecteur propre associé. Il est donc possible de réaliser une décomposition en valeurs propres de , et d'en déduire la décomposition en valeurs singulières de

Applications pratiques[modifier | modifier le code]

L'algorithme de Lanczos est particulièrement pratique pour déterminer la décomposition de très grandes matrices creuses, en météorologie ou en traitement des langues naturelles, où ces matrices peuvent compter des centaines de milliers de termes.

Variantes[modifier | modifier le code]

L'algorithme de Lanczos 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é.

Notes et références[modifier | modifier le code]

  1. a et b (en) Gene H. Golub et Charles F. Van Loan, Matrix computations, Johns Hopkins University Press, , 3e éd. (ISBN 0-8018-5413-X, 978-0-8018-5413-2 et 0-8018-5414-8, OCLC 34515797, lire en ligne), chap. 9 (« Lanczos Methods »), p. 470-507

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Références[modifier | modifier le code]

Liens externes[modifier | modifier le code]

  • (en) Andrew Y. Ng, Alice X. Zheng et Michael I. Jordan, « Link Analysis, Eigenvectors and Stability », dans IJCAI-01, (lire en ligne), p. 903-910 : comparaison des méthodes de classement HITS et PageRank (l’algorithme de Google) et de leur convergence et la stabilité des vecteurs propres face aux changements des ensembles de liens organisé par les moteurs de recherche
  • (en) Brian A. LaMacchia et Andrew M. Odlyzko, « Solving Large Sparse Linear Systems over Finite Fields », dans Proceeding CRYPTO '90, p. 109-133, § 3 : Lanczos and conjugate gradient methods

{{Portail|mathématiques|informatique théorique}} [[Catégorie:Algorithme|Lanczos]] [[Catégorie:Matrice]]