Accueil > Mathématiques > Résolution de systèmes linéaires > La méthode du gradient conjugué

La méthode du gradient conjugué

mercredi 12 octobre 2005, par Nadir SOUALEM

Mots-clés: , , , , , , , , .

Toutes les versions de cet article : [English] [français]

Je vous présente ici la méthode du gradient conjugué. Cette méthode numérique permet de résoudre de grands systèmes linéaires dont la matrice est symétrique définie positive. Elle repose sur la recherche de directions successives permettant d’atteindre la solution exacte du système étudié.

Description du problème

Considérons le système suivant :

Ax=b,

A est une matrice de taille n\times n symétrique définie positive (A^\top =A et x^\top Ax>0, pour tout vecteur x\in \mathbf{R}^n non nul).
Soit x_\star la solution exacte de ce système.

Directions conjuguées

Comme la matrice A est symétrique définie positive, on peut définir le produit scalaire suivant sur \mathbf{R}^n :
\langle u,v \rangle_A = u^\top A v.
Deux éléments u,v\in \mathbf{R}^n sont dit A-conjugués si :

u^\top A v = 0

La méthode du gradient conjugué consiste à construire une suite (p_k)_{k\in\mathbf{N}^*} de n vecteurs A-conjugués. Dès lors, la suite p_1,p_2,\ldots,p_n forme une base de \mathbf{R}^n. La solution exacte x_\star peut donc se décomposer comme suit :

x_\star = \alpha_1 p_1 + \cdots + \alpha_n p_n

\alpha_k = \frac{p_k^\top b}{p_k^\top A p_k},k=1,\ldots,n.

Construction des directions conjuguées

La solution exacte x_\star peut-être également vu comme
l’unique minimisant de la fonctionnelle
J(x) = \frac12 x^\top A x - b^\top x, \quad x\in\mathbf{R}^n
On a donc clairement \nabla J(x) = A x - b, \quad x\in\mathbf{R}^n
d’où

\nabla J(x_\star)=0_{\mathbf{R}^n}

On définit le résidu du système d’équation comme suit
r_k = b - Ax_k=-\nabla J(x_k)

r_k représente donc la direction du gradient de
la fonctionnelle J en x_k (à un signe près).

La nouvelle direction de descente p_{k+1} suit donc
celle du résidu modulo, sa A-conjugaison avec p_k, on a alors :

p_{k+1} = r_k - \frac{p_k^\top A r_k}{p_k^\top A p_k} p_k

C’est le choix du coefficient \frac{p_k^\top A r_k}{p_k^\top A p_k} qui assure la A-conjugaison des directions p_k. Pour vous en assurez calculer (Ap_{k+1},p_k), cette quantité est nulle !

Algorithme du gradient conjugué

Calcul du résidu r_0=b-Ax_0 pour un vecteur x_0 quelconque. On fixe p_0=r_0.

Pour k=1,2,\ldots

q_k=A p_k

If k=1

p_1=r_{0}

Else

\beta_{k-1}= \frac{r_{k-1}^\top r_{k-1}}{r_{k-2}^\top r_{k-2}}

p_k=r_{k-1} + \beta_{k-1}p_{k-1}

EndIf

\alpha_k=\frac{r_{k-1}^\top r_{k-1}}{p_k^\top q_k}

x_k=x_{k-1}+\alpha_k p_k

r_k=r_{k-1}-\alpha_k q_k

FinPour

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message
  • Pour créer des paragraphes, laissez simplement des lignes vides.

Si vous souhaitez aider financièrement le projet Math-Linux.com, vous pouvez aider notre équipe. Merci !!!

Links