Vous êtes sur la page 1sur 30

CHAPITRE 4 RSOLUTION DES SYSTMES LINAIRES 1re Partie : Mthodes directes

1-Introduction : Matrice triangulaire infrieure l11 l l 21 22 L= M O l n1 L l n n lij = 0 pour j f i suprieure u11 u12 K u22 u23 U = O u1n u2 n M unn

uij = 0 pour i f j
n

Proprit : le dterminant dune matrice triangulaire A = (aij ) est det( A) = aii


i =1

Exemple : soit la matrice triangulaire suprieure


2 A= 0 0 2 3 2 0 4 1 9 b = 1 8

et

Considrons la rsolution du systme :

Ax = b

4 x3 = 8 x3 =

8 4

3 x2 2 x3 = 1 x2 =

1 [1 + 2 x3 ]=1 3 1 [9 x2 2 x3 ]= 2 2 x1 + x2 + 2 x3 = 9 x1 = 2

Algorithme de substitution rtrograde (Backward Substitution) : - Donnes U1 , b - calculer : xn = bn ann


1

for

i = n 1 , 1 s = bi for j = i + 1 ,K , n s = s ui j x j
end xi = s / ui i end

Dans le cas dune matrice triangulaire infrieure, la rsolution du systme est obtenue par :

Algorithme de substitution progressive (forward substitution) :


- Donnes : L1 , b - Calculer : x1 = b1 / l 11 for i = 21 K n s = bi for j = 1 ,K i 1 s = s li j xj end

x1 = si / l 11 end

*On dsigne par flop une opration lmentaire virgule flottante (+,-,*,/)

2- Mthode dlimination de Gauss sans pivotement :

Exemple : rsoudre A x = b
3 2 1 A= 6 6 7 3 4 4

avec
1 b = 7 6

Lalgorithme de substitution de Gauss transforme le systme original en : ~ Ux = b avec U une matrice triangulaire suprieure. Utilisons le processus pour liminer la premire variable :

3 x1 + 2 x2 1 x3 = b1 x1 =
6 x1 6 x 2 + 7 x3 = b2

1 (b1 2 x2 + x3 ) 3

1 6 (b1 2 x2 + x3 ) 6 x2 + 7 x3 = b2 3 1 3 (b1 2 x2 + x3 ) 4 x2 + 4 x3 = b3 3

3 x1 4 x2 + 4 x3 = b3

Le systme original est transform en : A1 x = b1 avec


3 A1 = 0 0
2

2 2

1 5 3

1 et b1 = 9 7

Et aprs la substitution de la deuxime variable, on trouve le systme : A2 x = b2 avec


3 A2 = 0 0
2

2 0

1 5 2

1 et b 2 = 9 +2

On voit bien quon trouve un systme linaire avec une matrice triangulaire suprieure qui peut tre rsolu avec lalgorithme de substitution rtrograde.

Algorithme dlimination de Gauss :


for i = 1 ,K , n 1 for k = i + 1, K , n for j = i + 1 ,K , n a akj akj aki ij aii end end end

mki =

aki est le multiplicateur de la ligne k et aii est le pivot de la variable xi , il doit tre non nul. aii

~ Remarquons aussi que le vecteur b a subi des transformations b b bk bk mki bi

la fin, on trouve une matrice triangulaire suprieure. Loprateur \ de MATLAB utilise une version robuste de llimination de Gauss.

3- Mthode de factorisation LU

On cherche dcomposer la matrice originale en un produit de matrices triangulaires infrieure et suprieure : A = LU LU x = b


Ly = b aprs une substitution progressive on trouve : y = L1 b et aprs une substitution rtrograde on trouve x =U
1

Lalgorithme qui sera dvelopp est une amlioration de lalgorithme dlimination de Gauss. Revenons lexemple de dpart :
3 A= 6 3 2 6 4 1 7 4 1 b = 7 6

Dfinissons les matrices :


1 M 1 = 2 1 0 1 0 0 0 1 1 M 2 = 0 0 0 1 1 0 0 1

