Vous êtes sur la page 1sur 25

U.S.T.H.B.

L2-RO / Section A
Faculté de Mathématiques Analyse Numérique 2
Département de Recherche Opérationnelle Année universitaire 2022-2023

Chapitre 1 : Résolution des systèmes linéaires

1 Introduction
Soit à résoudre le système linéaire suivant, de n équations et n inconnues (n ∈ N∗ ) :


 a11 x1 + a12 x2 + ... + a1n xn = b1


 a21 x1 + a22 x2 + ... + a2n xn = b2
.. . . . (1.1)




.
an1 x1 + an2 x2 + ... + ann xn = bn

Ce système s’écrit sous forme matricielle :

Ax = b . . . (1.2)

Où :      
a11 a12 ... a1n x1 b1

 a21 a22 ... a2n 

 x2 


 b2 

A = (aij )1≤i,j≤n =  .. . . . .. 
 , x =  ..  et b =  .. 
. .  . .
    
    
an1 an2 ... ann xn bn
Résoudre le système (1.1) revient à déterminer les composants xi (i = 1, n) du vecteur x sachant
que A et b sont donnés.
Par quelle méthode peut on résoudre ce ce système ?

1.1 Méthode de Cramer


Cette méthode repose sur les déterminants. Si A est une matrice non singulière (inversible) c’est-
à-dire detA ̸= 0 alors le système (1.1) admet une solution unique x donnée par les formules de
Cramer suivantes :

detAi
xi = , 1 ≤ i ≤ n,
detA
Où la matrice Ai est obtenue en remplaçant, dans A, la ième colonne par b.

1.1.1 Coût de la méthode

Estimons le nombre d’opérations élémentaires (additions, multiplications, divisions) nécessaires


pour résoudre notre système par la méthode de Cramer.
Tout d’abord on doit calculer n + 1 déterminants (n numérateurs différents et le dénominateur
commun) puis effectuer n divisions pour obtenir les xi (i = 1, n).
Le coût de calcul d’un déterminant est à l’ordre de 2n! (multiplications et additions).

1
Il en résulte que la résolution de (1.1) par les formules de Cramer nécessite environ 2(n + 1)!
opérations.

Question : Combien de temps mettra un ordinateur capable d’effectuer 109 opérations par
seconde pour résoudre un système de dimension n = 20 par la méthode de Cramer ?
Réponse : 3240 ans environ ! ! !

En pratique et dans certains domaines d’applications, on aura n ≥ 1000. Il est donc impossible
de résoudre de tels systèmes par la méthode de Cramer. Par conséquent, il faut opter pour
d’autres méthodes moins gourmande en temps de calcul pour résoudre des systèmes de grande
taille.

En analyse numérique, nous pouvons résoudre le système Ax = b par deux types de méthodes :
les méthodes directes et les méthodes indirectes ou itératives.

— Les méthodes directes : sont utilisées seulement si le nombre d’opérations du système


n’est pas trop élevé (généralement n ≤ 100).

— Les méthodes itératives : sont indispensables dès que la taille du système est grande
(n ≥ 100), ce qui ne les empêche pas évidement d’être également utiles pour les petits
systèmes.

2 Méthodes directes
On appelle méthode directe de résolution du système linéaire Ax = b une méthode qui aboutit
à la solution du problème au bout d’un nombre fini d’opérations en fonction de la dimension
du système. Cette méthode, mis à part les erreurs d’arrondis, conduit à la solution exacte du
système.

2.1 Systèmes particuliers


Soit un système linéaire dont la matrice A est inversible, nous allons citer quelques systèmes
particuliers pour les quelles la résolution est très simple et non couteuse.
Définition 2.1.1 (Système diagonal)
Un système diagonal s’écrit sous la forme :


 a11 x1 = b1


 a22 x2 = b2
... . . . (1.3)




ann xn = bn

La matrice associée à ce système est :

2
 
a11 0 ... 0
.. .
. ..
 
 0 a22 
A=
 
 .. .. .. 

 . . . 0 

0 ··· 0 ann
A est une matrice diagonale qui vérifie aii ̸= 0 pour 1 ≤ i ≤ n (car A est inversible). On a
n
Y
det(A) = aii ̸= 0 alors il existe une unique solution du système (1.3) donnée par :
i=1
bi
xi = , i = 1, ..., n
aii
Le nombre d’opérations élémentaires nécessaires pour résoudre un tel système est n divisions
seulement.

Définition 2.1.2 (Système triangulaire supérieur)


Un système triangulaire supérieur s’écrit sous la forme :

a11 x1 + a12 x2 + ... + a1n xn = b1





0 a22 x2 + ... + a2n xn = b2




.. .. .. .. ..


. . . . . . . . (1.4)

 .. .. . . .. ..
. . . . .





0 ··· ··· 0 ann xn = bn

La matrice associée à ce système est :


 
a11 a12 ... a1n

 0 a22 a2n 

A=  .. . . . . . 

 . . . .. 

0 · · · 0 ann
n
Y
A étant inversible donc det(A) = aii ̸= 0 d’où aii ̸= 0, ∀i alors il existe une unique solution
i=1
du système (1.4) et on peut le résoudre par l’algorithme dit de remonté :

bn

xn = ,



ann



 n
X

 bi − aij xj
j=i+1

i = n − 1, n − 2, ..., 1.


 xi = ,
aii

Le nombre d’opérations élémentaires nécessaires à l’algorithme de remonté est :



 n
 divisions
n(n−1)
1 + 2 + ... + (n − 1) = 2 additions
n(n−1)

1 + 2 + ... + (n − 1) = 2 multiplications

Soit au total n + 2( n(n−1)


2
) = n2 opération élémentaire.
Définition 2.1.2 (Système triangulaire inférieur)
Un système triangulaire inférieur s’écrit sous la forme :

3


 a11 x1 0 ··· ··· ··· 0 = b1
..


 ...
a21 x1 + a22 x2 . = b2





 .. .. ... ... .. ..
. . . .


.. .. .. .. .. . . . (1.5)



 . . . . .

 .. .. .. ..
. . . 0 .





an1 x1 + an2 x2 + ··· + ann xn = bn

La matrice associée à ce système est :


 
a11 0 ... 0
 ... .. 
 a21 a22 . 
A=
 
 .. .. 

 . . 0 

an1 a2n · · · ann
n
Y
A étant inversible donc det(A) = aii ̸= 0 d’où aii ̸= 0, ∀i alors il existe une unique solution
i=1
du système (1.5) et on peut le résoudre par l’algorithme dit de descente :

b1

x1 = ,





 a11
i−1

X

 bi − aij xj

 j=1
xi = , i = 2, 3, ..., n.



aii
Le nombre d’opération élémentaires reste le même que l’algorithme de remonté (n2 ).

2.2 Méthode d’élimination Gauss


La méthode d’élimination de Gauss est une méthode générale de résolution d’un système li-
néaire Ax = b, dont la matrice A est carrée (inversible ou non) ou même rectangulaire.
La méthode de Gauss consiste à transformer le système Ax = b en un système triangulaire
supérieure équivalent à l’aide d’un algorithme d’élimination convenable.

Définissons la matrice augmentée (A, b) du système Ax = b comme étant la matrice que l’on
obtient en ajoutant le membre de droite b du système à la matrice A d’ordre n, c’est à dire :
 
a11 · · · a1n b1
 . ... .. .. 
