Méthode du gradient conjugué

En analyse numérique, la méthode du gradient conjugué  est un algorithme pour résoudre des systèmes d'équations linéaires dont la matrice est symétrique définie positive. Cette méthode, imaginée en 1950 simultanément par Cornelius Lanczos, Eduard Stiefel et Magnus Hestenes, est une méthode itérative qui converge en un nombre fini d'itérations (au plus égal à la dimension du système linéaire). Toutefois, son grand intérêt pratique du point de vue du temps de calcul vient de ce qu’une initialisation astucieuse (dite « préconditionnement ») permet d'aboutir en seulement quelques passages à une estimation très proche de la solution exacte : c'est pourquoi, en pratique, on se borne à un nombre d'itérations bien inférieur au nombre d'inconnues.

La méthode du gradient biconjugué fournit une généralisation pour les matrices non symétriques.

Principe 
L'objectif est de minimiser la fonction  où  est une matrice carrée symétrique définie positive de taille n. 

Le calcul montre qu'une solution du problème est la solution du système  : en effet, on a . 

Intuitivement, la fonction  peut donc être vue comme une primitive (littéralement un potentiel scalaire) du résidu . En annulant le gradient de , on obtient le vecteur  qui minimise l'erreur.

La méthode du gradient conjugué vue comme une méthode directe 

On rappelle que deux vecteurs non nuls  et  sont conjugués par rapport à  si

Sachant que  est symétrique définie positive, on en déduit un produit scalaire

Ainsi, deux vecteurs sont conjugués s'ils sont orthogonaux pour ce produit scalaire.

La conjugaison est une relation symétrique : si  est conjugué à  pour , alors  est conjugué à .

Supposons que  est une suite de  directions conjuguées deux à deux. Alors les  forment une base de Rn, ainsi la solution  de  dans cette base :

Les coefficients sont donnés par

 (car  sont conjugués deux à deux)

On a ainsi l'idée directrice de la méthode pour résoudre le système  : trouver une suite de  directions conjuguées, et calculer les coefficients .

La méthode du gradient conjugué vue comme une méthode itérative 

En choisissant correctement les directions conjuguées , il n'est pas nécessaire de toutes les déterminer pour obtenir une bonne approximation de la solution . Il est ainsi possible de considérer la méthode du gradient conjugué comme une méthode itérative. Ce choix permet ainsi de considérer la résolution de systèmes de très grande taille, où le calcul de l'ensemble des directions aurait été très long.
 
On considère ainsi un premier vecteur , qu'on pourra supposer nul (sinon, il faut considérer le système ). L'algorithme va consister, partant de , à se « rapprocher » de la solution  inconnue, ce qui suppose la définition d'une métrique. Cette métrique vient du fait que la solution  est l'unique minimiseur de la forme quadratique :

Ainsi, si  diminue après une itération, alors on s'approche de .

Ceci suggère donc de prendre la première direction  comme l'opposé du gradient de  à . Le gradient vaut  {{formule|§=Ax0 – b – b|Ax0–b –b'''}}, d'après notre première hypothèse. Les vecteurs suivants de la base seront ainsi conjugués au gradient, d'où le nom « méthode du gradient conjugué ».

Soit  le résidu à la k itération :

Notons que  est l'opposé du gradient de  en , ainsi, l'algorithme du gradient indique d'évoluer dans la direction . On rappelle que les directions  sont conjuguées deux à deux. On veut aussi que la direction suivante soit construite à partir du résidu courant et des directions précédemment construites, ce qui est une hypothèse raisonnable en pratique.

La contrainte de conjugaison est une contrainte d'orthonormalité, aussi le problème partage des similitudes avec le procédé de Gram-Schmidt.  

On a ainsi

Suivant cette direction, le point suivant est donné par

le pas  est déterminé de manière à minimiser :

le minimum de  est atteint pour   et comme  est définie positive,  ,
donc :

 Algorithme 
Pour amorcer la récurrence, il faut partir d’une estimation initiale  du vecteur  recherché ; et le nombre d'itérations N nécessaire pour que  (où ε est un nombre positif arbitrairement proche de zéro) dépend du  choisi. Malheureusement, les méthodes de « préconditionnement » à la fois sûres et générales (c'est-à-dire efficaces pour toutes sortes de matrices symétriques positives) pour former un  correct sont aussi elles-mêmes coûteuses en temps de calcul. En pratique, l'intuition physique, guidée par la nature physique du problème à résoudre, suggère parfois une initialisation efficace : ces idées ont donné lieu depuis plus de trente ans à une littérature spécialisée abondante.

 Algorithme itératif en pseudo-code 

L'algorithme ci-dessous résout , où  est une matrice réelle, symétrique, et définie positive.
Le vecteur d'entrée  peut être une approximation de la solution initiale ou 0.

 Convergence 

On peut montrer le résultat suivant sur la convergence de l'algorithme :

où  désigne le conditionnement de la matrice et 

La méthode du gradient conjugué a donc une convergence superlinéaire, qui peut être mise à mal par un mauvais conditionnement de la matrice. Elle reste toutefois meilleure que les algorithmes à direction de plus forte pente.

 Solveur 

  M1CG1 - A solver of symmetric linear systems by conjugate gradient iterations, using/building a BFGS/ℓ-BFGS preconditioner''. Écrit en Fortran-77. Le solveur a l'intérêt d'offrir la possibilité de construire un préconditionneur BFGS ou , qui pourra être utile pour la résolution d'un système linéaire avec une matrice proche et un second membre différent.

Notes et références

Notes

Bibliographie

Voir aussi

Articles connexes 

 Direction de descente
 Algorithme à directions de descente
 Algorithme de Lanczos

Liens externes 

  La méthode du gradient conjugué
  Le gradient conjugué sans peine
  Introduction à la méthode du gradient et du gradient conjugué

Methode du gradient conjugue
Gradient conjugue
Gradient conjugue