La matrice obtenue aprs llimination de la 1re variable est :


3 A1 = M 1 A = 0 0 2 2 2 1 5 3
1re ligne inchange

des 0 en dessous de la diagonale Aussi, aprs la 2e limination, la matrice devient :


3 A2 = M 2 A1 = 0 0 2 2 0 1 5 2
inchange =U

inchange

0 en dessous de la diagonale

Ainsi, pour liminer la i me variable mettre des 0 dans la i me colonne partir de la ligne i + 1. Il suffit juste de calculer les termes akj pour k et j = i + 1,...n

akj akj mki aij avec k = i + 1,.., n et j = i + 1,...n


5

Dfinissons les matrices :


1 M 1 = m21 m31 0 1 0 0 0 1 1 M 2 = 0 0 0 1 m32 0 0 1

Et soit le produit :
0 1 m M 1 A = 21 1 m31 0 a11 = a21 m21 a11 a31 m31 a11 0 0 1 a12 a22 m21 a12 a32 m31 a12 a11 a 21 a31 a12 a22 a32 a13 a13 a23 a33 a23 m21 a13 a23 m31 a13

nous vrifions que : a a21 m21 a11 = a21 21 a11 = 0 a11 a31 a11 = 0 a11 Ainsi, le processus dlimination de la premire variable est obtenu par la multiplication de A par M1. a31 m31 a11 = a31

Gnralisation : soit la matrice 1 0 M (i ) = 0 0 0 0 1 1 mi +1, i mi + 2, i mn , i (i+1)eme ligne

La matrice triangulaire suprieure U est donc : U = M (n 1) M (n 2 ) ... M (2 ) M (1) A On veut obtenir la matrice triangulaire infrieure L :
M (n2 ) L O M (2 ) M (1) A = M (n11) U

M ( 2) M (1) A = M (1 ... M (n1 2) M (n11)U 1) A = M (1 M (21) ....M (n1 2) M (n11) U 1) 14444244443 L

Calculons M (11) . Pour cela vrifions que :


1 M = m21 m31
1 11

0 1 0

0 0 1

En effet :
1 M 111 M 1 = m21 m31
0 1 0 0 0 1 0 1 m 21 1 m31 0 0 1 0 = 0 1 0 0 1 0 0 0 1

dautre part : 1 M M = m21 m31


1 1 1 2

0 1 0

0 0 1

1 0 0

0 1 m32

0 1 0 0 = m 0 21 1 0 1 m31 m 1 144 2444 4 32 3 L

La matrice L est forme par les multiplicateurs et 1 la diagonale : 7

l ii = 1 l ki = mki
, k = i + 1,.., n

Algorithme de factorisation LU

for i = 1,...n 1 for k = i + 1,...n l ki = mki = aki / aii for j = i + 1,...n

ukj = akj mki aij


end end end Afin dutiliser efficacement la mmoire, on peut aussi utiliser la matrice de A pour stocker U et L. En effet , la partie infrieure la diagonale de la matrice obtenue aprs les liminations contient des zros, on pourra exploiter ces cases de la mmoire pour sauvegarder les multiplicateurs. Regardons lexemple suivant :

a11 a 21 a31 a41 a11 l 21 l 31 l 32

a12 a22 a32 a42 a12 u22

a13 a23 a33 a43 a13 u23 u33 a11 43

l 32 l 42

a11 a14 l a24 21 l 31 a34 a44 l 32 a14 a11 l u24 21 l 31 u34 a11 l 32 44

a12 u22
1 a32

a13 u23
1 a33

a1 42 a12 u22

a1 43 a13 u23 u33

l 32 l 42

l 43

a14 inchange u24 1 a34 a1 44 a14 u24 u34 l 44

Algorithme de factorisation LU

for i = 1,...n 1 for k = i + 1,...n l ki = aki aki / aii for j = i + 1,...n

ukj = akj akj mki aij


end end end

REMARQUES IMPORTANTES:

A la i-ime tape de la mthode, on a : n - i divisions pour le calcul des multiplicateurs ( i = 1,.., n 1 ) (n - i ) 2 soustractions et multiplications (pour k , j = i + 1,.., n )

En consquence, le nombre total de flops est :

(n i) + 2(n i)2 = k + 2k 2 =
i =1 k =1

n 1

n 1

n(n 1) n(n 1) 2 1 1 (2n 1) = n3 n 2 n +2 2 6 3 2 6 2 3 n pour n assez grand. 3

Le cot de la mthode de factorisation est de lordre de

Une permutation des lignes peut tre utilise pour viter des pivots nuls (pivotement partiel). Si P est la matrice de permutation, le systme original est transform en PA x = Pb . Remarquez que lordre des variables xi est inchang. Il est aussi possible de permuter des colonnes et des lignes pour avoir le plus grand pivot (pivotement complet). Toute permutation doit prserver la solution du systme original. En pratique, il est plus simple de programmer (et suffisant) la permutation des lignes. Dans Matlab, on peut calculer la factorisation dune matrice A par la commande >> [L,U,P]= lu(A); La matrice P est la matrice de permutation. Lorsque la matrice P concide avec la matrice identit, les matrices L et U sont les matrices recherches (telles que LU= A) autrement LU= P A Une fois la factorisation LU obtenue, on peut rsoudre facilement le systme et faible cot (comparativement la mthode de Gauss) aprs la substitution rtrograde, et ce pour diffrents vecteurs seconds membres b cest le cas par exemple en dynamique des systmes linaires. (voir exemple dutilisation de la factorisation LU par Matlab la page suivante)

Exemple dutilisation de la factorisation LU par Matlab :


>> A=[ -3 2 -1; 6 -6 7 ; 3 -4 4 ]; >> A A= -3 2 -1 6 -6 7 3 -4 4 >> [L,U,P]= lu(A); >> U U= 6.0000 -6.0000 7.0000 0 -1.0000 2.5000 0 0 -2.0000 >> P P= 0 1 0 >> L L= 1.0000 0 0 -0.5000 1.0000 0 0.5000 1.0000 1.0000 Trouvons la solution pour le second membre >> b= [-1 -7 -6]'; >> b= P*b; >> L\b; >> y= L\b; >> x= U\y x= 2 2 -1 1 0 0 0 0 1

10

4- Analyse de la prcision de la solution de la mthode dlimination de Gauss et sensibilit par rapport aux donnes :

Dfinition : norme des matrices :

*)

n A = A 1 = ma x ai j i =1 1 j n
A = A

(somme des colonnes)

**)

n = max ai j j =1 1 i n

(somme des lignes)

***)
A = A 2 = max
x 0

Ax x

(= max , pour une matrice symtrique dfinie positive = max , avec les valeurs propres de AT A)

Si A est symtrique et dfinie positive alors : A


A1 =

= max et

do

min
A =

( A) = A1

max min

_________________________________________________________________________

Soit x, la solution du systme :


Ax = b

et soit b une perturbation de b due aux erreurs de troncature ou aux imprcisions dans les donnes du problmes physiques. La solution du systme sera perturbe de xb tel que :
A( x + xb ) = b + b A xb = b

Daprs une proprit des normes :

xb A1

b
x

comme A x = b b A

11

do

xb
x

A1

b
b

ce qui donne lerreur relative de la solution pour une perturbation de b

Si la perturbation sur les donnes est petite alors lerreur sur la solution est petite condition que le nombre A A 1 ne tende pas vers linfini. Pour une matrice mal conditionne (i.e. presque singulire) le facteur A grand.

A 1 peut tre trs

tudions la sensibilit par rapport aux variations des coefficients de la matrice A. La solution perturbe satisfait : ( A + A) ( x + xA ) = b avec A x = b ce qui donne

A xA + A ( x + xA ) = 0 ou encore

xA = A1 A ( x + xA ) .
valuons maintenons la norme de la perturbation :