(A|b) =  ..

.  c’est une matrice de taille n × (n + 1)
. 
an1 · · · ann bn
Pour transformer le système Ax = b en un système triangulaire il suffit d’utiliser des opérations
élémentaires sur les lignes de la matrice A pour obtenir un nouveau système équivalent. Ces
opérations sont :

1. Multiplier une ligne i de la matrice A par un scalaire α ∈ R∗ : Li ← αLi .


2. Permuter les lignes i et j de A : Li ↔ Lj .

4
3. Additionner une ligne i avec un multiple d’une autre ligne j : Li ← Li + αLj .

Théorème 2.2.1. Soit le système linéaire Ax = b où A est une matrice carrée inversible. Si
on remplace la matrice augmentée (A|b) par (A′ |b′ ) obtenue de (A|b) à l’aide des opérations
précédentes alors les deux systèmes Ax = b et A′ x = b′ ont la même solution.

2.2.1 Algorithme de Gauss

Considérons le système (1.1) définie précédemment avec sa matrice carrée A = (aij )1≤i,j≤n et
posons au départ :
A(1) = A et b(1) = b

(1) (1) (1)


(1) (1)
 
a11 a12 · · · a1n b1 L1
 (1) (1) (1) (1)  (1)
 a21 a22 · · · a2n b2   L2
(A(1) |b(1) ) = 
 .. .. .. .. ..  ..

 . . . . .  .
(1) (1) (1) (1) (1)
an1 an2 · · · ann bn L n

(1)
Étape 1 : Supposons que le premier élément diagonal a11 ̸= 0. On effectue les opérations
suivantes sur la matrice augmentée (A(1) |b(1) ) :

(2) (1)



 L1 ↔ L1
(1)
(2) (1) (1) (1) (1) ai1

 Li = Li − αi1 L1 avec αi1 = (1)
2≤i≤n
a11

On obtient alors un nouveau système, et par conséquent une nouvelle matrice (A(2) |b(2) ) définit
comme suit :

(1) (1) (1)


(2) (1)
 
a11 a12 · · · a1n b1 L1
 (2) (2) (2)  (2)
(2) (2)
 0 a22 · · · a2n b2   L2
(A |b ) = 
 .. .. .. .. ..  ..

 . . . . .  .
(2) (2) (2) (2)
0 an2 · · · ann bn Ln

D’après le Théorème 2.2.1 (A(2) |b(2) ) ∼ (A|b).

Remarque : En écriture matricielle, pour obtenir la matrice A(2) revient à multiplier, à gauche,
la matrice A(1) par une matrice triangulaire inférieure, appelé matrice d’élimination noté par
E (1) est donnée par la forme suivante :

0 ··· ···
 
1 0
(1)
 −α21 1 0 ··· 0
 

.. ..
 
(1)
E (1) =  .
 
 −α31 0 1 . 

 .. .. .. .. 

 . . . . 0 

(1)
−αn1 0 ··· 0 1

On a A(2) = E (1) A(1) .

5
(2)
Étape 2 : Supposons que a22 ̸= 0. On effectue les opérations suivantes sur la matrice augmentée
(A(2) |b(2) ) :

(3) (2)



 L2 ↔ L2
(1)
(3) (2) (2) (2) (2) ai2

 Li = Li − αi2 L2 avec αi2 = (2)
3≤i≤n
a22

La matrice augmentée (A(3) |b(3) ) a alors la forme suivante :

(1) (1) (1) (1)


 
(3)
a11 a12 · · · · · · a1n b1 L1
 (2) (2) (2)  (3)

 0 a22 · · · · · · a2n b2 
 L2
(3) (3) (3) (3)
(A(3) |b(3) ) = · · · a3n
 
 0 0 a33 b3  L3
.. .. .. .. ..
 
 ..  ..

 . . . . . . 
 .
(3)
0 0 an3 (3)
· · · ann b(3)
n L(3)
n

Le système A(3) x = b(3) est donc équivalent à Ax = b.


On a aussi A(3) = E (2) A(2) avec la matrice d’élimination E (2) est donnée par :

1 0 0 ··· ··· 0
 

 0 1 0 ··· ··· 0 

 (2) 
 0 −α32 1 0 ··· 0 
E (2) =
 
 (2) ... .. 

 0 −α42 0 1 . 

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

 . . . 0 

(2)
0 −αn2 0 ··· 0 1
(k)
Étape k : Supposons que akk ̸= 0. On effectue les opérations suivantes sur la matrice augmentée
(A(k) |b(k) ) :

(k+1) (k)



 Li ↔ Li 1≤i≤k
(k)
(k+1) (k) (k) (k) (k) aik

 Li = Li − αik Lk avec αik = (k)
k+1≤i≤n
akk

On obtient donc :

(1) (1) (1) (1) (1) (1)


 
a a12 · · · a1k a1,k+1 ··· a1n b1 (k+1)
L1
 11 (2) (2) (2) (2) (2) 
 0
 a22 · · · a2k a2,k+1 ··· a2n b2 
 (k+1)
L2
 .. .. .. .. .. 
..

 0 0 . . . ··· . . 
 .
(k+1) (k+1)
 .. .. . . . (k) (k) (k)

(k)  (k+1)
(A |b )= 
 . . akk ak,k+1 ··· akn bk  Lk
.. ..
 
(k+1) (k+1) (k+1)  (k+1)
Lk+1

 . . 0 0 ak+1,k+1 · · · ak+1,n bk 

.. .. .. .. .. .. ..

..  ..
.


 . . . . . . . . 

0 0 ··· 0
(k+1)
an k+1 (k+1)
· · · ann b(k+1) L(k+1)
n
n

On aura A(k+1) = E (k) A(k) avec :

6
 
1 0 ··· ··· ··· ··· ··· 0
 0 1 0 ··· ··· ··· ··· 0 
 
. . . ... .. 
 

 0 .. .. .. ··· ··· . 
.. 
 
 0 ... ... ...

1 ··· ··· . 
E (k)
 
= .
 . .
.. (k)
, 1≤k ≤n−1
 . 0 −αk+1,k 1 0 ··· 0 
 .. .. .. . . . .. 
 
 . .
(k)
. −αk+2,k 0 .. . . 
 .. .. .. .. .. .. ..
 
. . 0 

 . . . . .
 
(k)
0 ··· 0 −αnk 0 ··· 0 1

Étape (n-1) : On répète les mêmes opérations on obtient : Ax = b ⇔ A(n) x = b(n) .


Avec :

(n) (n) (n) (n)


   
a11 a12 · · · a1n b1
 (n) (n)   (n) 
(n)
 0 a22 · · · a2n 
(n)
 b2 
A = , b =
   
 .. .. .. ..  .. 

 . . . . 


 . 

(n)
0 ··· 0 ann b(n)
n

Remarques :
(k)
1. Les akk , k = 1, n sont appelés pivots de Gauss.
2. Si au cours de ce processus on tombe sur un pivot nul alors on permute la ligne contenant
ce pivot nul avec une ligne au dessous de sorte que le nouveau pivot soit non nul. D’après
le Théorème 2.2.1 cette opération nous donne un système équivalent.
3. La méthode de Gauss sans permutation de lignes est appelée méthode de Gauss ordinaire.
4. À la fin de l’algorithme de Gauss, on résout le système triangulaire supérieure obtenu
en utilisant l’algorithme de remonté présenté précédemment.
5. Comme les systèmes Ax = b et A(n) x = b(n) sont équivalents alors :
n
(n) p
Y (i)
det(A) = det(A ) = (−1) aii
i=1
où p désigne le nombre de permutations effectuées.

