Résolution de systèmes linéaires : méthodes itératives
Résolution de systèmes linéaires : méthodes itératives
Introduction
Dans ce cours, nous nous intéressons à la résolution de grands systèmes linéaires :
Ax = b
A est une matrice donnée, elle peut être issue de la discrétisation d'équations aux dérivées partielles. Le
vecteur b appelé second membre est aussi donné. Le vecteur x est l'inconnue qu'on cherche à calculer. On
suppose ici que la matrice A est toujours inversible, et donc que ce système possède une unique solution.
On a deux grandes classes de matrices
Matrices pleines (souvent issues d'une résolution par équations intégrales). Ces matrices sont coû-
teuses à stocker, on dispose souvent d'un produit matrice vecteur, et la matrice n'est pas stockée.
Matrices creuses (souvent issues d'une discrétisation par éléments nis ou volumes nis) de grande
taille.
Pour résoudre ces systèmes linéaires, on a deux classes de méthodes :
Méthodes directes : par exemple méthodes de Cholesky ou LU. Ce sont des méthodes qui ont été
vues dans les cours précedents. Pour les matrices creuses, on obtient un phénomène de remplissage :
un zéro initial de la matrice A peut devenir un élément non-nul de L (ou U ). En conséquence, les
facteurs L et U sont beaucoup plus volumineux que la matrice initiale. Pour les matrices pleines,
ces méthodes imposent de stocker la matrice. Globalement, ce sont des méthodes qui sont coûteuses
en stockage mémoire.
Méthodes itératives : par exemple gradient conjugué, Gmres. Ce sont des méthodes qui construisent
une suite x qui converge vers la solution x. Ce sont des méthodes peu coûteuses en espace mémoire
car on n'est pas obligé de stocker la matrice (on utilise une fonction calculant le produit matrice
n
vecteur), et le nombre de vecteurs utilisés pour calculer la suite x est réduit. Elles sont aussi souvent
plus facilement parallélisables que les méthodes directes. Le problème majeur de ces méthodes est
n
Une méthode itérative consiste à calculer une suite de vecteurs x telle que
k
lim xk = x
k→+∞
chaque vecteur x est construit à partir des vecteurs précédents x , x , · · · . L'itéré initial x est souvent
pris égal à 0. Pour tester la convergence de la méthode, on ne peut pas calculer l'erreur ||x − x|| car on
k+1 k k−1 0
ne connait pas la solution x. Un mauvais choix serait de considérer ||x − x || car certaines méthodes
k
peuvent stagner ou présenter des plateaux de convergence, donc deux itérés successifs peuvent être assez
k+1 k
rk = b − Axk
et on vérie que la norme de ce résidu est assez petite. On se donne un critère d'arrêt du type
||rk ||
≤ε
||b||
avec ε appelé la tolérance. On notera qu'on divise par la norme de b pour avoir un résidu relatif, ce qui
permet d'avoir une tolérance ε qui ne dépend pas de b. Dans les applications, il arrive souvent d'avoir des
seconds membres b dont la norme est très petite ou très grande. Une valeur typique de ε est 10 , on verra
−6
qu'il est important de prendre ε assez petit pour la plupart des matrices.
On remarquera que
rk = b − Axk = Ax − Axk = A(x − xk )
1
2 CHAPITRE 1. INTRODUCTION
et que la norme
||rk ||2 =< rk , rk >=< A(x − xk ), A(x − xk ) >=< AT A(x − xk ), x − xk >= ||x − xk ||2AT A
La norme du résidu correspond à la norme induite par A A de l'erreur x−x . Comme A A est symétrique
T T
Méthodes de relaxation
Ce sont des méthodes qui s'écrivent toutes la forme suivante
M xk+1 = N xk + b
avec des matrices M et N choisies telles que
A=M −N
et avec M facile à inverser. On remarquera que si la suite (x ) converge vers x, alors on a
k
M x = N x + b ⇒ (M − N )x = b ⇒ Ax = b
Donc lorsque la suite converge, elle converge vers la solution attendue. Les méthodes de relaxation sont
basées sur le découpage suivant de A :
. . . −F
...
A= D
−E
D représente la diagonale de A, −E la partie triangulaire inférieure et −F la partie triangulaire supérieure.
La méthode de Jacobi consiste à écrire le système Ax = b et à indicer la diagonale avec x alors que
les termes extra-diagonaux sont indicés avec x , on obtient le système suivant :
k+1
k
La méthode de Gauss-Seidel est similaire à celle de Jacobi, car on prend les nouvelles valeurs de x (au
lieu de garder les anciennes valeurs pour Jacobi). On obtient le système suivant
i
3
4 CHAPITRE 2. MÉTHODES DE RELAXATION
La relaxation se base sur l'idée que comme x est plus proche de la solution, on peut essayer d'aller
plus loin vers cette nouvelle valeur en posant :
k+1
xk+1
i = (1 − ω)xki + ω x̃ki
où x̃ est la valeur calculée par la méthode de Gauss-Seidel. ω est un paramètre de relaxation. Si ω > 1,
k
i−1
X n
X
bi − ai,j xk+1
j − ai,j xkj
j=1 j=i+1
xk+1
i = (1 − ω)xki + ω
ai,i
Matriciellement, on a donc
xk+1 = (1 − ω)xk + ωD−1 b + ωD−1 Exk+1 + ωD−1 F xk
ce qui donne
(D − ωE)xk+1 = ((1 − ω)D + ωF ) xk + ωb
on divise par ω pour obtenir
D (1 − ω)
− E xk+1 = D + F xk + b
ω ω
ce qui prouve que
D (1 − ω)
M= − E, N= D+F
On peut aussi utiliser la méthode de relaxation rétrograde basée sur la méthode de Gauss-Seidel rétrograde,
ω ω
Bien sûr, on ne calcule pas l'inverse de M , on résout le système M z = r . Ce système est facile à résoudre
car M est diagonale ou triangulaire. L'algorithme géneral sécrit donc
k
2.5. CONVERGENCE DES MÉTHODES DE RELAXATION 5
r = b − Ax0
k=0
et
while ||r||/||b|| > ε k ≤ Nmax do
Résoudre M z = rk
Remplacer par
x x+z
Calculer r = b − Ax
end while
Nmax est le nombre maximal d'itérations, c'est utilisé pour éviter une boucle innie. Il peut arriver que
le résidu stagne, il est donc inutile de faire tourner l'algorithme pour rien.
2.5 Convergence des méthodes de relaxation
On rappelle que le rayon spectral d'une matrice A est noté ρ(A) et vaut
Sp
ρ(A) = max
λi ∈ (A)
|λi |
On a
xk+1 = Bxk + M −1 b
En passant à la limite, la solution x vérie
x = Bx + M −1 b
xk+1 − x = B(xk − x)
En itérant, on obtient
xk − x = B k (x0 − x)
Or la matrice B k converge vers 0 si et seulement si ρ(B) < 1, on obtient donc le résultat annoncé.
Pour la méthode de Jacobi, on a un résultat pour les matrices à diagonalement strictement dominantes.
Ce sont des matrices telles que X
|ai,i | > |ai,j |, ∀i ∈ [1, n]
j̸=i
Theorème 2.5.2 La méthode de Jacobi converge pour des matrices à diagonale strictement dominante
Preuve 2 On utilise la norme innie de la matrice B = M −1 N
n
X
||B||∞ = max |bi,j |
i
j=1
ai,j
Or bi,i = 0 et bi,j = − , on en déduit donc que
ai,i
X |ai,j |
||B||∞ = max
i |ai,i |
j̸=i
On a donc ||B||∞ < 1, ce qui implique que ρ(B) < 1. La méthode de Jacobi converge.
6 CHAPITRE 2. MÉTHODES DE RELAXATION
Pour la méthode de relaxation, la convergence est plus large. On a un résultat pour les matrices symétriques
dénies positives (sdp). Ce sont des matrices qui vérient
< Ax, x̄ > > 0, ∀x ̸= 0
On note ici < x, y > la quantité suivante
n
X
< x, y >= x i yi
qui correspond au produit scalaire lorsque x et y sont deux vecteurs réels. Dans le cas complexe, le produit
i=1
On a obtenu la convergence pour ω ∈]0, 2[, mais est-ce qu'il y a une valeur optimale pour ω ? Pour
certaines matrices, on peut caluler la valeur optimale de ω. Plus précisément si on note
B = D−1 (E + F )
la matrice d'itération de Jacobi, et que la matrice A vérie la propriété suivante
Les valeurs propres de B(α) = αL + Uα ne dépendent pas de α ∈ C
où L et U sont respectivement la partie triangulaire inférieure et supérieure de B, on obtient la valeur
optimale suivante de ω
ωopt =
2
p
1 + 1 − ρ(B) 2
Cette formule peut être utilisée par exemple pour les matrices issues d'une discrétisation par diérences
nies. On remarquera que la valeur optimale de ω tend vers 2 lorsque le pas de maillage tend vers 0.
Chapitre 3
Méthodes de gradient
Dans ce chapitre, on considére des matrices réelles symétriques. <, > correspond donc au produit
scalaire. Les méthodes de gradient cherchent à minimiser la fonctionnelle
1
f (x) = ⟨Ax, x⟩ − < b, x >
2
On calcule le gradient de f en calculant
1 1 1 1
f (x + h) = < Ax, x > + < Ax, h > + < Ah, x > + < Ah, h > − < b, h > − < b, x >
2 2 2 2
avec h ∈ R . En développant, on obtient donc
n
1 T 1
f (x + h) = f (x) + (A + A )x − b, h + < Ah, h >
2 2
Le gradient correspond au terme d'ordre un, on a donc
1
∇f (x) = (A + AT )x − b
2
On voit ici qu'il est essentiel que la matrice A soit symétrique pour qu'un point critique de f corresponde
à la solution x̃ de Ax = b. De plus si A est dénie positive, on obtient que
< Ah, h > ≥ 0 ⇒ f (x̃ + h) ≥ f (x̃), ∀h ∈ Rn
méthodes linéaires, car le pas α va dépendre de manière non-linéaire de x . Pour certaines méthodes
k k+1
la direction de descente est choisie opposée au gradient de f , ce qui semble assez naturel comme choix,
puisque le gradient correspond à la direction de plus forte croissance de f . La direction d est égale au
résidu r qu'on avait vu en introduction.
k
1
f (xk+1 ) = < A(xk + αk rk ), xk + αk rk > − < b, xk + αk rk >
2
On obtient donc
1 α2
f (xk+1 ) = f (xk ) + αk (< Ark , xk > + < Axk , rk >) − αk < b, rk > + k < Ark , rk >
2 2
soit en utilisant la symétrie de A
αk2
f (xk+1 ) = f (xk ) + αk < Axk − b, rk > + < Ark , rk >
2
7
8 CHAPITRE 3. MÉTHODES DE GRADIENT
soit αk2
f (xk+1 ) = f (xk ) − αk < rk , rk > + < Ark , rk >
2
On remarque que f (x ) est un polynôme de degré 2 avec un coecient en positif car < Ar , r αk2 >> 0
(avec A matrice sdp). Le minimum est donc atteint pour
k+1 k k
< rk , rk >
αk =
< Ark , rk >
On obtient ainsi la méthode du gradient à pas optimal
r = b − Ax0
k=0
et
while ||r||/||b|| > ε k ≤ Nmax
do
Calculer
z = Ar
Calculer
α =< r, r > / < z, r >
Mettre à jour la solution :
x = x + αr
Mettre à jour le résidu
r = r − αz
k =k+1
end while
On a un produit matrice-vecteur par itération. L'algorithme ne peut être utilisé que pour des matrices
sdp. Pour une matrice sdp, on a le résultat de convergence suivant
k
κ−1
||xk − x||A ≤ ||x0 − x||A
κ+1
ce qui montre que le gradient à pas optimal converge. Ce résultat sera démontré en TD. Le coecient κ
est le conditionnement en norme 2 de A déni par
κ = cond (A) = ||A|| ||A ||
2 2
−1
2
ce qui donne
λmax (A)
λmin (A)
κ=
La méthode du résidu minimum utilise la même direction de descente que le gradient à pas optimal
dk = rk = b − Axk
En revanche, elle minimise le résidu ||r k+1 || (au lieu de f (x )), ce qui donne l'expression suivante pour
k+1
αk
< Ark , rk >
αk =
< Ark , Ark >
La démonstration de cette formule est faite en TD. On notera que la méthode du résidu converge vers la
solution si la matrice A + A est symétrique dénie positive, la symétrie de A n'est pas nécessaire.
T
L'idée de la méthode est de choisir des directions d orthogonales. On choisit alors α pour rendre
l'erreur orthogonale à la direction de descente. Par cette technique, on veut converger en au plus n itéra-
k k
tions, puisqu'au bout de n itérations les directions de descente auront formé une base de R . Si on exige n
< d , d >= 0, si i ̸= j
i j
On remarquera qu'aux itérés suivants, on aura l'erreur orthogonale aux directions précédentes car
xk+2 = xk+1 + αk+1 dk+1
ce qui est pas pratiquable, car on aurait besoin de connaître l'erreur (et donc la solution) pour calculer
α !
En revanche, si on choisit une A-orthogonalité, c'est à dire
k
< Ad , d >= 0 si i ̸= j
i j
le calcul de α devient
k
0 =< Aek+1 , dk >=< Aek , dk > +αk < Adk , dk >
soit (en utilisant que Ae k = −rk )
< rk , dk >
αk =
< Adk , dk >
Cette fois l'expression est exploitable. Pour naliser la méthode des directions conjuguées, il faut construire
une base de direction d qui soit A-orthogonale. On peut utiliser un procédé de Gram-Schmidt par exemple.
k
La méthode du gradient conjugué consiste à construire une base A-orthogonale pour les directions
notées p (au lieu de d ). De plus, on impose que les résidus soient orthogonaux (pour le calcul de α ). Ces
deux conditions susent à déterminer entièrement la méthode. On rappelle que la solution vérie donc
k k k
xk+1 = xk + αk pk
avec
p0 = r0
Pour déterminer les coecients α et β , on impose
k j
On calcule
< rk+1 , rj >=< rk , rj > −αk < Apk , rj >= 0
car on a supposé les rj orthogonaux jusqu'au rang k (hypothèse de récurrence). On a donc obtenu que les
résidus sont orthogonaux jusqu'au rang k + 1 :
< rk+1 , rj >= 0, ∀j ∈ [0, k]
pour obtenir
< Apk , pj >=< Ark , pj > −βj < Apj , pj >
Pour obtenir que les directions soient A-orthogonales, il sut de prendre
< Ark , pj >
βj =
< Apj , pj >
Or, on a
rj+1 − rj = −αj Apj
On en déduit donc que
rj − rj+1
Apj =
αj
On a donc en utilisant l'orthogonalité des résidus :
si j ≤ k − 2
rj − rj+1
0,
< Ark , pj >= rk , = < rk , rk >
αj − , si j = k − 1
αk−1
On remarque que comme les coecients β sont nuls jusqu'au rang k − 2, les directions p se calculent
avec une récurrence courte
j k
pk = rk + γk pk−1
en ayant posé γ k = −βk−1 . On obtient ainsi l'algorithme du gradient conjugué
x = x0
r = b − Ax0
k=0
p=r
ρ prev= < r, r >
while ||r||/||b|| > εet k ≤ Nmax do
Produit matrice-vecteur : q = Ap
δ = < p, q >
α = ρprev /δ
3.4. MÉTHODE DU GRADIENT CONJUGUÉ 11
x = x + αp
r = r − αq
ρ = < r, r >
γ = ρ/ρ prev
p = γp + r
ρprev =ρ
k =k+1
end while
Par construction, comme les résidus forment une base orthogonale, la méthode du gradient conjugué
convergera en au plus n itérations. Cet algorithme fonctionne pour toute matrice symétrique. Il n'est pas
nécessaire que la matrice soit en plus dénie positive. Néanmoins, si la matrice est symétrique dénie
positive, on est sûr de ne pas rencontrer de division par zéro. De plus on a un résidu monotone, on a le
résultat de convergence suivant (quand A est sdp) :
√ k
κ−1
||xk − x̃||A ≤ 2 √ ||x0 − x̃||A
κ+1
avec x̃ la solution du système Ax = b. On a priori une convergence beaucoup plus rapide que le gradient
à pas optimal, car on a κ au lieu de κ.
√
12 CHAPITRE 3. MÉTHODES DE GRADIENT
Chapitre 4
Préconditionnement
On a vu que le conditionnement de la matrice intervenait dans la vitesse de convergence des méthodes
telles que le gradient conjugué. Le conditionnement joue aussi un rôle sur la précision de la solution. A
cause des erreurs numériques, on ne calcule pas la vraie solution x qui vérie
Ax = b
∆x est l'erreur commise sur la solution alors que ∆b correspond au résidu. A partir de ces deux équations,
il est possible de démontrer que
||∆x|| ||∆b||
≤ κ(A)
||x|| ||b||
où κ(A) est le conditionnement de A. La démonstration de cette inégalité sera faite en TD. On voit donc
que même si on obtient un résidu petit, comme il est multiplié par le conditionnement de A, on peut
obtenir une erreur importante sur la solution. On voit la double diculté quand on a une matrice mal
conditionnée (i.e. telle que κ(A) est grand) :
Convergence plus lente
Nécessité de prendre une tolérance ε assez petite pour obtenir une solution able
4.1 Préconditionnement à gauche et à droite
M −1 A = M −1 b
Le préconditionnement sera bon si le conditionnement de M A est bien plus faible que le conditionnement
−1
de A.
Le préconditionnement à droite change d'inconnue en posant
y = Mx
On obtient alors (
AM −1 y = b
Ax = b ⇔
x = M −1 y
En général, on modie l'algorithme sans préconditionneur pour incorporer le préconditionneur. Dans
l'algorithme avec préconditionneur, on élimine les calculs superus et on utilise le vrai résidu
r = b − Ax
pour la condition d'arrêt de l'algorithme itératif. Par exemple si on part de l'algorithme du résidu minimum
sans préconditionnement :
r = b − Ax0
k=0
et Nmax
while ||r||/||b|| > ε k ≤ do
Calculerw = Ar
Calculerα =< r, w > / < w, w >
Mettre à jour la solution :
x = x + αr
Mettre à jour le résidu
r = r − αz
k =k+1
end while
Il devient avec préconditionnement à gauche
13
14 CHAPITRE 4. PRÉCONDITIONNEMENT
r = b − Ax0
Résoudre Mq = r
k=0
et Nmax
while ||r||/||b|| > ε k ≤ do
Calculerw = Aq
Résoudre Mz = w
Calculerα =< q, z > / < z, z >
Mettre à jour la solution :
x = x + αz
Mettre à jour le vrai résidu
r = r − αw
Mettre à jour le résidu
q = q − αz
k =k+1
end while
On remarque ici qu'on a besoin de mettre à jour le résidu de l'algorithme et le vrai résidu r = b − Ax qui
est utilisé pour tester la convergence de l'algorithme. Dans cet algorithme, on a un produit matrice-vecteur
et un appel au préconditionneur à chaque itération, ce qui est optimal. Dans les TDs, le cas du résidu
minimum avec préconditionnement à droite sera traité.
Il est à noter que les valeurs propres de M A sont les mêmes que celles de AM , par conséquent
−1 −1
la vitesse de convergence devrait être similaire pour les deux cas. Lorsqu'on utilise des algorithmes qui
exigent la symétrie de la matrice comme le gradient conjugué, on ne peut pas l'utiliser directement pour
résoudre M Ax = M b car la matrice M A (ou AM ) n'est en général pas symétrique même si A
−1 −1 −1 −1
et M le sont. Une parade est d'utiliser le produit scalaire < x, y > =< M x, y > pour lequel la matrice
M A est symétrique. On obtient ainsi l'algorithme du gradient conjugué préconditionné qui sera établi
M
−1
Les préconditionnements sont souvent basés sur une résolution approchée du système linéaire Ax =
b. Les préconditionneurs basés sur les méthodes de relaxation consistent à eectuer une itération de
l'algorithme de relaxation en partant de x = 0.
Par exemple si on veut préconditionner par la méthode de Jacobi, le calcul de
0
z = M −1 r
z=M r⇔ −1
Multiplier par la diagonale p = D q
Résoudre le système triangulaire (D-F) z = p
4.3 Préconditionnement par la factorisation incomplète
L'idée de la factorisation incomplète est de calculer les facteurs L et U que sur les éléments non-nuls
de A. On interdit ainsi tout remplissage, mais c'est une approximation. Si on note
P = {(i, j) tel que a ̸= 0} i,j
for j = i + 1, n et (j, i) ∈ P do
k=1
i−1
X
aj,i − mi,k mj,k
k=1
mj,i =
mi,i
end for
end for
Pour obtenir, une meilleure convergence, on peut élargir le prol P , on obtient ainsi la méthode ILU(1)
en prenant
P = {(i, j) tel que ∃k tel que a ̸= 0 et a ̸= 0}
i,k k,j
et la méthode ILU(k), où k est le nombre maximal d'intermédiaires entre i et j. Une autre approche
est de ne pas conserver les valeurs petites de L, on obtient ainsi la méthode ILUT (Incomplete LU with
Threshold) paramétrée par un seuil ε.
4.4 Préconditionnement par des méthodes multigrilles
L'idée des méthodes multigrille est de calculer la solution sur une grille plus grossière an de construire
une solution approchée. Lorsqu'on décompose la solution sur les modes, la résolution sur une grille grossière
permet d'atténuer l'erreur pour les modes basses fréquences, mais les modes hautes fréquences sont peu
ou pas atténués. Il est donc nécessaire d'adjoindre à ces algorithmes des étapes de lissage qui permettront
de réduire l'erreur haute fréquence. Si on considère par exemple la résolution d'un laplacien
−∆u = f
en 1-D, sur le segment [0, 1]. Une discrétisation par diérences nies donne la matrice
2 −1 0
x = x0
r = b − Ax0
k=0
while ||r||/||b|| > ε k ≤ et do Nmax
Pré-lissage
x = S1 (x, b)
Calcul du résidur = b − A∆x/2 x
Restriction sur grille grossière
r̃ = Rr
Résolution de A∆x ỹ = r̃
Prolongement sur grille ne
y = P ỹ
16 CHAPITRE 4. PRÉCONDITIONNEMENT
(P u)2i = ui
ui + ui+1
(P u)2i+1 =
2
avec la convention u 0 = un+1 = 0 (condition de Dirichlet). Matriciellement, on a donc
1 0 ···
1 2 0 ···
P =
2 1 1 ···
0 2 0 ···
2 kπ
λk = 1 − 2ω sin , k = 1..2n + 1
2(2n + 2)
et le mode associé vaut
j kπ
vj = sin , j = 1 · · · 2n + 1
2n + 2
Les modes basses fréquences correspondent à j petit ou proche de 2n + 1, alors que les modes hautes
fréquences correspondent à j proche de n. Si on prend ω = 2 , la valeur propre vaut
1
2 kπ
λk = cos
2(2n + 2)
Les modes basses fréquences sont peu atténués (cos proche de 1), alors que les modes hautes fréquences
2
même si en pratique, on n'implémente pas l'algorithme ainsi. D'un point de vue théorique, il est quand
même intéressant d'utiliser cette forme pour étudier la convergence. Lorsqu'on n'a pas de post-lissage
(S = I ), on obtient
2
M −1 N = (I − P A−1
∆x RA∆x/2 )J
où J est la matrice d'itération du lisseur (I −ωD pour Jacobi pondéré). Lorsqu'on calcule le rayon
−1 A
ρ(M N ) = , pour ω =
1 −1 1
2 2
ce qui est résultat remarquable, car on obtient une vitesse de convergence indépendante du pas de maillage.
La valeur optimale est obtenue pour ω = 3 : 2
pour ω = 23
1
ρ(M −1 N ) = ,
3
L'algorithme multigrille consiste à remplacer la résolution directe par un appel récursif à l'algorithme
multigrille sur la grille grossière :
4.4. PRÉCONDITIONNEMENT PAR DES MÉTHODES MULTIGRILLES 17
Multigrille(∆x, b, x0 , γ )
x = x0
Pré-lissage x = S (x, b)
Calcul du résidu r = b − A x
1
Par construction, on a
HX = Y
HV = V − 2(U · V )U
De la même manière, la multiplication à droite de H par une matrice A se fait en calculant HCi pour
chaque colonne Ci de A. La multiplication à gauche revient à calculer HLi pour chaque ligne Li .
Exemple 5.1.1 Calculer la matrice de Householder qui transforme X = (3, 4, 0) en Y = (0, 0, 5). Utiliser
l'algorithme rapide pour calculer HV pour V = (5, 10, −5).
On en déduit que
32 −24 30 0.64 −0.48 0.6
1
H = I − 2U T U = −24 18 40 = −0.48 0.36 0.8
50
30 40 0 0.6 0.8 0
On en déduit que
5 3 −4.6
160 4 = −2.8
HV = 10 −
50
−5 −5 11
19
20 CHAPITRE 5. FACTORISATION QR ET ÉQUATIONS NORMALES
On va multiplier successivement par des matrices de Householder pour former une matrice triangulaire :
Hn Hn−1 · · · H1 A = R
avec qui sera donc triangulaire, et H la transformation de Householder qui transforme la colonne
R
en Y = (α, 0, · · · , 0). On a donc
i
X = (R(i, i), R(i + 1, i), · · · , R(m, i))
Q = H1 H2 · · · Hn
C'est une méthode alternative pour calculer la factorisation QR d'une matrice. On élimine chaque
coecient R en appliquant une rotation de la forme
j,i
c 0 ··· −s 0 · · ·
.. . . . . . . ..
0 1
0 ··· 0
Q1 =
s 0 ··· c 0
0 ··· ··· ··· 1
ri,i rj,i
c= q , s = −q
2 + r2
ri,i 2 + r2
ri,i
j,i j,i
En multipliant par les rotations successives Q , Q , · · · Q , on obtient ainsi une matrice triangulaire R.
On a donc l'égalité
1 2 N
QN QN −1 · · · Q2 Q1 A = R
On en déduit que
Q = (QN QN −1 · · · Q2 Q1 )T = QT1 QT2 · · · QTN −1 QTN
Pour former la matrice Q, il faut donc multiplier par la transposée de Q à droite. On obtient ainsi
l'algorithme suivant pour la factorisation QR avec la méthode de Givens
i
Q = I; R = A
for i = 1, n do
for j = i + 1, m do
if R(j, i)
p̸= 0 then
D = R(i, i)2 + R(j, i)2
c = R(i, i)/D; s = −R(j, i)/D
L1 = R(i, :); L2 = R(j, :)
R(i, :) = c ∗ L1 − s ∗ L2
R(j, :) = s ∗ L1 + c ∗ L2
C1 = Q(:, i); C2 = Q(:, j)
Q(:, i) = c ∗ C1 − s ∗ C2
Q(:, j) = s ∗ C1 + c ∗ C2
end if
end for
end for
L'avantage de cet algorithme est que le traitement d'une matrice de Hessenberg est immédiat.
5.4. PROBLÈME AUX MOINDRES CARRÉS 21
5.4 Problème aux moindres carrés
lorsque la matrice A est rectangulaire. Ce problème est connu comme problème aux moindres carrés. On
a n inconnues (les composantes x ) et m équations. On prend en général m > n, de telle sorte qu'on ait
plus d'équations que d'inconnues, on a donc en général
j
T T z1
R= , Q b=
0 z2
et on obtient alors
min ||Ax − b||2 = ||z2 ||
x∈Rn
AT Ax = AT b
On a alors un système symétrique. Ce procédé peut être aussi utilisé pour la minimisation aux moindres
carrés de la section précédente. On peut utiliser la méthode du gradient conjugué pour caluler la solution
de ce système symétrique : c'est la méthode CGNE (Conjugate Gradient Normal Equation). Il est à noter
qu'on a
Cond (A A) = Cond (A)
2
T
2
2
car
||A||22 = ρ(AT A)
Par conséquent, la matrice A A est particulièrement mal conditionnée. La méthode CGNE converge mais
T
beaucoup plus lentement que d'autres méthodes abordés dans le chapitre suivant.
22 CHAPITRE 5. FACTORISATION QR ET ÉQUATIONS NORMALES
Chapitre 6
Méthodes de Krylov
Dans cette section, on s'intéresse aux méthodes de Krylov utilisées pour résoudre des systèmes linéaires
non-symétriques. Ces méthodes sont basées sur les espaces de Krylov
K = Vect(r , Ar , A r , · · · , A
m 0 0
2
0 r ) m−1
0
An de projeter dans l'espace de Krylov K , une approche consiste à construire une base orthonormée
de cet espace par le procédé de Gram-Schmidt dont la version initiale s'écrit :
m
(vi )
v1 = r0 /||r0 ||
for j = 1, m do
w = Avj
for i = 1, m do
hi,j =< w, vi >
end for
w=w− m
P
i=1 hi,j vi
vj+1 = w/||w||
end for
On note V la matrice dont les colonnes sont les vecteurs orthonormés v . Cette matrice est donc une
matrice orthogonale. L'algorithme de Gram-Schmidt initial est modié an de limiter les erreurs d'arrondi
m i
j
X
Avj = hj+1,j vj+1 + hi,j vj
i=1
La méthode Gmres (Generalized Minimum Residual) consiste à minimiser le résidu ||b − Ax ||, en
cherchant x de la forme :
k
k
xk = x0 + Vm y
avec y ∈ R . Par construction, on a bien V
m
my ∈ Km . De plus,
b − Axk = b − Ax0 − AVm y = r0 − AVm y
23
24 CHAPITRE 6. MÉTHODES DE KRYLOV
r0 = b − Ax0
β = ||r0 ||
v1 = r0 /β
Hm = 0
for j=1, m do
w = Avj
for i=1, j do
hi,j =< w, vi >
w = w − hi,j vi
end for
hj+1,j = ||w||
vj+1 = w/hj+1,j
end for
Calculer y qui minimise ||βe − H y||
Former x = x + V y
1 m
0 m
vaudra alors |(Q βe ) |, ce qui nous permettra d'arrêter l'algorithme en testant cette valeur. On obtient
1
T
r0 = b − Ax0
β = ||r0 ||
v1 = r0 /||r0 ||
Hm = 0
j=1
z = (β, 0, · · · , 0)
et
while j ≤ m |z(j)|/||b|| > ε do
w = Avj
for i=1, j do
hi,j =< w, vi >
w = w − hi,j vi
end for
hj+1,j = ||w||
vj+1 = w/hj+1,j
for k=1,j do
L1 = hk,j , L2 = hk+1,j
hk,j = ck L1 − sk L2
hk+1,j = sk L1 + ck L2
end qfor
α = h2j,j + h2j+1,j
cj = hj,j /α, sj = −hj+1,j /α
hj,j = α; hj+1,j = 0
zj+1 = zj sj
zj = zj cj
j =j+1
end while
Résoudre le système triangulaire H(1 : j − 1, 1 : j − 1)y = z(1 : j − 1)
Former x = x + X y v
j−1
0 i i
i=1
Pour limiter l'espace mémoire requis par Gmres, l'algorithme est répété plusieurs fois, avec une valeur xe
de m.
6.3. ALGORITHME DU GRADIENT BICONJUGUÉ 25
6.3 Algorithme du gradient biconjugué
< p̃ , Ap >= 0, si i ̸= j
i j
< r̃ , r >= 0, si i ̸= j
i j
On résout quelque part deux systèmes linéaires Ax = b et A x̃ = b̃ simultanément. Comme on n'a pas
T
besoin de la solution x̃, celle-ci n'est pas calculée. Similairement au gradient conjugué, on a
xm+1 = xm + αm pm
m−1
X
p̃m = r̃m + βj p̃j
j=0
β = 0, si j < m − 1
j
On a bien une récurrence courte pour calculer les vecteurs p et p̃ . On obtient que
m m
et
< AT p̃m , rm >= βm−1 < AT p̃m−1 , rm > + < AT r̃m , rm >
< Apm , r̃m >= βm−1 < Apm−1 , r̃m > + < Arm , r̃m >
En injectant l'expression de α m−1 dans la formule pour β , on obtient m−1
< Apm , r̃m >=< Apm , p̃m − βm−1 p̃m−1 >=< Apm , p̃m >