xA A1 x + xA

A = A1

A
A A <<. Donc, si la perturbation sur la matrice

Si la matrice est bien conditionne alors A 1

est petite (due par exemple aux erreurs darrondis) on a


Donc le facteur ( A) = A1

A
A

< <1

xA
x + xA

<<1 .

dcide de la sensibilit de la solution, cest le nombre de

conditionnement.

Effet des perturbations simultanes de b et de A : On peut avoir des perturbations de la matrice et du vecteur second membre dues par exemples aux erreurs darrondis lors de la factorisation ou aux imprcisions sur le modles physique/mathmatique, dans ce cas on peut montrer que :

12

x x + x

A b + A A b 1 ( A) A
k ( A)

2 1 Exemple : A = avec 0 2 + 1 detA = 2 ( 2 + ) = A est singulire si = 0 . On peut calculer : A 1 = 4 + . Dautre part : 1 1 + 1 3 1 A 1 = do A 1 = +1 2 + 2 Ainsi, le nombre de conditionnement de la matrice est :

( A ) = + 1 ( 4 + ) = + 7 + On voit que : ( A ) si 0
Calculons ( A ) selon la norme A 2 : Les valeurs propres correspondent : det( AT A I ) = 0 Si 0 alors ( A ) dans ce cas la matrice est mal conditionne Calcul du conditionnement par Matlab : Cond (A) Rpondre

12

Ax = b
1+ b= 2

1 avec b = 2

Exemple :
K ( A) est une proprit de la matrice

Si K ( A) est grand, la solution x est sensible aux donnes (b et A). Pour un K ( A) donn, un algorithme peut tre plus ou moins sensible aux erreurs darrondis.

13

Stabilit de lalgorithme de factorisation: Soit le vecteur rsidu : r = b A , tant la solution numrique obtenue par lalgorithme de x x Gauss avec pivotement et substitution rtrograde La solution est exacte si le rsidu est parfaitement nul. Or, cause des erreurs darrondis il va rester un rsidu r. Si x est la solution exacte, alors lanalyse thorique donne :
x x r : erreur relative ( A ) x b r

ainsi,

petit ne garantit pas une ncessairement bonne solution, cela dpend du b conditionnement.

Rgles du pouce :

* Llimination de Gauss avec le pivotement partiel pour le systme Ax = b donne une solution dont le rsidu est petit mme si ( A ) est lev. ** Si A et b sont stocks la prcision m , la solution numrique pour Ax = b pour nimporte quelle variante de llimination de Gauss est prcise d chiffres significatifs d = log10 ( m ) log10 ( ( A)) .

alors d = 6 4 = 2 il reste quand-mme 2 chiffres exemple : si n =1016 et ( A ) =1014 significatifs lorsquon travaille en double prcision avec une matrice trs mal conditionne! Preuve :

(A + E ) = b x

A b = r = E E x x

E tant la matrice derreur produite par lalgorithme de Gauss. Un rsultat empirique suggre quen pratique: E m A .

On en conclut que dpendant de A Revenons :

r m A

ainsi r est indpendant de ( A) , mais

tout de mme.

14

x x x

A b + A A b 1 K ( A) A

K ( A)

Si les perturbations sont commises par les erreurs darrondis dans le stockage des coefficients, ( A) = m A et b = m b
x
x + x

2 m K ( A) ~ 2 m K ( A) en supposant ( A ) 1 K ( A) m

Posons 10 d = m ( A ) d = log10 m log10 ( A ) La commande de MATLAB condest donne une estimation de ( A) .

2ime Partie : METHODES ITERATIVES


Algorithme de Jacobi

Dmarrer avec une solution x ( 0 )

Boucle :

k = 1, K nombre maximum ditrations


For i = 1, n
n

xi( k +1) = bi aij x (jk )


j =1 j i

end Test de convergence


x ( k +1) x ( k ) x (k )

Condition suffisante de convergence : aii

j =1

aij : matrice forte dominance diagonale