2.2.2 Exemples d’application

Exemple 1 : Résoudre le système linéaire suivant par la méthode de Gauss :




 2x1 + 4x2 + 2x3 + x4 = 1
3
−x1 + x2 − x3 + x = 12


2 4

 4x1 + 4x2 + 3x3 + x4 = 1
1
= 52

−x1 + + x3 + x

2 4

La version matricielle de ce système est :

2 4 2 1 x1 1
     
 −1 1 −1 23   x2   1 
2 
   
=
4 4 3 1 x3  1 
     
   
−1 0 1 12 x4 5
2

7
Étape 1 : On élimine x1 des trois dernières lignes.

(1)

2 4 2 1 1

L1
3 1  (1)
 −1 1 −1 2 2  L2
(A(1) |b(1) ) =   (1)
4 4 3 1 1  L3


−1 0 1 12 52 (1)
L4
(1)
Le premier pivot a11 = 2 ̸= 0. On laisse donc intacte la première ligne, celle contenant le pivot,
(1)
et pour annuler l’élément a21 = −1 situé en dessous du pivot on soustrait de la deuxième ligne
la première ligne multipliée par −12
.
On fait de même pour annuler les deux autres éléments situés en dessous du pivot c’est à dire
(1) (1)
les éléments a31 et a41 . Voici les opérations effectuées :

(2) (1)
L1 = L1
(2) (1) (1)
L2 = L2 − ( −12
)L1
(2) (1) (1)
L3 = L3 − ( 42 )L1
(2) (1) (1)
L4 = L4 − ( −12
)L1
On obtient :

(2)

2 4 2 1 1

L1
(2)
 0 3 0 2 1  L2
(A(2) |b(2) ) =  
(2)
0 −4 −1 −1 −1
 
  L3
0 2 2 1 3 (2)
L4

Étape 2 : On élimine x2 des deux dernières lignes.


(2)
Le deuxième pivot a22 = 3 ̸= 0. On laisse donc intacte la deuxième ligne, celle contenant le
(2) (2)
pivot, et on fait annuler les éléments a32 et a42 situé en dessous du pivot.

(3) (2)
L1 = L1
(3) (2)
L2 = L2
(3) (2) (2)
L3 = L3 − ( −43
)L2
(3) (2) (2)
L4 = L4 − ( 23 )L2
On obtient :

(3)

2 4 2 1 1

L1
(3)
 0 3 0 2 1  L2

(A(3) |b(3) ) =  5 1  (3)
0 0 −1
 
 3 3 L3
−1 7
0 0 2 3 3
(3)
L4

Étape 3 : On élimine x3 de la dernière ligne.


(3)
Le troisième pivot a33 = −1 ̸= 0. On laisse donc intacte la troisième ligne, celle contenant le
(3)
pivot, et on fait annuler l’élément a43 situé en dessous du pivot.

8
(4) (3)
L1 = L1
(4) (3)
L2 = L2
(4) (3)
L3 = L3
(4) (3) 2 (3)
L4 = L4 − ( −1 )L3
On obtient :

(4)

2 4 2 1 1

L1
(4)
 0 3 0 2 1  L2

(A(4) |b(4) ) = 

0 0 −1 35 13  L(4)


3
0 0 0 3 3 (4)
L4

D’après le Théorème 2.2.1 A(1) x = b(1) ⇔ A(4) x = b(4) .


La matrice A(4) est triangulaire supérieure. D’où le nouveau système triangulaire A(4) x = b(4)
obtenu est :


 2x1 + 4x2 + 2x3 + x4 = 1
+ 3x2 + 2x4 = 1




 −x3 + 53 x4 = 13
3x4 = 3

En résolvant ce système à l’aide de l’algorithme de remonté on obtient :

− 23

x4 = 1
 


5 1 4 1 
x3 = 3−3=3  −3 

 
⇒ x =
x2 = 13 (−2 + 1) = − 13 4 


3
  
1 −1 4 2

x1 = 2 (1 − 4( 3 ) − 2( 3 ) − 1) = − 3 1

Exemple 2 : Considérons la résolution du système linéaire suivant :

− x2 + 2x3 − x4 −8


 x1 =
2x1 − 2x2 + 3x3 − 3x4 = −20




 x1 + x2 + x3 = −2
x1 − x2 + 4x3 + 3x4 = 4

  (1) (1)   (2)


1 −1 2 −1 −8 L1 L1 1 −1 2 −1 −8 L1
 (1) (1) (1)  (2)
2 −2 3 −3 −20  L2 − 2L1
 
 L2
(1) (1)
 (2) (2)
 0 0 1 1 4  L2
(A |b )= (1) ∼ (A |b ) = (1) (1)
 
 (2)

 1 1 1 0 −2  L3 L3 − L1

 0 −2 1 −1 −6  L3
(1) (1) (1) (2)
1 −1 4 3 4 L4 L4 − L1 0 0 −2 −4 −12 L4

(2)
Le pivot du système augmentée (A(2) |b(2) ) est a22 = 0 qui est nul. On permute alors la ligne contenant
ce pivot, c’est à dire la deuxième ligne avec une ligne en dessous de sorte que le nouveau pivot soit
non nul. Dans cet exemple il y a un seul choix possible, permuter la deuxième ligne avec la troisième
ligne on obtient alors le système augmenté désigné par (Ae(2) |eb(2) ).
  (2)   (3)
1 −1 2 −1 −8 L1 1 −1 2 −1 −8 L1
 (2)  (3)
0 −2 1 −1 −6 0 −2 1 −1 −6
 
(2) e(2)
  L3 (3) (3)
  L2
∼ (A |b ) = 
e
 (2) ∼ (A |b ) = 
  
 (3)

 0 0 1 1 4  L2  0 0 1 1 4  L3
(2) (3)
0 0 −2 −4 −12 L4 0 0 −2 −4 −12 L4

9
(3)  
L1 1 −1 2 −1 −8
(3)
0 −2 1 −1 −6 
 
L2
∼ (A(4) |b(4) ) =

 
(3) 
L3  0 0 1 1 4 

(3) (3)
L4 − (−2L3 ) 0 0 0 2 4

Le nouveau système triangulaire A(4) x = b(4) obtenu est :


  



x1 − x2 + 2x3 − x4 = −8 −7
− 2x2 + x3 − −6
  
 x4 =  3 
⇒x= 


 x3 + x4 = 4  2 
 

2x4 = 4 2

Calculant le déterminant de la matrice A à l’aide de la formule précédente. Comme on a effectuer une


seule permutation donc p = 1, d’où detA = (−1)1 × 1 × −2 × 1 × 2 = 4.

2.2.3 Coût de l’algorithme de Gauss

Le nombre d’opérations élémentaires que requiert l’application de la méthode d’élimination de Gauss


pour la résolution d’un système linéaire de n équations à n inconnues est le suivant :

Tout d’abord, pour passer de la matrice A(k) à la matrice A(k+1) , 1 ≤ k ≤ n − 1, on effectue



 n−k divisions


(n − k + 1)(n − k) = (n − k)2
+ (n − k) additions

 (n − k + 1)(n − k) = (n − k)2 + (n − k) multiplications

