MA261 Cours3 Col

28
MA261 Introduction au calcul scientifique MA261 Introduction au calcul scientifique août 2007 août 2007 @Eric Lunéville École Nationale Supérieure de Techniques Avancées Résolution Résolution des des systèmes linéaires systèmes linéaires

description

CMN

Transcript of MA261 Cours3 Col

MA261 Introduction au calcul scientifiqueMA261 Introduction au calcul scientifiqueaoût 2007août 2007 @Eric Lunéville

École Nationale Supérieure de Techniques Avancées

Résolution Résolution

des des

systèmes linéairessystèmes linéaires

ObjectifsObjectifs

1

Résoudre des systèmes linéaires de façon efficace

AX = BA matrice carree d’ordre n

B vecteur de dimension n

hyp : A est inversible

Méthode de résolution rapide et précise ?

• grand système (n de l’ordre du million pour les pbs de mécanique)

• problème de stockage (matrice symétrique, creuse, …)

• problème de temps calcul (algorithme efficace)

• contrôle de la qualité de la solution (stabilité et convergence)

si A n’est pas carree ou n’est pas inversible et si B ∈ ImAil existe un pseudo-inverse (methode des moindres carres)

2

Stabilité de la résolution d’un système linéaire

Soit δA une perturbation de la matrice A , δB une perturbation du vecteur B.

1) si ‖δA‖ ≤ 1/∥∥A−1

∥∥ alors A+δA est inversible

2) Soit X la solution de AX = B et Y = X + δX la solution de(A+δA)Y = B + δB alors

|δX||X| ≤

γ(A)

1− γ(A) ‖δA‖ / ‖A‖

( |δB||B| +

‖δA‖‖A‖

)

avec γ(A) = ‖A‖∥∥A−1

∥∥ conditionnement de A (γ(A) ≥1 et γ(I) =1)

A =

[2.23 1.21.3 0.7

]B =

[−2.06−1.2

]=⇒ X =

[−22

]

A =

[2.23 1.21.3 0.7

]B =

[−2.061−1.201

]=⇒ X =

[−1.51

]

|δB| = 10−3 γ(A) ∼104 |δX||X| ∼ 0.5 (50% d’erreur)

3

Principales méthodes de résolutionPrincipales méthodes de résolution

Méthode du déterminant (Cramer)

Op(detn) = nombre d’operations pour calculer un determinant d’ordre n

Op(detn)= n×Op(detn−1)=⇒Op(detn)= O(n!)

Op(A−1) =O(n+ 1!)

pour n = 50 on obtient Op(A−1) ∼1066 (temps de calcul > l’age de l’univers!)

calcul de n cofacteurs (determinant d’ordre n)et du determinant de la matrice

calcul de l’inverse d’une matrice d’ordre n :

INUTILISABLE !!!

4

Méthodes directes (nb fini d’opérations)

combinaison linéaire des équations du système permettant de se ramener à un système triangulaire :

Méthode d’élimination de Gauss, liée à la factorisation LU

UX = C avec U =

u11 u12 . . . u1n

u22 . . . u2n

. . .. . .

unn

se resout en calculant xn, puis xn−1, ...

Nombre d’operations de ces methodes ∼ n3

5

Méthodes itératives (nb infini d’opérations)

suite de vecteurs (X0 donne) :

Xk+1 = f(Xk) k ≥ 0 avec f(X) = X (X solution de AX = B)

exemple : methode du gradient a pas constant (A symetrique)

Xk+1 = Xk − α (AXk −B)

converge si ρ(I− αA) <1 (ρ(M) = maxi=1,n

|λi(M)| rayon spectral)

Il faut que le pas α ne soit pas trop grand.

Nombreuses autres méthodes : Gauss-Seidel, SSOR, grad. conjugué, GMRES, …

• convergence pas toujours garantie

• préconditionnement possible

• peuvent être très performantes

fournit une approximation de la solution −→ test d’arret |AXk −B| ≤ ε

6

Structure et stockage des matrices

Tirer partie de la structure creuse (nombreux termes nuls) de la matrice :

