Vous êtes sur la page 1sur 6

Factorisation LU

présenté par : Anouar Bouazza


par Eric Brunelle
IHES 2015 - 2016

1 Introduction
La factorisation LU d’une matrice An×n est une astuce très importante dans
le domaine de l’analyse numérique. Sa base est très simple, mais ses applica-
tions sont très nombreuses et très utiles. Avant de montrer ces applications,
regardons ce qu’est la factorisation LU et comment l’obtenir.

2 L’obtention de la factorisation
2.1 La théorie
La factorisation LU consiste à écrire une matrice non-singulière A comme le
produit de deux autres matrices L et U . L est une matrice triangulaire in-
férieure ayant des 1 sur la diagonale et U une matrice triangulaire supérieure.
On notera les éléments de ces deux matrices de la manière suivante:
   
1 0 0 ... 0 u1,1 u1,2 . . . u1,n−1 u1,n
 l2,1 1 0 ... 0   0 u2,2 . . . u2,n−1 u2,n 
   
 l3,1 l3,2 1 . . . 0 
L= U =  0 0 . . . u3,n−1 u3,n 

 .. .. . . .. ..   .. .. .. .. 

. .
 . . . . .   . . . . . 
ln,1 ln,2 ln,3 . . . 1 0 0 0 . . . un,n

La meilleure façon d’obtenir cette factorisation, est d’utiliser l’élimination


de Gauss. Nous savons que nous pouvons écrire l’élimination grâce à un
produit de matrices élémentaires Ei . Commençons par éliminer la première
colonne de la matrice A. On peut donc faire les transformations élémentaires
suivantes sur la matrice A
−mi1 L1 + Li → Li

1
où mi1 = ai1 /a11 et ce pour tous les i = 2..n et Li est la iime ligne de la matrice
A. On peut alors écrire cette transformations sous une forme matricielle.

1 0 0 ... 0 a1,1 a1,2 . . . a1,n−1 a1,n


  
.. .. . . . .  . .. .. .. .. 

 . . . .. .. 
  .. . . . . 
EA =  −mi,1 . . . 1 . . . 0   ai,1 ai,2 . . . ai,n−1 ai,n 
  
.. .. . . . . . .. .. .. .. 
. .. ..   ..
  
 . . . . . . 
0 0 0 ... 1 an,1 an,2 an,3 . . . an,n

Par la suite, on trouve l’inverse de cette matrice E.

1 0 0 ... 0
 
 .. .. . . .
. ..
.. 
 . . . 
E −1 =  mi,1 . . . 1 . . . 0 
 
 . .. . . . .. 
 .. . . .. . 
0 0 0 ... 1

On utilise le même principe pour éliminer les éléments sous la diagonale de


la matrice A.

−mij Lj + Li → Li

où mij = aij /ajj pour les i = j + 1..n. Ainsi, la forme matricielle de cette
élimination est:

Ek Ek−1 ...E2 E1 A = U

Alors,

A = E1−1 E2−1 ...Ek−1


−1
Ek−1 U

Puisque tous les Ei−1 sont des matrices triangulaires inférieures, alors le pro-
duit de ces dernières l’est aussi et, dans le cas ici, possède des 1 sur la
diagonale. Ainsi, cette matrice résultant de ce produit est notre matrice L
et, U est ce qui reste après l’application de l’élimination de Gauss. Nous
pouvons alors mettre sur pied un algorithme pour trouver L et U à l’aide
d’un ordinateur. Cela nous permettra d’expliquer certains avantages de la
factorisation LU par la suite.

2
2.2 Algorithme de factorisation LU
u1,1 = a1,1

Pour j = 2..n
− u1,j = a1,j
− lj,1 = aj,1 /a1,1
fin

Pour i = 2..n − 1 P
− ui,i = ai,i − i−1 k=1 li,k uk,i
− Pour j = i + 1..nP
− ui,j = ai,jh− i−1 k=1 li,k uk,j i
lj,i = ui,i aj,i − i−1
1
P
− l u
k=1 j,k k,i
− f in
f in
Pn−1
un,n = an,n − k=1 ln,k uk,n

Regardons un exemple afin de mettre les idées bien en place.

Exemple 1.
 
4 −9 2
A =  2 −4 4 
−1 2 2

Nous avons que m21 = 2/4 = 0.5 et m31 = −1/4 = −0.25. Ce nous donne
 
4 −9 2
A ∼  0 0.5 3 
0 −0.25 2.5

Continuons  m32 = −0.25/0.5


l’élimination en posant  = −0.5
 et nous obtenons
1 0 0 4 −9 2
que L =  0.5 1 0  et U =  0 0.5 3  Nous avons donc
−0.25 −0.5 1 0 0 4
obtenu la factorisation LU .