Ce qui correspond à un total de :



n−1
 X n(n − 1)
(n − k) = divisions






 k=1
2
n−1

n(n2 − 1)

 X
(n − k)2 + (n − k) = additions


 k=1
3
n−1

n(n2 − 1)

 X
 2

 (n − k) + (n − k) = multiplications
3


k=1

Pour la mise à jour du second membre à l’étape k, on a besoin de (n − k) additions et (n − k) multi-


plications, soit en tout :
 n−1
X n(n − 1)
(n − k) =


 additions
2


k=1
n−1
 X n(n − 1)
(n − k) = multiplications




k=1
2

Enfin,
 pour résoudre le système final par la méthode de remontée, il faut faire :



n divisions
 n(n − 1)

additions
2
 n(n − 1) multiplications




2
En tout, la résolution du système par la méthode d’élimination de Gauss nécessite donc de l’ordre de :

10
n2



 divisions
 2



n3
additions

 3
n3




 multiplications
3
À titre de comparaison, pour n = 10 par exemple, on obtient un compte d’environ 716 opérations pour
la méthode d’élimination de Gauss contre près de 479000000 opérations pour la méthode de Cramer !

Pour n = 20 le nombre d’opérations nécessaires est d’environ 5533 opérations élémentaires exécutables
en 5, 5×106 seconde par un calculateur faisant 109 opération par seconde, pour rappel Cramer nécessite
3240 ans !

2.3 Stratégies de choix du pivot


Revenons à présent sur le choix du pivot à chaque étape de l’élimination. Si à la k ième étape l’élément
(k)
akk est non nul, il semble naturel de l’utiliser comme pivot (c’est d’ailleurs ce que l’on fait dans la
méthode de Gauss sans permutation). Cependant, à cause des erreurs d’arrondi existant en pratique,
cette manière de procéder est en général à proscrire, comme l’illustre l’exemple suivant :
! ! !
10−4 1 x1 1
=
1 1 x2 2
dont la solution est x1 = 1, 0001 et x2 = 0, 9999.

En choisissant le nombre 10−4 comme pivot à la première étape de l’élimination de Gauss, on obtient
le système triangulaire suivant :
! ! !
10−4 1 x1 1
=
0 −9999 x2 −9999

La solution numérique calculée est alors : x1 = 0 et x2 = 1. Elle est très éloignée de la véritable
solution du système.
Si, par contre, on commence par échanger les deux équations du système pour utiliser le nombre 1
comme pivot, on trouve :
! ! ! ! ! !
1 1 x1 2 1 1 x1 2
−4
= ∼ =
10 1 x2 1 0 0, 9999 x2 0, 9998

La solution calculée et arrondi vaut : x1 = 1 et x2 = 1 ce qui est cette fois très satisfaisante.

En général, le changement de pivot n’a pas un effet aussi spectaculaire que dans l’exemple ci-dessus,
mais il n’en demeure pas moins essentiel lorsque les calculs sont effectués en arithmétique à virgule
flottante. De fait, pour éviter la propagation d’erreurs et obtenir une meilleure stabilité numérique de
la méthode, il faut chercher, même dans le cas où le pivot naturel est non nul, à choisir le plus grand
pivot en valeur absolue.
On peut pour cela suivre au début de la k ième étape, 1 ≤ k ≤ n − 1, de l’élimination l’une des deux
stratégies suivantes :

11
Stratégie du pivot partiel
(k)
Le pivot est l’un des éléments aik , k ≤ i ≤ n, de la k ième colonne situés sous la diagonale vérifiant :
(k) (k)
|aik | = maxk≤p≤n |apk |

Stratégie du pivot total


(k)
Le pivot est l’un des éléments de la sous-matrice aij , k ≤ i, j ≤ n, vérifiant :

(k) (k)
|aij | = maxk≤p,q≤n |apq |

Dans ce dernier cas, si le pivot n’est pas dans la k ième colonne, il faut procéder à un échange de
colonnes en plus d’un éventuel échange de lignes.
Quelle que soit la stratégie adoptée, cette recherche de pivot doit également être prise en compte dans
l’évaluation du coût global de la méthode d’élimination de Gauss.

2.4 Méthode d’élimination de Gauss-Jordan


La méthode d’élimination de Gauss-Jordan est une variante de la méthode d’élimination de Gauss
ramenant toute matrice sous forme échelonnée réduite. Dans le cas d’une matrice A inversible, cette
méthode revient à diagonaliser la matrice A et non pas la rendre triangulaire supérieure. Pour cela,
on procède comme pour l’élimination de Gauss, mais en annulant à chaque étape tous les éléments de
la colonne considérée situés au dessous et au dessus de la diagonale.

On rajoute au système augmenté (A|b) la matrice identité I puis on applique la méthode des pivots de
Gauss au système augmenté ainsi obtenu (A|b|I) pour diagonaliser la matrice A. À la fin du processus
on obtient le système augmenté (I|x|A−1 ).

Exemple : Résolvons le système Ax = b par la méthode de Gauss-Jordan où :

   
2 −1 0 −2
   
A =  4 −1 2  , b =  14 
  

−6 2 0 12

(1)
 
2 −1 0 −2 1 0 0 L
(1) (1)
  1(1)
(A |b |I) =  4 −1 2 14 0 1 0  L2
 
(1)
−6 2 0 12 0 0 1 L3
(1) (2)
 
L1 2 −1 0 −2 1 0 0 L
 1(2)
∼ (A(2) |b(2) |A′ ) = (1) (1) 
L2 − 42 L1  0
 1 2 18 −2 1 0  L2

(1) −6 (1) (2)
L3 − 2 L1
0 −1 0 6 3 0 1 L3
(2) (2) (3)
 
L1 − ( −1
1 )L2 2 0 2 16 −1 1 0 L
 1
∼ (A(3) |b(3) |A′′ ) = (2)  0 1 2 18 −2 1 0  L(3)

L2   2
(2) (2) (3)
L3 − ( −1
1 )L2
0 0 2 24 1 1 1 L3

12
(3) (3) (4)
 
L1 − ( 22 )L3 2 0 0 −8 −2 0 −1 L
 1(4)
∼ (A(4) |b(4) |A′′′ ) = L(3) (3) 
2  0 1 0 −6 −3 0 −1  L
2 − ( 2 )L3   2
(3) (4)
L3 0 0 2 24 1 1 1 L3

La nouvelle matrice obtenue est diagonale. On normalise le nouveau système en divisant la première
ligne par 2 et la troisième par 2 on obtient :
1 (4)
 
2 L1 1 0 0 −4 −1 0 − 12
(A(4) |b(4) |A−1 ) = (4)  
L2  0 1 0 −6 −3 0 −1 
 
1 (4) 0 0 1 12 1 1 1
2 L3 2 2 2

D’où la solution du système x = (−4, −6, 12)t et la matrice inverse de A est :


 
−1 0 − 21
A−1
 
 −3
= 0 −1  
1 1 1
2 2 2

Remarque : La méthode de Gauss-Jordan est moins rapide que celle de Gauss. Néanmoins, elle
permet le calcul de la matrice inverse et évite la "remontée" qu’on rencontre dans la méthode de
Gauss.

