Académique Documents
Professionnel Documents
Culture Documents
méthodes directes
1 Conditionnement
Systèmes linéaires : généralités
Rappel sur les normes
Conditionnement d’un système linéaire
Erreurs d’arrondi ∝ κ(A) : exemple
2 Méthodes directes
Définition et mauvaises méthodes directes
Systèmes triangulaires
Méthode d’élimination de Gauss
Factorisation LU
Factorisation LU : stabilité et pivotage
3 Applications
Calcul de déterminant
Inversion matricielle
1 / 25
Systèmes linéaires : généralités
Problème :
Soit un système d’équations linéaires (ou simplement un système linéaire) :
a11 x1 + · · · + a1n xn = b1
a21 x1 + · · · + a2n xn = b2
···
am1 x1 + · · · + amn xn = bm
avec les inconnues xj , les coefficients du système aij et les seconds membres bi ,
1 ≤ i ≤ m, 1 ≤ j ≤ n .
Sous forme matricielle on a :
Ax = b . (1)
systèmes réguliers : m = n (A carré) et rang(A) = n (A inversible 1 )
⇒ (ce chapitre & celui sur les méthodes itératives)
systèmes surdéterminés de rang maximal : m ≥ n = rang(A)
⇒ résolution au sens des moindres carrés (chapitre correspondant)
systèmes sous-déterminés (m ≤ n) ou de rang non maximal
⇒ ne seront pas vus
1. condition équivalente est det(A) 6= 0
2 / 25
Rappel sur les normes
Une norme dans un espace vectoriel réel Rn doit satisfaire :
kvk > 0 , ∀ v ∈ Rn tel que v 6= 0
kλvk = |λ| kvk , λ ∈ R , v ∈ Rn
kv + wk ≤ kvk + kwk , v , w ∈ Rn
Pour toute norme vectorielle k · k la norme matricielle induite pour une
matrice A ∈ Rm×n (c.à.d. une matrice m × n) est
kAvk
kAk = max ;
v∈Rn , v6=0 kvk
on a en particulier
kAvk ≤ kAk · kvk .
4 / 25
Conditionnement d’un système linéaire
Soit un système linéaire
Ax = b . (1)
Le conditionnement d’un problème est
erreurs relatives résultat
κ = sup ,
erreurs relatives données
avec les erreurs données → 0 .
Cas 1 : perturbations δb de b
Si x + δx est la solution du système perturbé, on a aussi
A(x + δx) = b + δb
⇒ Aδx = δb (soustraction de (1))
⇒ kδxk = kA−1 δbk ≤ kA−1 k kδbk (norme matricielle)
et donc
kδxk/kxk kA−1 kkbk kA−1 kkAxk
κ = sup ≤ = ≤ kA−1 kkAk
kδbk kδbk/kbk kxk kxk
4 / 25
Conditionnement d’un système linéaire
Soit un système linéaire
Ax = b . (1)
Le conditionnement d’un problème est
erreurs relatives résultat
κ = sup ,
erreurs relatives données
avec les erreurs données → 0 .
Cas 2 : perturbations δA de A
Si x + δx est la solution du système perturbé, on a aussi
(A + δA)(x + δx) = b
⇒ Aδx + δA x + δA
| {zδx}
= 0 (soustraction de (1))
second ordre
−1
⇒ kδxk = kA δA xk ≤ kA−1 k kδAk kxk (norme matricielle)
et donc
kδxk/kxk
κ = sup ≤ kA−1 kkAk
kδAk kδAk/kAk
4 / 25
Conditionnement d’un système linéaire
Soit un système linéaire
Ax = b . (1)
Le conditionnement d’un problème est
erreurs relatives résultat
κ = sup ,
erreurs relatives données
avec les erreurs données → 0 .
Conclusion : Les erreurs dans les données A, b d’un système sont amplifiées
par (au plus)
6 / 25
Systèmes triangulaires
Exemple : système triangulaire inférieur
x1 = b1 /a11
a11 x1 = b1
x = (b2 − a21 x1 )/a22
a21 x1 + a22 x2 = b2 2
··· ⇒ ···
Pi−1
a x + a x + · · · + a x = b xi = bi − j=1 aij xj /aii
i1 1 i2 2 ii i i
···
···
8 / 25
Méthode d’élimination : forme matricielle
Exemple : (système de l’Exemple 1 dans l’Introduction)
2 −1 x1 1 (ligne du pivot)
−1 2 −1 x2 = 1 + 12 (ligne 1)
k1 −1 1 x3 1 +0 (ligne 1)
m1 x1
2 −1
x1
1
⇒ 3
−1 x2 = 3 (ligne du pivot)
2 2
k2 −1 1 x3 1 + 32 (ligne 2)
m2 x2
2 −1 x1 1
3
k3 ⇒ 2 −1 x2 = 32
1
m3 x3 3 x3 2
⇒ système triangulaire
9 / 25
Méthode d’élimination : forme matricielle
(1) (1) (1) (1)
a11 a12 ··· a1n x1 b1 (ligne du pivot)
(1)
a21 a(1) (1) (1) (1)
(1)
22 · · · a2n x2
b2 −a21 /a11 (ligne 1)
= .
.
.. .
.. . .
.. .. . ..
. .
(1) (1) (1) (1) (1) (1)
an1 an2 · · · ann xn bn −an1 /a11 (ligne 1)
(1) (1) (1)
(1)
a11 a12 · · · a1n x1 b1
(2) (2) (2)
a22 · · · a2n x2
b2
⇒
..
..
.. = .
.
⇒
···
. . .
.
(2) (2) (2)
an2 ··· ann xn bn
n−1
X 2n3
t: 2(n−k)2 +O(n2 ) = +O(n2 )
3
k=1
| {z }
→ n − k flops
→ 2(n − k)2 flops
→ 2(n − k) flops
10 / 25
Méthode d’élimination : forme matricielle
(1) (1) (1) (1)
a11 a12 ··· a1n x1 b1 (ligne du pivot)
(1)
a21 a(1) (1) (1) (1)
(1)
22 · · · a2n x2
b2 −a21 /a11 (ligne 1)
= .
.
.. .
.. . .
.. .. . ..
. .
(1) (1) (1) (1) (1) (1)
an1 an2 · · · ann xn bn −an1 /a11 (ligne 1)
(1) (1) (1)
(1)
a11 a12 · · · a1n x1 b1
(2) (2) (2)
a22 · · · a2n x2
b2
⇒
..
..
.. = .
.
⇒
···
. . .
.
(2) (2) (2)
an2 ··· ann xn bn
(1) (1) (1) (1)
a11 a12 ··· a1n x1 b1
(2) (2) (2)
a22 ··· a2n x2 b2
⇒ = . ⇒ système triangulaire
.. .. .. ..
. .
.
(n) (n)
ann xn bn
n−1 3
X 2n
t: 2(n−k)2 +O(n2 ) = +O(n2 )
3
k=1
| {z }
10 / 25
Méthode d’élimination : forme matricielle
(1) (1) (1) (1)
a11 a12 ··· a1n x1 b1 (ligne du pivot)
(1)
a21 a(1) (1) (1) (1)
(1)
22 · · · a2n x2
b2 −a21 /a11 (ligne 1)
= .
.
.. .
.. . .
.. .. . ..
. .
(1) (1) (1) (1) (1) (1)
an1 an2 · · · ann xn bn −an1 /a11 (ligne 1)
(1) (1) (1)
(1)
a11 a12 · · · a1n x1 b1
(2) (2) (2)
a22 · · · a2n x2
b2
⇒
..
..
.. = .
.
⇒
···
. . .
.
(2) (2) (2)
an2 ··· ann xn bn
n−1
X 2n3
Algorithme : Coût : 2(n−k)2 +O(n2 ) = +O(n2 )
3
k=1
pour k = 1, . . . , n − 1 | {z }
(k) (k)
`ik = aik /akk , i = k + 1, . . . , n → n − k flops
(k+1)
aij
(k) (k)
= aij − `ik · akj , i, j = k + 1, . . . , n → 2(n − k)2 flops
(k+1)
bi = bi
(k)
− `ik · bk ,
(k)
i = k + 1, . . . , n → 2(n − k) flops
11 / 25
Factorisation LU : exemple
2 −1 x1 1 (ligne du pivot)
−1 −1 x2 =
2 1 + 1 (ligne 1)
2
1−1 x3 1 +0 (ligne 1)
1 2 −1 x1 1 1
1 1 −1 2 −1 x2 = 1 1 1
2 2
0 1 −1 1 x3 0 1 1
| {z }| {z } | {z } | {z }
L1 A L1 b
11 / 25
Factorisation LU : exemple
2 −1 x1 1 (ligne du pivot)
−1 2 −1 x2 = 1 + 1 (ligne 1)
2
−1 1 x3 1 +0 (ligne 1)
1 2 −1 x1 1 1
1 1 −1 2 −1 x2 = 1 1 1
2 2
0 1 −1 1 x3 0 1 1
| {z }| {z } | {z } | {z }
L1 A L1 b
2 −1 x1 1
3
⇒ 2
−1 x2 = 32 (ligne du pivot)
−1 1 x3 1 + 32 (ligne 2)
| {z } | {z }
L1 A L1 b
11 / 25
Factorisation LU : exemple
2 −1 x1 1 (ligne du pivot)
−1 2 −1 x2 = 1 + 1 (ligne 1)
2
−1 1 x3 1 +0 (ligne 1)
1 2 −1 x1 1 1
1 1 −1 2 −1 x2 = 1 1 1
2 2
0 1 −1 1 x3 0 1 1
| {z }| {z } | {z } | {z }
L1 A L1 b
2 −1 x1 1
3
⇒ 2
−1 x2 = 32 (ligne du pivot)
−1 1 x3 1 + 32 (ligne 2)
| {z } | {z }
L1 A L1 b
11 / 25
Factorisation LU : exemple
2 −1 x1 1 (ligne du pivot)
−1 −1 x2 =
2 1 + 1 (ligne 1)
2
−1
1 x3 1 +0 (ligne 1)
1 2 −1 x1 1 1
1 1 −1 2 −1 x2 = 1 1 1
2 2
0 1 −1 1 x3 0 1 1
| {z }| {z } | {z } | {z }
L1 A L1 b
2 −1 x1 1
3
⇒ 2
−1 x2 = 32 (ligne du pivot)
−1 1 x3 1 + 32 (ligne 2)
| {z } | {z }
L1 A L1 b
1 2 −1 x1 1 1
3 3
1
2
−1 x2 = 1
2
2 2
3
1 −1 1 x3 3
1 1
| {z }| {z } | {z } | {z }
L2 L1 A L2 L1 b
2 −1 x1 1
3
⇒ 2
−1 x2 = 32 ⇒ système triangulaire
1
3
x3 2
| {z } | {z }
L2 L1 A L2 L1 b 11 / 25
Factorisation LU : exemple (suite)
On a donc un système triangulaire (U triangulaire supérieure par construction)
2 −1 x1 1
3
2 −1 x2 = 23
1
3 x3 2
| {z } | {z }
U = L2 L1 A L2 L1 b
1 1
1
avec L1 = 2 1 , L2 = 1 .
2
0 1 3 1
et le système initial
L−1 L−1 U x = b .
| 1 {z2 }
A
1 1
et donc L−1
1 = − 12 1 , L−1
2 = 1 .
−0 1 − 32 1
13 / 25
Factorisation LU : exemple (suite)
Propriété 2 : soient I1 , I2 deux matrices identités, C une matrice carrée et
v un vecteur ayant tous des dimensions compatibles ; alors
1 1 1
=
v I2 C v C
et
I1 I1 I1
1 1 = 1 .
v I2 C v C
1
et donc L = L−1 1 L2
−1
= − 12 1 est une matrice triangulaire
2
−0 − 3 1
inférieure avec éléments diagonaux valant 1 (facile à construire à partir de Li ,
i = 1, 2, et donc, à partir des facteurs qui multiplient les équations durant
l’élimination).
14 / 25
Factorisation LU : exemple (suite)
Conclusion de l’exemple : l’élimination de Gauss réduit le système initial
Ax = b
à un système triangulaire supérieur
L2 L1 A x = L2 L1 b .
| {z }
U
A partir des facteurs qui multiplient les équations durant l’élimination on peut
construire L = L−1 −1
1 L2 triangulaire inférieure telle que
LU = A ;
pour notre exemple on obtient
1 2 −1 2 −1
−1 1 3
−1 = −1 2 −1 .
2 2
−0 − 23 1 1
3 −1 1
| {z }| {z } | {z }
L U A
15 / 25
Factorisation LU : cas général
De manière générale on procède aux transformations successives
(1) (1) (1)
(1) (1) (1)
(1) (1) (1)
a11 a12 · · · a1n a11 a12 · · · a1n a11 a12 · · · a1n
(1) (1) (1) (2) (2) (2) (2)
a21 a22 · · · a2n a22 · · · a2n a22 · · · a2n
. . . ⇒ . . ... ⇒ ... ..
.
.. .. ..
.. ..
.. .
(1) (1) (1) (2) (2) (n)
an1 an2 · · · ann an2 · · · ann ann
| {z } | {z } | {z }
A L1 A U = Ln−1 ···L1 A
avec les transformations
1
1
−a(1) /a(1) 1
1
21 11 (2) (2)
L1 =
, L2
= −a32 /a22 1
,···
.. ..
. .
.. ..
.
.
(1) (1)
−an1 /a11 1 (2) (2)
−an2 /a22 1
et donc
A = LU
1
(1) (1)
a21 /a11 1
avec L = L1−1 · · · L−1
n−1 = .. .. ..
.
. .
(1) (1) (2) (2)
an1 /a11 an2 /a22 ··· 1 16 / 25
LU : algorithme et résolution de systèmes
Algorithme (élimination de Gauss) :
pour k = 1, . . . , n − 1
(k) (k)
`ik = aik /akk , i = k + 1, . . . , n
(k+1) (k) (k)
aij = aij − `ik · akj , i, j = k + 1, . . . , n
(k+1) (k) (k)
bi = bi − `ik · bk , i = k + 1, . . . , n (*)
résoudre le système triangulaire supérieur correspondant (**)
se décompose en trois étapes (avec bien entendu `ij = uji = 0 pour j > i,
L et U étant triangulaires inférieure et supérieure, respectivement) :
Factorisation LU :(L := (`ij ) , U := (uij ))
pour k = 1, . . . , n
(k)
ukj = akj , j = k, . . . , n
(k) (k)
`kk = 1 et `ik = aik /akk , i = k + 1, . . . , n
(k+1) (k) (k)
aij = aij − `ik · akj , i, j = k + 1, · · · , n
Résoudre : le système triangulaire inférieur Lb(n) = b équivalent à (*)
(n)
Résoudre : le système triangulaire supérieur U x = b équivalent à (**)
17 / 25
Factorisation LU : propriétés
Comme le transparent précédent le montre, la factorisation LU est
équivalente à l’élimination de Gauss ; en particulier, son coût est aussi
2 3
n + O(n2 ) .
3
Dans le cas de plusieurs seconds membres b :
I factoriser la matrice une seule fois (coût 23 n3 )
I répéter les étapes de résolution pour chaque second membre (coût 2n2 par
second membre)
10−20 10−20
1 0 1 1
L = 20 , U = =
10 1 0 1 1020 0 −1020
(1 1020 = −1020 en double précision) et donc
10−20 1
LU =
1 0
et la différence avec A dépasse largement u ; de même la solution obtenue par
U\(L\[1;2]) est ( 2 1 ), et la vraie solution (à 10−20 près) est ( 1 1 ).
Solution : permuter première et deuxième
lignes (pivotage des lignes)
;
1 1 0 1
la factorisation de P12 A = avec permutation P12 =
10−20 1 1 0
est stable
19 / 25
Factorisation LU avec pivotage
Pivotage partiel des lignes : on choisit d’éliminer (=choisir comme pivot) la
ligne qui possède l’élément maximal en valeur absolue dans la colonne du pivot
éliminer
−−−−−→ même pas nécessaire (L2 est identité) ;
on a alors
L2 P2 L1 P1 A = U. 20 / 25
Factorisation LU avec pivotage (suite)
Propriété 3 : Soit Pi une matrice de permutation élémentaire pour les
indices i et j et soit
I1
Lk = 1
v I2
avec I1 de dimensions (k−1) × (k−1) et v, I2 ayant les dimensions compatibles
(si k = 1 , le résultat reste valable avec I1 «supprimée» ).
Si k < i, j
I1
Pi Lk Pi = 1
w I2
avec w obtenu à partir de v en permutant les composantes i − k et j − k.
21 / 25
Factorisation LU avec pivotage (suite)
Propriété 3 : Soit Pi une matrice de permutation élémentaire pour les
indices i et j et soit
I1
Lk = 1
v I2
avec I1 de dimensions (k−1) × (k−1) et v, I2 ayant les dimensions compatibles
(si k = 1 , le résultat reste valable avec I1 «supprimée» ).
Si k < i, j
I1
Pi Lk Pi = 1
w I2
avec w obtenu à partir de v en permutant les composantes i − k et j − k.
ou encore
P A = LU
avec L triangulaire inférieure dont les éléments diagonaux valent 1 ,
U triangulaire supérieure et P est une matrice de permutation.
22 / 25
Factorisation LU avec pivotage (suite)
même nombre d’opérations (flops) que la factorisation LU, à savoir
2 3
n + O(n2 );
3
23 / 25
Calcul du déterminant de A
Soit la factorisation P A = LU avec :
A une matrice n × n
(k)
U triangulaire supérieure avec éléments diagonaux akk , k = 1, . . . , n
(1) (n)
⇒ det(U ) = a11 · · · ann
L triangulaire inférieure avec éléments diagonaux 1
⇒ det(L) = 1
P = Pn−1 · · · P1 avec det(Pi ) = ±1 (− si la permutation a effectivement
eu lieu, + si on n’a pas permuté)