• gain de place mémoire (stockages adaptés)

• gain de temps de calcul (algorithmes adaptés)

Matrice symétrique ou antisymétrique : stockage de la moitié

Types de stockage

• stockage bande

xxxx

xxxxxx

xxxxxx

xxxxxx

xxxxxx

xxxxxx

xxxxxx

xxxx

a11 a12 a21 a22 a23 a32 a33 a34 ... an,n−1 ann

a21 a32 a43 ... an,n−1a11 a22 ... ann a12 a23 ... an−1,n

rangement diagonal

rangement ligne

7

• stockage profil (skyline)

xxxxx x xxx x xxx x xx

xxxxxx

xxxxxx

xxxxxxx x x x

xxxxxx

x x x x x x xxxxxxxx

xxxxxx

x x x x xxxx

profil superieur : p+i = max{j/aij �= 0}profil inferieur : p−i = min{j/aij �= 0}

aij = 0 si j < p−i ou j > p+i

2

4

1

2

3

31

4

p−4 = 3 p+4 = 5

5

a11 a12 a13 a14 a21 a22 a23 a31 a32 a33 ...rangement ligne

• variante ligne/colonne

• variante pour matrice non symétrique à profil symétrique

• existe des algorithmes d’optimisation de profil (Cutill-MacKee)

• compatible avec tous les algorithmes de résolution

• stockage morse

Seuls les termes non nuls sont stockés

xxx x xxx x

xxxx

xxxxxx

xxxxx x x x

xxxxxx

x x x x xxxxxx

xxxx

x x xxxx

2

4

1

2

3

31

4

5

pour chaque ligne i on stocke

• les coefficients non nuls

• les indices des colonnes des coefficients

8

ligne 1 a11a12a14 1 2 4ligne 2 a21a23 1 3

• double la taille du stockage

• peut être moins intéressant que le stockage profil

• stockage des matrices creuse (sparse) dans MATLAB

• n’est pas compatible avec les algorithmes de factorisation

• très adapté aux méthodes itératives

Méthodes directesMéthodes directes

9

Résolution des systèmes triangulaires

L matrice triangulaire inferieure : Lij = 0 si j > i

U matrice triangulaire superieure : Uij = 0 si j < i

On a detL =∏i

Lii detU =∏i

Uii

et L (resp. U) est inversible ssi Lii �= 0 ∀i (resp. Uii �= 0∀i)

Algorithmes de résolution

pour i = 1, n

Xi = Bi

pour j = 1, i− 1

Xi = Xi − LijXjXi = Xi/Lii

Resolution de LX = B

Xi = Bi

Resolution de UX = B

pour i = n, 1

pour j = i+ 1, n

Xi = Xi −UijXjXi = Xi/Uii

Xi = Xi − LijXj

Resolution de LX = BX = B

pour j = 1, n

Xj = Xj/Ljj

pour i = j + 1, n

variante colonne

10

Nb operations ∼ n2

11

en stockage profil

pour i = 1, n

Xi = Bi

Xi = Xi − LijXjXi = Xi/Lii

Resolution de LX = B

Xi = Bi

Resolution de UX = B

pour i = n, 1

Xi = Xi − UijXjXi = Xi/Uii

pour j = p−i , i− 1 pour j = i+ 1, p+i

Elimination de Gauss

Se ramener à un système triangulaire supérieur par combinaison linéaire de lignes

A1•

A2•

A3•

...

A11 A12 A23 · · ·A21 A22 A23 · · ·A31 A32 A33 · · ·...

......

. . .

itération 1 si A11 �= 0

A12• = A2• −A21

A11A1• B12 = B2 −

A21

A11B1

A13• = A3• −A31

A11A1• B13 = B3 −

A21

A11B1

plus generalement :

A1i• = Ai• −Ai1

A11A1• B1i = Bi −

Ai1

A11B1 i = 2, n

12

B1B2B3...

matrice A1 a l’issue de la premiere iterations

A1 =

A11 A12 A23 · · ·0 A

122 A

123 · · ·