2.5 Décomposition LU
Nous allons maintenant montrer que la méthode de Gauss dans sa forme sans permutation est équiva-
lente à la décomposition de la matrice A sous la forme d’un produit de deux matrices, A = LU , avec
L une matrice triangulaire inférieure (Lower triangular en anglais), qui est l’inverse de la matrice des
transformations successives appliquées à la matrice A lors de l’élimination de Gauss sans permutation,
et U une matrice triangulaire supérieure (Upper triangular en anglais), avec U = A(n) .
Ou bien sous forme matricielle :

    
a11 a12 ... a1n l11 0 ... 0 u11 u12 ... u1n
   .. ..   
 a21 a22 ... a2n   l
  21 l22 .   0 u22
.   u2n 
A= = .
 
.. .. ..   . ..  .
 . .. .. .. 

 . . .   . . 0  . . . . 

an1 an2 ... ann ln1 ln2 · · · lnn 0 ··· 0 unn

2.5.1 Détermination des matrices L et U

Si on applique la méthodes d’élimination de Gauss sans permutation, la matrice obtenue à la k ième


étape est alors :

A(k+1) = E (k) A(k) = E (k) E (k−1) A(k−1) = · · · · · · = E (k) E (k−1) · · · E (2) E (1) A(1)

13
Où :  
1 0 ··· ··· ··· ··· ··· 0
 0 1 0 ··· ··· ··· ··· 0
 

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

 0 . . . . ··· ··· . 

 .. .. .. .. 
 0 . . 1 . ··· ··· . 
(k)
 
E = .. .. , 1 ≤ k ≤ n − 1
(k)
. . 0 −αk+1,k 1 0 ··· 0
 
 
.. .. .. ..
 
 (k) .. .. 

 . . . −αk+2,k 0 . . . 

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

 . . . . . . . 0 

(k)
0 ··· 0 −αnk 0 ··· 0 1

Rappelons que la matrice E (k) est la matrice d’élimination et les αi,k pour tout k + 1 ≤ i ≤ n sont les
multiplicateurs à la k ième étape.

Il résulte que :

A(k) = (E (k) )−1 A(k+1)

La matrice E (k) est triangulaire inférieure et son inverse est également une matrice triangulaire infé-
rieure, il est facile de vérifier que son inverse vaut :
 
1 0 ··· ··· ··· ··· ··· 0
 0 1 0 ··· ··· ··· ··· 0
 

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

 0 . . . . ··· ··· . 

 .. .. .. .. 
 0 . . 1 . ··· ··· . 
(k) −1
 
(E ) =  .. .. , 1 ≤ k ≤ n − 1
(k)
. . 0 αk+1,k 1 0 ··· 0
 
 
.. .. .. ..
 
 (k) .. .. 

 . . . αk+2,k 0 . . . 

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

 . . . . . . . 0 

(k)
0 ··· 0 αnk 0 ··· 0 1

À l’étape (n − 1) on a :

A(n) = U = E (n−1) E (n−2) . . . . . . E (2) E (1) A(1)


⇒ A = (E (n−1) E (n−2) . . . . . . E (2) E (1) )−1 U
⇒ A = (E (1) )−1 (E (2) )−1 . . . . . . (E (n−2) )−1 (E (n−1) )−1 U
(1) (2)
⇒ A =L| L . . . . .{z . L(n−2) L(n−1)} U où L(k) = (E (k) )−1
⇒ A = L U
Avec L est la matrice des multiplicateurs à chaque étape :
 
1 0 ··· ··· 0

.. .. ..
 α21

1 . . .


..
 
L =  α31
 .. .. 
 α32 . . .


 . ..
 ..

 . 1 0 

αn1 αn2 · · · αn,n−1 1
Théorème 2.5.1 Soit A une matrice carrée d’ordre n. La décomposition LU de A, existe et est unique
si toutes les sous-matrices principales extraites de A sont inversibles.

14
 
a11 · · · a1k
 . .. 
A[k] =
 .
. , 1 ≤ k ≤ n
. 
ak1 · · · akk

Démonstration.

Existence : Il est possible de montrer l’existence de la décomposition LU en montrons que les pivots
(k)
d’élimination de Gauss sont non nuls, c’est à dire akk ̸= 0 pour 1 ≤ k ≤ n − 1 car l’existence de cette
décomposition revient à l’existence des matrices de transformation de la méthode de gauss ordinaire.
On le démontre par récurrence.

Pour k = 1, on a A[1] = a11 ̸= 0 car par hypothèse A[1] est inversible donc detA[1] ̸= 0.
(k) (r)
Supposons que akk ̸= 0 pour 1 ≤ k ≤ r − 1 et montrons que arr ̸= 0.
(1) (2) (r−1) (r)
On a det(A[r] ) = a11 a22 ...ar−1,r−1 , arr . Or d’une part, par hypothèse det(A[r] ) ̸= 0 et d’autre part,
(k) (r)
par hypothèse de récurrence akk ̸= 0 pour 1 ≤ k ≤ r − 1. Donc arr est aussi différent de zéro.

Unicité : Supposons que A = L1 U1 = L2 U2 .

L1 U1 = L2 U2 ⇔ L−1 −1
2 L1 = U2 U1 = D
L−1
2 L1 est une matrice triangulaire inférieure avec des 1 sur la diagonale.
U2 U1−1 est une matrice triangulaire supérieure avec des 1 sur la diagonale.
D a des 1 sur la diagonale, alors D = In ce qui implique que U1 = U2 et L1 = L2 .

Exemple : Reprenons l’exemple 1 de la méthode de Gauss.


   
2 4 2 1 2 4 2 1
3
−1 1 −1
   
(1)

2  ∼ A(2) = 
  0 3 0 2 
A = 

 4 4 3 1 
 
 0 −4 −1 −1 

1
−1 0 1 2 0 2 2 1
 
1 0 0 0
 1 
A(2) E (1) A(1) E (1) 2 1 0 0
 
On a = où = 

 −2 0 1 0 

1
2 0 0 1
En effet :
    
1 0 0 0 2 4 2 1 2 4 2 1
1 3
−1 1 −1
    
(1) (1) 2 1 0 0 2 0 3 0 2  = A(2)
    
E A =  =

 −2 0 1 0 
 4 4 3 1  
  0 −4 −1 −1 

1 1
2 0 0 1 −1 0 1 2 0 2 2 1

     
2 4 2 1 2 4 2 1 2 4 2 1
     
0 3 0 2 0 3 0 2 0 3 0 2 
A(2) =   ∼ A(3) =   ∼ A(4) = 
    

5 5

 0 −4 −1 −1 


 0 0 −1 3



 0 0 −1 3


0 2 2 1 0 0 2 − 13 0 0 0 3

15
   
1 0 0 0 1 0 0 0
   
0 1 0 0 0 1 0 0
E (2)  et E (3) = 
   
Avec = 4


 0 3 1 0 


 0 0 1 0 

0 − 23 0 1 0 0 2 1

On a bien :
    
1 0 0 0 2 4 2 1 2 4 2 1
    
(2) (2)
 0 1 0 0  0 3 0 2   0 3 0 2  = A(3)

E A = 4
 =
5

 0 3 1 0 
 0 −4 −1 −1  

 0 0 −1 3


0 − 23 0 1 0 2 2 1 0 0 2 − 13

Et :     
1 0 0 0 2 4 2 1 2 4 2 1
    
0 1 0 0 0 3 0 2 0 3 0 2 
E (3) A(3) =  (4)
   
