Utilisateur:CetaGM/Brouillon2

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

Principe général

modifier

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

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

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

À 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

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

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

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

Recherche de valeurs singulières

modifier

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

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

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
  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

Articles connexes

modifier

Références

modifier

Liens externes

modifier
  • (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]]