Méthode du gradient biconjugué

De testwiki
Version datée du 4 novembre 2021 à 09:08 par 185.135.126.16 (discussion) (Propriétés : article existant)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
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,s0cA*y0;
  3. d0M1r0,f0M*s0;
  4. for k=0,1, do
  5. αksk*M1rkfk*Adk;
  6. xk+1xk+αkdk (yk+1yk+αkfk);
  7. rk+1rkαkAdk, sk+1skαkA*fk (rk=bAxk et sk=cA*yk sont le résidus);
  8. βksk+1*M1rk+1sk*M1rk;
  9. dk+1M1rk+1+βkdk, fk+1M*sk+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+A*Pk*(cA*yj) (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)ukvk*A(1Pk)vk*A(1Pk)uk.

Les nouvelles directions de descente dk:=(1Pk)uk et fk:=(A(1Pk)A1)*vk sont alors orthogonales aux résidus : vi*rk=fi*rk=0 et sk*uj=sk*dj=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:=M*sk.

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 : fi*Adj=0 et si*M1rj=0 pour ij.
  • SI pi est un polynôme avec i+deg(pi)<k, alors vi*pi(AM1)rk=0.

Modèle:Traduction/Référence

Modèle:Portail