=A =U
 = 
5 5

 0 0 1 0 
 0 0 −1 3
 
  0 0 −1 3 
0 0 2 1 0 0 2 − 13 0 0 0 3
Par conséquent on a :
A(4) = = E (3) A(3)
U
= E (3) E (2) A(2)
= E (3) E (2) E (1) A(1)
⇒ A(1) = (E (3) E (2) E (1) )−1 U
⇒ A = (E (1) )−1 (E (2) )−1 (E (3) )−1 U
(1) (2)
⇒ A = L | L{z L(3)} U où L(k) = (E (k) )−1 , k = 1, ..., 3
⇒ A = L U
 
1 0 0 0
 1
 −

L(1) = (E (1) )−1 =  2 1 0 0 

 2 0 1 0 
 
− 12 0 0 1
   
1 0 0 0 1 0 0 0
 1
 −
  
0 1 0 0 1 0 0
L(2) (E (2) )−1 L(1) L(2) L(3) 2
  
= =  ⇒ L= = 

 0 − 34 1 0 

 2 −4
 3 1 0 

2
0 3 0 1 − 21 2
3 −2 1
 
1 0 0 0
 
0 1 0 0
L(3) (E (3) )−1
 
= = 

 0 0 1 0 

0 0 −2 1
  
1 0 0 0 2 4 2 1
 1
 −
 
2 1 0 0  0 3 0 2 
D’où : A = LU = 
 2 −4

5

 3 1 0 
 0 0 −1 3


− 21 2
3 −2 1 0 0 0 3