15

Exemple : 5 x1 x2 + 2 x3 = 1 2 x1 + x2 + 7 x3 = 32 2 x1 + 6 x2 3x3 = 2

Ce systme nest pas forte dominance diagonale, mais si on interchange les lignes (2) et (3) alors il respecte la condition. Dans ce cas, lalgorithme de Jacobi converge.

Programmer cet algorithme et tester le sur cet exemple.

Lalgorithme Jacobi peut tre amlior en termes de mmoire et de convergence en utilisant lalgorithme Gauss-Seidel :
i 1 n bi aij x (j k +1 ) aij xi( k ) j =1 j = i +1

xi( k +1 ) =

1 aii

nouvelles valeurs

anciennes valeurs

Cet algorithme converge pour nimporte quel estim initial dans le cas de matrice forte dominance diagonale et pour les matrices symtriques dfinies positives.

On peut aussi rcrire lquation ci-dessus sous la forme :

Dx ( k +1 ) = b Lx ( k +1 ) Ux( k ) avec la dcomposition : A = L + D + U L tant U respectivement la partie infrieure et suprieure et D la diagonale de A.


On peut aussi rcrire lalgorithme de GS sous la forme matricielle :

( D + L ) x( k +1 ) = b Ux ( k ) ou encore x( k +1 ) = ( D + L )1 Ux( k ) + ( D + L )1 b

en soustrayant de chaque membre de lquation ci-dessus le terme ( D + L ) x( k ) , on trouve :

16

( D + L ) ( x ( k +1 ) x ( k ) ) = b ( D + L + U ) x ( k ) = b Ax ( k )

Le vecteur r ( k ) = b Ax ( k ) reprsente le rsidu litration (k ) et x( k +1 ) x( k ) = x ( k ) reprsente la correction de la solution, do :

P x( k ) = r ( k ) et x( k +1 ) = x( k ) + x( k )

La mthode de Jacobi scrit aussi sous la forme ci-dessus avec P =D; ou encore
x ( k +1 ) = Bx ( k ) + y avec B = D 1 ( A D ) y = D 1 b

Avec B la matrice ditration. Pour lalgorithme de Gauss-Seidel la matrice ditration est B = ( D + L )1U

Si

est

la

solution

exacte

et

si

lalgorithme

est

convergeant,

alors

b = A1 x et lim x ( k ) = x k
Comme:

x( k +1 ) = Bx( k ) + y x = Bx + y

et que la solution exacte vrifie aussi :

alors aprs une soustraction on trouve:

e( k +1 ) = x ( k +1 ) x = B e( k ) = lerreur entre la solution


exacte et la solution de litration ( k ) .

do :

e( k +1 ) = B k e( o ) ce qui implique en utilisant la proprit de l ingalit triangulaire des


normes :
e( k +1 ) B
k

eo

On pose B = ( B) : le rayon spectral ( =

max

avec valeur propre de B ).

La condition de convergence exige que e ( k ) dcrot ce qui implique que : ( B) < 1 .

17

Vrifions cette condition dans le cas de la mthode de Jacobi o B = D 1 ( D A )

0 a = 21 a22 a n1 ann

a12 a11 0

an 2 ann

a1n a11 a 2n ann L 0 L

Si est une valeur propre de cette matrice, alors :

b
j =1

ij

x j = xi

i = 1, K , n

avec x le vecteur propre associ qui peut tre construit de telle faon que : x i = 1 et x j 1

b
j =1 n

ij

x j = xi

b
j =1

ij

x j bij
j =1

Ainsi, si

b
j =1

ij

< 1 alors max < 1 , ce qui est le cas des matrices forte dominance diagonale.

Mthode du gradient :

Revenons la construction de la solution par la mthode de Jacobi ou Gauss-Seidel. On a vu que la solution litration ( k + 1 ) dpend de la matrice P (matrice de pr-conditionnement) et du rsidu r ( k ) : x ( k + 1 ) = x ( k ) + P 1 r ( k )

