ma261 cours3 col
DESCRIPTION
CMNTRANSCRIPT
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