Méthode du gradient biconjugué

De testwiki
Aller à la navigation Aller à la recherche

En mathématiques, plus spécifiquement en analyse numérique, la méthode du gradient biconjugué est un algorithme permettant de résoudre un système d'équations linéaires

Ax=b.

Contrairement à la méthode du gradient conjugué, cet algorithme ne nécessite pas que la matrice A soit auto-adjointe, en revanche, la méthode requiert des multiplications par la matrice adjointe A.

L'algorithme

  1. Choisir x0, y0, un préconditionneur régulier M (on utilise fréquemment M1=1) et c;
  2. r0bAx0,s0cAy0;
  3. d0M1r0,f0Ms0;
  4. for k=0,1, do
  5. αkskM1rkfkAdk;
  6. xk+1xk+αkdk (yk+1yk+αkfk);
  7. rk+1rkαkAdk, sk+1skαkAfk (rk=bAxk et sk=cAyk sont le résidus);
  8. βksk+1M1rk+1skM1rk;
  9. dk+1M1rk+1+βkdk, fk+1Msk+1+βkfk.

Discussion

La méthode est numériquement instable, mais on y remédie par la Modèle:Lien, et elle reste très importante du point de vue théorique : on définit l'itération par xk:=xj+PkA1(bAxj) et yk:=yj+APk(cAyj) (j<k) en utilisant les projections suivantes :

Pk:=𝐮𝐤(𝐯𝐤A𝐮𝐤)1𝐯𝐤A,

Avec 𝐮𝐤=(u0,u1,uk1) et 𝐯𝐤=(v0,v1,vk1). On peut itérer les projections elles-mêmes, comme

Pk+1=Pk+(1Pk)ukvkA(1Pk)vkA(1Pk)uk.

Les nouvelles directions de descente dk:=(1Pk)uk et fk:=(A(1Pk)A1)vk sont alors orthogonales aux résidus : virk=firk=0 et skuj=skdj=0, qui satisfont aux mêmes rk=A(1Pk)A1rj et sk=(1Pk)sj(i,j<k).

La méthode du gradient biconjugué propose alors le choix suivant :

uk:=M1rk et vk:=Msk.

Ce choix particulier permet alors d'éviter une évaluation directe de Pk et A1, et donc augmenter la vitesse d'exécution de l'algorithme.

Propriétés

  • En dimensions finies xn=A1b, au plus tard quand Pn=1 : La méthode du gradient biconjugué rend la solution exacte après avoir parcouru tout l'espace et est donc une méthode directe.
  • La suite produite par l'algorithme est Modèle:Lien : fiAdj=0 et siM1rj=0 pour ij.
  • SI pj est un polynôme avec deg(pj)+j<k, alors skpj(M1A)uj=0. L'algorithme est donc composé de projections sur des sous-espaces de Krylov ;
  • SI pi est un polynôme avec i+deg(pi)<k, alors vipi(AM1)rk=0.

Modèle:Traduction/Référence

Modèle:Portail