Plus gnralement, on peut aussi considrer lalgorithme, avec P une matrice de prconditionnement choisir de telle faon que P-1 soit facile obtenir:

18

x ( k +1) = x ( k ) + k P 1 r ( k ) et k est un coefficient qui permet dacclrer la convergence. Pour obtenir le coefficient optimal on pose la fonctionnelle dite de lnergie associe au systme: f ( x ) = Si A est symtrique, alors f ( x) (dit le Hessien de A). Cherchons le coefficient k et la direction d ( k ) qui garantissent que la fonctionnelle dcrot au fil des itrations: f ( x( k +1 ) ) f x k . Or, en dveloppant lexpression de la fonction on trouve: f ( x ( k +1) ) = f ( x k ) + k f ' ( xk ) d k + 1 x Ax x b . 2 f '' ( x) = A

f ' ( x) = Ax b (le gradient de f ) et (f ( x))

( )

k2
2

d k f ''( xk ) d k

On a un problme de minimisation (i.e. fonction convexe) si : ( k ) = Ce qui est le cas si A est dfinie positive.

k2
2

d k f ''( xk ) d k 0 .

Dautre part, la condition de dcroissance de la fonction au cours des itrations f ( x ( k +1) ) f ( x k ) est garantie pour k petit si : f ' ( x ( k ) ) d ( k ) < 0 . Or : f '( x k ) = A x ( k ) b = r ( k ) et en posant d k = P 1 r k . Il suffit alors que P 1 soit dfinie positive pour satisfaire cette condition. Cherchons maintenant le coefficient k optimal. Cest--dire on va fixer d ( k ) et on va faire varier

k tel que : f ( x( k +1 ) ) f ( x( k ) ) .
Cela revient chercher qui minimise la fonction f ( x ( k ) + d ( k ) ) = g ( ) . Or, loptimum on a : g ' ( ) = f ' ( x ( k +1) ) d k = 0 On a vu que : f ' ( x ( k +1) ) = Ax ( k +1) b = Ax k + k Ad k b f ' ( x ( k +1) ) d k = Ax k d k + k d k Ad k b d k = 0 ( Ax b) d k rk d k k = k = k d Ad k d Ad k 19

Algorithme du Gradient :

Initialiser la solution Boucle sur les itrations r k = b Ax k d k = P 1 r k rk d k d k Ad k

k =

x k +1 = x k + k d k test de convergence end

Taux de convergence de lalgorithme du Gradient :

% % Resolution d'un systeme linaire par des algorithmes iteratifs % clc; clear all; %exemple de systeme: matrice definie positive (a diagonale dominante) A= [2 -1 0 0 ; -1 2 -1 0 ; 0 -1 2 -1 ; 0 0 -1 2];

20