0 A132 A

133 · · ·

0...

.... . .

B1B12B13...

première ligne non modifiée

itération 2

On recommence le processus sur la sous matrice dordre n− 1A122 A123 · · ·A132 A

133 · · ·

......

. . .

B12B13...

et ainsi de suite on realise n− 1 iterations

13

14

Algorithme d’élimination de Gauss

pour k = 1, n− 1

si |Akk| ≤ ε stop pivot trop petitpour i = k + 1, n

p = Aik/Akk

pour j = k + 1, n

Aij = Aij − pAkjAik = 0

Bi = Bi − pBk

algorithme auto-écrasant

Nb operations ∼ 23n

3

15

Stratégie de permutation

Pivot très petit ou nul à l’itération k

A11 A12 A13 · · · A1n

0 0 A23 · · · · · ·0 0 Akk · · · Akn

......

.... . . · · ·

...... Ank · · · Ann

A11 A12 A13 · · · A1n

0 0 A23 · · · · · ·0 0 Akk · · · Akn

......

... · · · · · ·...

... Ai0k · · · Ai0n

......

... · · · · · ·

recherche de i0 > k tel que|Ai0k| ≥ |Aik| ∀i > k

si |Ai0k| ≤ ε alorsmatrice ”non inversible”

permutation des lignes k et i0

16

Algorithme avec permutation

On ne réalise pas réellement les permutations, on utilise un vecteur q contenant les indices permutés

pour k = 1, n− 1

pour i = k + 1, n

pour j = k + 1, n

pour i = 1, n q(i) = i (initialisation du vecteur de permutation)

trouver i0 > k tel que |Ai0k| ≥ |Aik| ∀i > ksi |Ai0k| ≤ ε alors matrice ”non inversible”

si |Akk| ≤ ε

t = q(k) q(k) = q(i0) q(i0) = t (permutation des indices)

p = Aq(i)k/Aq(k)k

Aq(i)j = Aq(i)j − pAq(k)jAq(i)k = 0

Bq(i) = Bq(i) − pBq(k)

17

Elimination avec un stockage profil

pour k = 1, n− 1

si |Akk| ≤ ε stop pivot trop petitpour i = k + 1, n

p = Aik/Akk

Aij = Aij − pAkjAik = 0

Bi = Bi − pBk

pour j = max(k + 1, p−i ), p+i

même algorithme

boucle seulementsur les coefficients non nuls

L’algorithme avec permutation n’est pas compatible avec le stockage profil

car le profil se modifie

Factorisation LU

18

L’élimination de Gauss est une méthode de factorisation

A = LUL triangulaire inf.U triangulaire sup.

Iteration k

A(k) = L

(k)A(k−1) L

(k) =

1. . .

1...

. . .

−A(k−1)i,k

A(k−1)k,k

. . .

... 1

U = A(n−1) = L(n−1)...L(1)A

detL(k) = 1 −→ L(k) inversible

(L(k)

)−1= 2I− L(k)

triangulaire inferieure

L=(L(1))−1

...(L(n−1)

)−1triangulaire inferieure

finalement A = LU avec Lii = 1 ∀i = 1, n

19

Algorithme de factorisation

pour k = 1, n− 1

Lkk = Akk −∑j<k

LkjUjk

pour i = k + 1, n

Lik =

(Aik −

∑j<k

LijUjk

)/Ukk si Ukk �= 0

pour i = k + 1, n

Lkk = 1

Uki =

(Aki −

∑j<k

LkjUji

)

calcul de L colonne par colonne et U ligne par ligne

variante L ligne par ligne et U colonne par colonne (cf poly)

formules obtenues a partir de A = LU −→ Aik=∑LijUjk

Nb operations∼ 2n3/3

20

Permutation de ligne

Pik,k =

1. . .

0 · · · 1 · · ·...

. . ....

1 · · · 0 · · ·...

... 1

k

ik

A(k) = L(k)Pik,kA

(k−1)

On montre alors (voir poly p45) que

matrice de permutation des lignes ik et k (ik > k) a l’iteration k