3
3 Utilité
Voyons maintenant en quoi cela peut être utile. Pour ce faire, nous allons
comparer le nombre d’opérations nécessaire pour résoudre un système linéaire
Ax = b avec la méthode d’élimination de Gauss et par la méthode de sub-
stitution avant-arrière qui demande de connaître la factorisation LU de A.
Commençons par l’élimination de Gauss-Jordan.

3.1 Élimination de Gauss


L’élimination de Gauss est la méthode utilisée dans les cours d’algèbre linéaire
élémentaire. On prend la matrice A et on l’augmente de b. On fait ensuite
des opération élémentaires sur les lignes et on réduit la partie de gauche en
une matrice identitée. Le vecteur à droite sera alors la solution x cherchée.
Prenons un exemple. Soit
    
2 −1 2 x 15
 4 3 −3   y  =  −25  (1)
−2 2 1 z −4
On crée la matrice augmentée pour ce système et on fait l’élimination de
Gauss.
 
2 −1 2 | 15
[A|b] =  4 3 −3 | −25  (2)
−2 2 1 | −4
 
2 −1 2 | 15
∼  0 5 −7 | −55  (3)
0 1 3 | 11
 
2 −1 2 | 15
∼  0 5 −7 | −55  (4)
0 0 1 | 5
 
2 −1 0 | 5
∼  0 1 0 | −4  (5)
0 0 1 | 5
 
1 0 0 | 1/2
∼  0 1 0 | −4  (6)
0 0 1 | 5
(7)

4
Nous obtenons ainsi la solution x = −1/2, y = −4 et z = 5. Regardons main-
tenant l’algorithme afin de programmer la méthode. Nous compterons par
la suite le nombre d’opérations nécessaires.

Nommons B la matrice A augmentée de b. Ainsi nous avons que B = (bi,j )


où 1 ≤ i ≤ n et 1 ≤ i ≤ n + 1.

3.2 Algorithme de la méthode de Gauss

Pour i = 1, .., n − 1
− Pour j = i + 1, .., n
− mj,i = bj,i /bi,i
− Pour k = i, .., n + 1
− bj,k = bj,k − mi,j bi,k
− fin
− fin
fin
Après cette étape, la matrice B est triangulaire inférieure. Il reste à la sub-
stitution arrière.

xn = bn,n+1 /bn,n
Pour i = n −h 1, .., 1 i
xi = bi,n+1 − nj=i+1 bi,j xj /bi,i
P

fin

3.3 Nombre d’opérations


Nous obtenons ainsi le vecteur x. Comme nous l’avons mentionné plus tôt, ce
qui est important de savoir pour comparer deux algorithme, c’est le nombre
de multiplication et de division demandé par chacun. C’est ces opérations qui
demandent plus grand temps de calcul à l’ordinateur, l’addition et la sous-
traction sont beaucoup plus rapide. Pour cet algorithme, on peut vérifier que
3 2 −5n
la première étape demande 2n +3n 6
multiplication/division. La deuxième
2
étape (la substitution arrière) en demande n 2+n . Ainsi, au total l’algorithme
3 2 −2n
nécessite 2n +6n
6
. Ainsi, on peut dire que le nombre d’opérations est de
l’ordre 3.

5
Supposons maintenant que nous connaissons la factorisation LU de la
matrice A. Ainsi, le système Ax = b peut se réécrire LU x = b. Posons
z = U x. Nous avons donc que Lz = b. Ce système est rapide à résoudre,
car la matrice L est triangulaire inférieure. Voici l’algorithme pour trouver
z, dit la substitution avant.

Algorithme de substitution avant


z1 = b 1
Pour i = 2...n P
− zi = bi − i−1
j=1 Li,j zj
fin

Il ne reste plus que résoudre le système U x = z. Il ne faut pas oublier


que U est une matrice triangulaire supérieure. Ceci est la subtitution arrière
qui est la même que la deuxième partie de l’algorithme de Gauss.

Algorithme de substitution arrière


xn = zn /Un,n
Pour i = n −h 1, .., 1 i
Pn
− xi = zi − j=i+1 Ui,j xj /Ui,i
fin

Comptons le nombre d’opération de ces deux algorithmes. Pour la sub-


stitution
Pn avant, il yn2a−ni − 1 multiplications à l’étape i. Ainsi, le nombre total
est i=1 (i − 1) = 2 . Pour la susbtitution arrière, on a n − i + 1M/S pour
Pn−1 2
l’étape i et puisque i = 1...n − 1, on au total i=1 (n − i + 1) = n 2+n . Ainsi,
l’algorithme pour résoudre le système lorsque l’on connaît la factorisation
LU de A demande n2 multiplications/divisions.

Le comptage des opérations nous permet donc de conclure que si nous


connaissons la factorisation LU et que n est grand, il est plus plus rapide
d’utiliser la méthode de factorisation LU , O(n2 ), que la méthode de Gauss,
O(n3 ).

Vous aimerez peut-être aussi