b=[-1 0 0 -2 ]; %dimension de la matrice n=4; % Algorithmes 'Jacobi' [x,iter]= jacobi(A,b,n) 'Gauss-seidel' [x,iter]= seidel(A,b,n) 'Gradient: acceleration de Gauss-seidel' [x,iter]= gradient(A,b,n) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [x,iter]= jacobi(A,b,n); NITER= 100; eps= 0.0001; %initialisation x(1:n)=0.0; for iter=1:NITER for i=1:n; s=0.0; for j=1:n; if(i~=j) s= s-A(i,j)*x(j); end end x2(i)= (b(i)+s)/A(i,i); end norm= sqrt((x2-x)*(x2-x)'); if(norm <= eps) x= x2; return else x=x2; end end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [x,iter]= seidel(A,b,n); NITER= 100; eps= 0.0001; %initialisation x(1:n)=0.0; for iter=1:NITER xold= x; for i=1:n; s=0.0; for j=1:n; if(i~=j) s= s-A(i,j)*x(j); end end x(i)= (b(i)+s)/A(i,i);

21

end norm= sqrt((x-xold)*(x-xold)'); if(norm <= eps) return else end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [x,iter]= gradient(A,b,n); NITER= 100; eps= 0.0001; %initialisation x(1:n)=0.0; for iter=1:NITER xold= x; for i=1:n; s=0.0; for j=1:n; if(i~=j) s= s-A(i,j)*x(j); end end x(i)= (b(i)+s)/A(i,i); end % le vecteur de direction delx= x-xold; % le vecteur residu r= b'- A*x'; %Calcul du coefficient alpha num= delx*r; denom= delx*(A*delx'); alpha= num/denom; %mise jour de la solution x= xold+ alpha*delx; %test de convergence norm= sqrt((x-xold)*(x-xold)'); if(norm <= eps) return else end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =

22

Jacobi x= -1.1999 -1.3998 -1.5998 -1.7998 iter = 42 ans = Gauss-seidel x= -1.1999 -1.3999 -1.5999 -1.8000 iter = 24 ans = Gradient: acceleration de Gauss-seidel x= -1.2000 -1.4000 -1.6000 -1.8000 iter = 18 >>

Mthode du gradient conjugu :

Dans le cas o A est symtrique et P-1 positive un autre algorithme plus rapide est celui du gradient conjugu. Posons comme avant :

23

r k = b Ax k z k = P 1 r k rk d k d k Ad k x k +1 = x k + k d k

k =

Ce qui donne : r k +1 = r k k Ad k . On construit la nouvelle direction par : d k +1 = P 1r k +1 + k d k = z k +1 + k d k . Pour obtenir k on pose la condition que les directions sont A-orthogonales ou conjugues, cest--dire: d i . A d j = 0 pour i j . Ainsi, d k +1 . A d k = z k+1. Ad k + k d k . Ad k = 0 Ce qui donne :

k =

z k +1 Ad k d k Ad k

On peut prouver facilement que: r k +1.d k = 0 . En effet : r k +1.d k = (r k k Ad k ).d k = r k .d k k Ad k .d k = r k .d k r k .d k = 0 Ce qui donne : r k +1.d k +1 = r k +1.( z k +1 + k d k ) = r k +1.z k +1 Le dnominateur dans lexpression de k peut tre transform en :
d k Ad k = rk d k

rk zk

Sachant que : k z k +1 Ad k = z k +1 (r k +1 r k ) alors lexpression de k est aussi :

k =

z k +1 (r k +1 r k ) zk rk

Algorithme du gradient conjugu prconditionn : Initialiser la solution : x0

24

Poser : r 0 = b Ax 0 , z 0 = P 1r 0 = d 0 , Boucle sur les itrations : k=0,1,


rk d k rk zk = k d k Ad k d Ad k x k +1 = x k + k d k z k +1 = P 1 r k +1 z k +1 Ad k z k +1 (r k +1 r k ) k = k = d Ad k zk rk d k +1 = z k +1 + k d k

k =

r k +1 = r k k Ad k

test de convergence ; end

On montre que :
d k +1 = z k +1 + k ( z k + k 1d k 1 ) = i zi
i =0 k +1

Les directions sont alors des combinaisons linaires des vecteurs z i . Dautre part

d 0 = z0 sup posons que : d k = i ( P 1 A)i .z 0


i =0 k

alors: d k +1 = z k +1 + k d k = z k k P 1 Ad k + k d k = z + 'i ( P 1 A)i .z 0


k i =0 k +1

or z est une combinaison linaire de d k et d k 1 :


k

z k = d k k d k 1 ce qui prouve que d k +1est une combinaison linaire des vecteurs ( P 1 A)i .z 0 pour i = 0,..., k + 1. Ce qui veut dire que les directions successives sont combinaisons linaires des vecteurs z 0 , P 1 Az 0 , ( P 1 A) 2 z 0 ,.... qui forment le sous-espace de Krylov. Cela implique quaprs n directions on obtient la solution exacte (en faisant abstraction aux erreurs darrondis)!

25

Dans ce cas le taux de convergence est donn selon la relation :

26

27

28

29

30

Vous aimerez peut-être aussi