avec L(k) = Pin−1,n−1 · · ·Pik+1,k+1L(k)Pik+1,k+1 · · ·Pin−1,n−1 (triang. inf.)

si A est inversible, il existe une matrice de permutation P telle que

PA = LUL mat. triang. inf.a diag. unite, U mat. triang. sup

si Ukk �= 0 (|Ukk| ≤ ε) echec de l’algorithme → strategie de permutation

U = L(n−1)L(n−2) · · · L(1)Pin−1,n−1 · · ·Pi1,1A

Factorisation LU des matrices creuses

P− (resp P+) le profil inferieur (resp. superieur) de A

Aik = 0 pour k < P−i ou k > P+i

formules de l’elimination de Gauss

Lik =

(Aik −

∑j<k

LijUjk

)/Ukk

Uki =

(Aki −

∑j<k

LkjUji

)

si Lij = 0 j < k et j < P−i alors Lik = 0 pour k < P−i ou k > P+i

idem pour Uki avec P+

Par recurrence on montre que L a P− pour profil inferieuret U a P+ pour profil superieur :

la factorisation LU sans permutation conserve les profils

21

Algorithme de factorisation, stockage profil

pour k = 1, n− 1

pour i = k + 1, n

Lkk = 1

Lkk = Akk −∑

P−

k≤j<k

LkjUjk

si k ≥ P−i alors

pour i = k + 1, P+k

Uki =

Aki −

P−

k≤j<k

LkjUji

Lik =

Aik −

P−

k≤j<k

LijUjk

/Ukk si Ukk �= 0

22

23

Variante Gauss-Jordan

A partir de la factorisation A = LU on obtient facilement la factorisation :

A = LDU

avec D matrice diagonale Dii = Uii et L et U a diagonale unite

relation simple entre U et U

Uik = Uik/Ukk = Uik/Dkk i = 1, k

(unique)

Cas des matrices symétriques

Si A est une matrice symetrique factorisable LUalors A admet la factorisation

A = LDLt

avec D matrice diagonale et L matrice triang. inferieure a diag. unite

dms A = At et A = LDU =⇒ LDU = UtDLt

unicite de la factorisation LDU =⇒ Ut = L et U = Lt

pour k = 1, n

Lkk = 1

Dkk = Akk −∑j<k

L2kj

pour i = k + 1, n

Lik =

(Aik −

∑j<k

LijLjk

)/Dkk si Dkk �= 0

algorithme

Nb operations∼ n3/3

24

25

Cas des matrices symétriques définies positives

definie positive : (AX,X) > 0 ∀X �= 0

Si A est une matrice symetrique definie positive et factorisable LUalors A admet la factorisation

A = LDLt avec Dii > 0 ∀i = 1, n

dms 0 < (AX,X) = (LDLtX,X) = (DLtX,LtX)

Lt inversible (diag. unite), ∀Y �= 0 on prend X = (Lt)

−1Y �= 0

=⇒ (DY, Y ) > 0 ∀Y �= 0 =⇒ Dii > 0 ∀i = 1, n (D matrice diagonale)

On peut introduire√D matrice diagonale de coefficient

√Dii

poser L = L√D pour obtenir

la factorisation dite de Choleski A =LLt

26

Algorithme de factorisation de Choleski

pour k = 1, n

Lkk =

(Akk −

∑j<k

L2kj

) 12

pour i = k + 1, n

Lik =

(Aik −

∑j<k

LijLjk

)/Lkk

forme colonne

pour k = 1, n

Lkk =

(Akk −

∑j<k

L2kj

) 12

pour i = 1, k − 1

Lki =

(Aki −

∑j<i

LkjLij

)/Liiforme ligne

Nb operations∼ n3/3

S’adapte au stockage profil

17

ConclusionsConclusions

27

• Méthode du déterminant à proscrire

• Résolution facile des systèmes triangulaires

• Méthodes de type factorisation

• peuvent être efficaces (stockage profil)• cas particuliers (symétriques, def pos.)

• Méthodes itératives adaptées au stockage morse (« optimal »)