Remarques :
1. Supposons que la matrice A admet une décomposition de la forme A = LU . Le système linéaire
Ax = b est alors équivalente à LU x = b. Posons y = U x d’où Ly = b.
La résolution du système Ax = b est donc ramené aux deux systèmes triangulaires :
(
Ly = b
Ux = y

16
2. La factorisation LU est particulièrement avantageuse lorsque l’on doit résoudre plusieurs sys-
tèmes linéaires ayant tous A pour matrice, mais des seconds membres différents. En effet, il
suffit de conserver les matrices L et U obtenues à l’issue de la factorisation pour ramener en-
suite la résolution de chaque système linéaire Ax = b à celle de deux systèmes triangulaires,
Ly = b ; puis U x = y.
3. La décomposition LU fournit un procédé rapide de calcul du déterminant de la matrice A.
n n
Y Y (k)
det(A) = det(LU ) = det(L)det(U ) = det(U ) = ukk = akk .
k=1 k=1

car detL = 1 car L est une matrice triangulaire inférieure à diagonale unité.
4. Le nombre d’opérations nécessaires pour la factorisation LU est du même ordre que celui de
Gauss (O(n3 )).
5. Pour déterminer les matrices L et U de la matrice A on peut aussi procéder par identification.
    
l11 0 ... 0 u11 u12 ... u1n a11 a12 ... a1n
 .. ..     
.   0 u22 u2n a21 a22 ... a2n
 l l22 .     
 21
A = LU =  . =
  
 . .. .. .. .. .. ..
 . ..  . . . .

 . . 0  . . . .
  
  
ln1 ln2 · · · lnn 0 ··· 0 unn an1 an2 ... ann
(k)
6. S’il existe 1 ≤ k ≤ n − 1 tel que akk = 0. La méthode de Gauss ordinaire n’est plus applicable.
On applique la méthode de Gauss avec permutations de lignes pour avoir la décomposition de
A sous forme : P A = LU tel que : P est la matrice de permutation.

Exemple : Reprenons l’exemple 2 de la méthode de Gauss avec permutation.


   
1 −1 2 −1 1 −1 2 −1
2 −2 3 −3 
   
(1)  ∼ A(2) =  0 0 1 1 
 
A =  0 −2


 1 1 1 0 
  1 −1 

1 −1 4 3 0 0 −2 −4
   
1 0 0 0 1 0 0 0
−2
   
1 0 0 2 1 0 0
A(2) E (1) A(1) E (1)  ⇒ L(1) = 
   
On a = où = 

 −1 0 1 0 


 1 0 1 0 

−1 0 0 1 1 0 0 1
(2)
A l’étape (2) le pivot a22 = 0 est nul. Nous avons permuté la deuxième ligne avec la troisième
ligne comme suit :
   
1 −1 2 −1 1 −1 2 −1
e(2) =  0 −2 1 −1 
   
0 0 1 1 
A(2) = 
  
∼ A 

 0 −2 1 −1 

 0
 0 1 1 

0 0 −2 −4 0 0 −2 −4
 
1 0 0 0
 
0 0 1 0
On a Ae(2) = P (2) A(2) P (2)
 
où = 

 0 1 0 0 

0 0 0 1

17
     
1 −1 2 −1 1 −1 2 −1 1 −1 2 −1
0 −2  ∼ A(3) =  0 −2
1 −1   ∼ A(4) =  0 −2 1 −1 
1 −1 
     
(2)
   
A =
e

 0 0 1 1 

 0
 0 1 1 

 0
 0 1 1 

0 0 −2 −4 0 0 −2 −4 0 0 0 2

On a A(3) = E (2) Ae(2) où E (2) = I ⇒ L(2) = I


   
1 0 0 0 1 0 0 0
   
0 1 0 0 0 1 0 0
A(4) E (3) A(3) E (3)  ⇒ L(3) = 
   
Et = où = 

 0 0 1 0 


 0 0 1 0 

0 0 2 1 0 0 −2 1

Par conséquent on a :
A(4) = U = E (3) A(3)
= E (3) E (2) Ae(2)
= E (3) E (2) P (2) A(2)
= E (3) E (2) P (2) E (1) A(1)
⇒ A(1) = (E (3) E (2) P (2) E (1) )−1 U
⇒ A = (E (1) )−1 (P (2) )−1 (E (2) )−1 (E (3) )−1 U
⇒ A = L(1) P (2) L(2) L(3) U où L(k) = (E (k) )−1 , k = 1, ..., 3

Comme P (k) = (P (k) )−1 c’est-à-dire P (k) (P (k) )−1 = In alors A peut s’écrire :

A = (P (2) )−1 P (2) L(1) P (2) L(2) L(3) U

Posons : L′(1) = P (2) L(1) P (2)


     
1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
     
0 0 1 0 2 1 0 0 0 0 1 0 1 1 0 0
L′(1)
     
=   = 

 0 1 0 0 
 1 0 1 0 
 0 1 0 0  
  2 0 1 0 

0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1

L′(1) est la matrice L(1) où on a échangé la 2ème et la 3ème ligne, la 2ème et la 3ème colonne.
Donc c’est la matrice L(1) dans laquelle on a échangé le 2ème et le 3ème multiplicateur.
Donc on obtient :

A = (P (2) )−1 L′(1) L(2) L(3) U ⇔ P (2) A = P (2) (P (2) )−1 L′(1) L(2) L(3) U ⇔ P (2) A = L′(1) L(2) L(3) U

D’où la décomposition P A = LU avec :


   
1 0 0 0 1 0 0 0
   
0 0 1 0  ′(1) (2) (3)  1 1 0 0
P = P (2) =   et U = A(4)
   
 0 1 0 0 , L = L L L =  2 0 1 0 
   
0 0 0 1 1 0 −2 1

Théorème 2.5.2 Soit A une matrice d’ordre n inversible. Alors, il existe une matrice P (resp. des
matrices P et Q) tenant compte d’une stratégie de pivot partiel (resp. total), une matrice triangulaire
inférieure L, et une matrice triangulaire supérieure U telles que P A = LU (resp. P AQ = LU ).

Remarque : Dans le cas d’une factorisation de type P A = LU ,


- La résolution du système linéaire après factorisation s’effectue en appliquant tout d’abord la matrice
de permutation P au vecteur b pour obtenir le second membre P b.

18
(
Ly = P b
Ax = b ⇔ P Ax = P b ⇔ LU x = P b ⇔
Ux = y

- Pour le calcul de déterminant :

det(P A) = det(LU ) ⇒ det(P ) × det(A) = det(U )


(
1 si on a effectué un nombre pair de permutation de lignes;
avec : det(P ) =
−1 si on a effectué un nombre impair d’échanges de lignes,

2.6 Méthode de Cholesky


Lorsque la matrice A est Symétrique et Définie Positive, il existe une autre méthode de factorisation
appelée méthode de Cholesky.

Définition 2.6.1 Soit A = (aij )1≤i,j≤n une matrice d’ordre n. On dit que A est Symétrique Définie
Positive (SDP) si :
- A est symétrique, c’est-à-dire A = At .
- ∀x ∈ Rn , x ̸= 0, xt Ax > 0.

Exemple: 
2 −1 1
 
Soit A =  −1
 3 1 
 A est-elle SDP ?
1 1 5

- A est symétrique car A = At .


- Soit x = (x1 , x2 , x3 )t ∈ R3 :

On a :   
2 −1 1 x
 1 
xt Ax = (x1 , x2 , x3 ) 

 −1 3 1   x2 
 

1 1 5 x3
 
2x1 − x2 + x3
 
= (x1 , x2 , x3 )  −x1 + 3x2 + x3 


x1 + x2 + 5x3

= 2x21 − x1 x2 + x1 x3 − x1 x2 + 3x22 + x2 x3 + x1 x3 + x2 x3 + 5x23

= 2x21 + 3x22 + 2x2 x3 + 2x1 x3 + 5x23 − 2x1 x2

= (x1 − x2 )2 + (x1 + x3 )2 + (x2 + x3 )2 + x22 + 3x23

≥0

De plus si xt Ax = 0 alors x2 = x3 = 0 d’où x1 = 0 et donc x = 0.


D’où : ∀x ∈ R3 , x ̸= 0, xt Ax > 0 donc A est définie positive.

19
Proposition 2.6.1
(i) Une matrice définie positive A est inversible et detA > 0.
(ii) Si A est une matrice symétrique et définie positive alors toutes ses sous-matrices principales A[k]
d’ordre k ≤ n le sont aussi.

Exemple : Les sous-matrices principales de la matrice A de l’exemple précédent sont :

A[1] = (2). On a xt A[1] x = 2x21 ≥ 0. De plus si xt A[1] x = 0 ⇒ x1 = 0 ⇒ x = 0.


Alors la sous matrice d’ordre 1 est définie positive.
!
2 −1
A[2] = . Soit x = (x1 , x2 ) ∈ R2 , on a :
−1 3

xt A[2] x = 2x21 + 3x22 − 2x1 x2


= (x1 − x2 )2 + x21 + 2x22
≥ 0.
De plus si xt A[2] x = 0 ⇒ x1 = 0 et x2 = 0 et donc x = 0.
Alors la sous matrice d’ordre 2 est effectivement définie positive.

Proposition 2.6.2 Si A est symétrique définie positive (SDP) alors tous ses mineurs principaux sont
positifs.

Nous allons voir maintenant que lorsqu’une matrice A est symétrique, alors la factorisation A = LU ,
lorsque celle-ci est possible, peut prendre une forme particulière tenant compte de cette symétrie :

Théorème 2.6.1 (Factorisation d’une matrice symétrique)


Si A est symétrique avec toutes ses sous-matrices principales inversibles, alors elle admet une unique
factorisation sous la forme A = LDLt ,où L est une matrice triangulaire inférieure à diagonale unité
et D une matrice diagonale inversible.

Démonstration :
D’après l’hypothèse et le théorème 2.5.1, A vérifie les conditions pour avoir une unique factorisation
LU .

  
1 0 ... 0 u11 u12 ... u1n
 .. ..   
 l
 21 1 . .   0 u22
  u2n 
A = LU =  .

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

 . . 0  . . 

ln1 ln2 · · · 1 0 ··· 0 unn

Par ailleurs si on note D la matrice diagonale dont la diagonale est égale à celle de U .
 
u11 0 ... 0
 
 0 u22 0 
D = Diag(u11 , u22 , . . . , unn ) = 
 
.. .. .. .. 

 . . . . 

0 ··· 0 unn

En introduisant cette matrice diagonale D à la factorisation LU on obtient :

20
A = LU = LDD−1 U = LDV
    
1
u11 0 ... 0 u11 u12 ... u1n 1 × ... ×
 1    
 0
u22 0  0 u22 u2n   0 1 × 
avec V = D−1 U =  . =
    
.. .. .. .. .. .. .. .. .. .. .
 .. . ..
 
 . . . 
 . . . .  
  . . 

1
0 ··· 0 unn 0 ··· 0 unn 0 ··· 0 1

V : est une matrice triangulaire supérieure à diagonale unité.


La symétrie de A entraîne que :

A = At ⇔ LU = (LU )t = U t Lt

⇒ U = L−1 U t Lt ⇒ U (Lt )−1 = L−1 U t = D

D est la matrice diagonale dont les éléments sont ceux de U , car U (Lt )−1 est une matrice triangulaire
supérieure et L−1 U t est une matrice triangulaire inférieure.
Par conséquent V = D−1 U = (U (Lt )−1 )−1 U = Lt U −1 U = Lt .

L’unicité de la décomposition A = LDLt découle de l’unicité de la décomposition A = LU .

Théorème 2.6.2 (Factorisation de Cholesky)


Soit A une matrice symétrique définie positive d’ordre n. Alors, il existe une unique matrice triangu-
laire inférieure B dont les éléments diagonaux sont strictement positifs telle que : A = BB t .

Démonstration :
1) Existence :
A définie positive ⇒ det(A[k] ) > 0, ∀k = 1, ..., n.

⇒ d’après le théorème 2.5.1 il existe L et U tel que :

  
1 0 ... 0 u11 u12 ... u1n
 .. ..   
 l
 21 1 . .   0 u22
  u2n 
A = LU =  .

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

 . . 0  . . 

ln1 ln2 · · · 1 0 ··· 0 unn

On a vu que : det(A[k] ) = u11 u22 . . . ukk , ∀1 ≤ k ≤ n


d’où det(A[n] ) > 0 ⇔ uii > 0, ∀1 ≤ i ≤ n
 √ 
u11 0 ... 0
 √ 
√ √ √ √  0
 u22 0 
Posons D = Diag( u11 , u22 , . . . , unn ) =  .

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

 
unn 0 ··· 0

En introduisant cette matrice diagonale D à la factorisation LU on obtient :

√ √
A = LU = L D( D)−1 U

21
1 1
= LD 2 (D− 2 U )
 √  √ 
u11 0 ... 0 u11 × ... ×

 × √  √ 
u 22 0  0 u22 × 
= .
  
.. .. .. ..  .. .. .. .. 
 . . .  . . . . 
√ √
  
× ··· × unn 0 ··· 0 unn
| {z }| {z }

B C
1 1
Posons B = LD et C = D− 2 U .2

La symétrie de A entraîne que :


A = BC = At = C t B t ⇔ B −1 BC(B t )−1 = B −1 C t B t (B t )−1 ⇔ C(B t )−1 = B −1 C t

 √  1   
u11 × ... × √
u11 × ... × 1 × ... ×
√ 
√1
 
×
 
 0 u22 ×  0
  
0 1 × 
u22
C(B t )−1 =  .
 
  = 
.. .. .. ..  . .. .. .. .. .. .. .
  .. . ..

. . . . . . .
 
 .   

   
0 ··· 0 unn 0 ··· 0 √1 0 ··· 0 1
unn

 
√1
  
u11 0 ... 0 u11 0 ... 0 1 0 ... 0

√1
 √
×
  

u22 0 
× u22 0   × 1 0 
B −1 C t
 
= =
  
.. .. .. ..

.. .. .. .. .. .. . . .. 
. . . . . . . . . .
 
 . .    

    
× ··· × √1 × ··· × unn × ··· × 1
unn

Or cette égalité de matrices n’est possible que si C(B t )−1 = B −1 C t = In ⇒ C = B t ce qui démontre
l’existence d’au moins une factorisation de Cholesky A = BB t .

2) Unicité :
Pour montrer l’unicité de cette décomposition, on suppose qu’il existe deux matrices triangulaires
(1) (1) (2) (2)
inférieures B1 = (bij ), bii > 0 et B2 = (bij ), bii > 0 telles que :

A = B1 B1t = B2 B2t

D’où B2−1 B1 = B2t (B1t )−1


(1)
bii
B2−1 B1 : est une matrice triangulaire inférieure dont les éléments diagonaux sont (2)
.
bii
(2)
bii
B2t (B1t )−1 : est une matrice triangulaire supérieure dont les éléments diagonaux sont (1)
.
bii
(1) (2)
bii bii
⇒ Les matrices B2−1 B1 et B2t (B1t )−1 sont diagonales avec (2)
= (1)
bii bii
(1) (2) (1) (2)
⇒ (bii )2 = (bii )2 , ∀i or bii > 0 et bii > 0

(1) (2)
⇒ bii = bii , ∀i

(1)
bii
⇒ (2)
= 1, ∀i
bii

⇒ B2−1 B1 = I ⇒ B1 = B2 d’où l’unicité de la factorisation de Cholesky.

22
2.6.1 Algorithme de Cholesky

Soit A une matrice symétrique et définie positive. Écrivons que :

    
a11 a12 ... a1n b11 0 ... 0 b11 b21 ... bn1
   .. ..   
 a21 a22 ... a2n   b
  21 b22 . .   0 b22
  bn2 
A= = .
 
.. .. ..   . ..  .
 . .. .. .. 

 . . .   . . 0  . . . . 

an1 an2 ... ann bn1 bn2 · · · bnn 0 ··· 0 bnn

Pour calculer les éléments bij de la matrice B on procède comme suit :


- On multiplie les lignes de la matrice B avec la première colonne de B t et ainsi de suite jusqu’à la fin.
En effet la première ligne de B avec la première colonne de B t donne b211 = a11 d’où :

b11 = a11 .

Ensuite on multiplie la ligne i ≥ 2 de B avec la première colonne de B t on obtient bi1 b11 = ai1 d’où :
ai1
bi1 = √ , i ≥ 2.
a11

On multiplie la seconde ligne de B avec la seconde colonne de B t on aura b221 + b222 = a22 d’où :
q
b22 = a22 − b221 .

Ensuite on multiplie la ligne i ≥ 3 de B avec la seconde colonne de B t on obtient bi1 b21 + bi2 b22 = ai2
d’où :
ai2 − bi1 b21
bi2 = , i ≥ 3.
b22
Par récurrence on obtient l’algorithme de Cholesky suivant :

j−1

 X
a − bik bjk

ij




 k=1
 bij =

 , 1≤j ≤i−1
bjj



 v
i−1

 u
 X
b2ik ,
 u
taii −
 bii = i = 1, ..., n.



k=1

Exemple : Déterminer la décomposition de Cholesky de la matrice suivante :


 
2 −1 1
 
A =  −1
 3 1 

1 1 5

On a montré que A est SDP. Il existe donc une matrice triangulaire inférieure B telle que : A = BB t .
Calculons la matrice B. On a :
    
2 −1 1 b 0 0 b b21 b31
   11   11 
 −1  =
3 1   b21 b22 0   0 b22 b32 
  
 
1 1 5 b31 b32 b33 0 0 b33

23
 2 √

 b11 = 2 ⇒ b11 = 2

 −1 −1
b11 b21 = −1 ⇒ b21 = =√

Pour i = 1 : b11 2
1 1


 b11 b31 = 1 ⇒ b31 = =√


b11 2
 r
2 2 2 −1 2 5 5
⇒ b22 = 3 − ( √ ) = ⇒ b22 =


 b21 + b22 = 3
2 2 2



−1 1


Pour i = 2 : 1 − (√ × √ )
1 − b21 b31 2 2 3
b21 b31 + b22 b32 = 1 ⇒ b32 = = =√


 r



 b22 5 10

( 2
r
1 3 18 2
Pour i = 3 : b231 + b232 + b233 =5⇒ b233 =5− b231 − b232 = 5 − ( √ )2 − ( √ )2 = ⇒ b32 = 3
2 10 5 5
Alors les matrices B et B t ont la forme suivante :

 √   √ −1 1 
2 0 0 2 √ √
r2 2
r  

−1 5  
5 3

√ 0 
 
 , Bt = 
 
B=  0 √

2 2 2

r10
 r  
 1 3 2  
2

√ √ 3
 
2 10 5 0 0 3
5
Remarques :
1. Une autre technique pratique pour calculer A = BB t est l’utilisation de la méthode de Gauss :
A → LU → LDLt → LD1/2 D1/2 Lt = LD1/2 (LD1/2 )t = BB t avec B = LD1/2 , D = Diag(U ).
2. Pour résoudre le système Ax = b par la décomposition de Cholesky il suffit de résoudre les
deux systèmes triangulaires suivants :
(
t By = b ...(1)
Ax = b ⇔ BB x = b ⇔
B t x = y ...(2)

2.6.2 Coût de la méthode de Cholesky

Le nombre d’opérations élémentaires que requiert l’application de la méthode de Cholesky pour la


résolution d’un système linéaire de n équations à n inconnues est le suivant :

Tout d’abord, le calcul de la matrice B à l’aide des formules d’identifications nécessite :




 n extractions de racines carrées
n(n − 1)



(n − 1) + (n − 2) + ... + 1 = divisions
2 3
 (n − 1) + 2(n − 2) + ... + (n − 2)2 + (n − 1) = (n − n)



additions et multiplications

6
Ensuite, pour la résolution des deux systèmes By = b et B t x = y nécessite :

 n(n − 1) additions


n(n − 1) multiplications

 2n

divisions
n3
Au total, le nombre d’opérations requis par la méthode de Cholesky est de l’ordre , est la moitié
3
2n3
de celui de la méthode de Gauss ( ).
3

24
Par : A.SKOUDARLI

25

Vous aimerez peut-être aussi