Vous êtes sur la page 1sur 7

UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE

U.F.R. SEGMI Année universitaire 2015 – 2016


M1 Économie Appliquée Cours de B. Desgraupes

Méthodes Numériques

Séance 08: Calcul matriciel : décomposition LU

Table des matières


1 Notions de cours 1
1.1 Système triangulaires . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Décomposition LU . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Implémentation avec R . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Exercices 7

1 Notions de cours
L’intérêt des méthodes de trigonalisation est de transformer les systèmes d’équations
linéaires en système triangulaires dont la résolution est élémentaire par substi-
tutions successives.
On va voir une méthode de décomposition matricielle permettant d’écrire
une matrice carrée comme le produit de deux matrices triangulaires.

1.1 Système triangulaires


Exercice 1: n
Résoudre le système triangulaire supérieur suivant :

 x1 − 2 x2 − x3 = 7
4 x2 − 6x3 = −18
−4 x3 = −4

• Réponse
   
x1 2
x2  = −3
x3 1

1
Exercice 2: n
Résoudre le système triangulaire inférieur suivant :

 y1
 = 7
y1 + y2 = −11
 −2 y1 − 1 y2 + y3

= −9
2

• Réponse
   
y1 7
y2  = −18
y3 −4

1.2 Décomposition LU
On dit qu’une matrice carrée A de taille n admet une décomposition LU si on
peut l’écrire sous la forme du produit d’une matrice triangulaire inférieure L
ayant des 1 sur la diagonale et d’une matrice triangulaire supérieure U . Les
matrices L et U sont de même taille que A.

Une telle décomposition n’existe pas toujours : une condition nécessaire et


suffisante est que toutes les sous-matrices principales de dimension 1 à n − 1
soient inversibles. Si la matrice A elle-même est inversible, alors la décomposi-
tion est unique. Du point de vue mathématique, la décomposition LU résulte
simplement de la décomposition de Gauss.

On peut aussi énoncer ce résultat sous la forme suivante : une condition


nécessaire et suffisante pour que la décomposition LU soit possible est que les
mineurs principaux “nord-ouest” (situés en haut à gauche de la matrice) soient
non nuls. Si de plus le déterminant de la matrice elle-même est non nul alors la
décomposition est unique.
Algorithme de décomposition LU
 
2 4 1
Prenons, à titre d’exemple, la matrice A =  6 14 6 .
−4 −10 −3
On doit trouver une matrice triangulaire inférieure L et une matrice trian-
gulaire supérieure U dont le produit est égal à la matrice donnée.

2
On vérifie la condition nécessaire et suffisante :

det(2) = 2 6= 0
 
2 4
det = 4 6= 0
6 14
 
2 4 1
det  6 14 6  =8 = 6 0
−4 −10 −3

On applique une méthode du pivot qui construira la matrice U et on remplit


au fur et à mesure les éléments de la matrice
 L. 
1 0 0
Au départ la matrice L est égale à  . 1 0.
. . 1

Première étape

On prend la première ligne comme ligne pivot et on cherche à faire apparaı̂tre


des 0 dans la première colonne sous le terme pivot (ici 2). On fait pour cela des
combinaisons linéaires avec la ligne pivot L1 .
On remplace la deuxième ligne L2 par L2 − 3L1 . On obtient la matrice :
 
2 4 1
0 2 3
−4 −10 −3
a21
Le coefficient = 3 (qui a servi à faire la combinaison) devient le terme
a11
d’indice (2, 1) de la matrice L.
De même, on remplace la troisième ligne L3 par L3 + 2L1 . On obtient
maintenant la matrice :  
2 4 1
A0 =  0 2 3
0 −2 −1
a31
Le coefficient = −2 (qui a servi à faire la combinaison) devient le terme
a11
d’indice (3, 1) de la matrice L.  
1 0 0
À ce stade, la matrice L est égale à  3 1 0.
−2 . 1

Deuxième étape

La première ligne et la première colonne ont été traitées. On recommence

3
maintenant la même procédure sur le sous-bloc suivant :
 
2 4 1
0 2 3 
 
0 −2 −1
 
2 3
Dans ce sous-bloc , la première ligne va servir de ligne pivot et il
−2 −1
faut faire apparaı̂tre un 0 dans la première colonne sous le terme pivot 2.
Pour cela, on remplace la troisième ligne L3 de la matrice A0 par L3 + L2 et
on obtient maintenant la matrice :
 
2 4 1
A00 = 0 2 3
0 0 2

a032
Le coefficient = −1 (qui a servi à faire la combinaison) devient le terme
a022
d’indice (3, 2) de la matrice L.  
1 0 0
À ce stade, la matrice L est égale à  3 1 0.
−2 −1 1
La procédure est complète. La matrice A00 obtenue est triangulaire supérieure
: c’est la matrice U recherchée.
On peut vérifier effectivement que :
    
1 0 0 2 4 1 2 4 1
3 1 0 0 2 3 =  6 14 6 .
−2 −1 1 0 0 2 −4 −10 −3

Application à la résolution de systèmes d’équations linéaires.


Exercice 3: n
Résoudre le système suivant au moyen d’une décomposition LU :

 x1 − 2 x2 − x3 = 7
x1 + 2 x2 − 7x3 = −11
−2 x1 + 2 x2 + x3 = −9

• Corrigé
 
1 −2 −1
La matrice du système est A =  1 2 −7.
−2 2 1
Par décomposition LU, on trouve :
    
1 −2 −1 1 0 0 1 −2 −1
A= 1 2 −7 =  1 1 0 0 4 −6 = L U
−2 2 1 −2 −1/2 1 0 0 −4

4
Le système s’écrit L U X = b. On commence par résoudre le système trian-
gulaire inférieur L Y = b, puis ensuite on résout le système triangulaire supérieur
UX =Y.
Ce sont précisément les deux systèmes triangulaires qui ont été résolus dans
la section précédente. On trouve
       
y1 7 x1 2
y2  = −18 puis x2  = −3
y3 −4 x3 1

1.3 Implémentation avec R


Le logiciel R possède une fonction qui exécute numériqument la décomposition
LU. La fonction lu() fait partie du package Matrix qu’il faut charger explicite-
ment par la commande suivante :
library(Matrix)
Le package Matrix définit une fonction lu qui implémente la décomposi-
tion LU. Il faut le charger avec la commande library pour que la fonction soit
disponible :
> library(Matrix)

• Exemple
 
1 1 1
Prenons, par exemple, la matrice carrée suivante : A = 1 −1 1 .
1 0 −2
Cette matrice remplit les conditions d’existence et on exécute la décomposi-
tion comme ceci :
> A <- rbind(c(1,1,1),c(1,-1,1),c(1,0,-2))
> library(Matrix)
> res <- lu(A)
Le résultat, qu’on a appelé ici res, est un objet qui contient la décomposition
sous une forme compacte : le membre de classe x est une matrice dont la partie
inférieure (sous la diagonale) représente la matrice L à laquelle il faut ajouter
des 1 sur la diagonale, et la partie supérieure (incluant la diagonale) représente
la matrice U . Ici on obtient :
> res@x
[1] 1.0 1.0 1.0 1.0 -2.0 0.5 1.0 0.0 -3.0
Ce résultat n’est pas facile à lire mais heureusement il existe une fonction ex-
pand, elle aussi définie dans le package Matrix, qui permet d’extraire facilement
les composantes L et U .
Elle renvoie une liste avec un élément appelé L et un élément appelé U :

5
> comp <- expand(res)

> comp$L
3 x 3 Matrix of class "dtrMatrix" (unitriangular)
[,1] [,2] [,3]
[1,] 1.0 . .
[2,] 1.0 1.0 .
[3,] 1.0 0.5 1.0

> comp$U

3 x 3 Matrix of class "dtrMatrix"


[,1] [,2] [,3]
[1,] 1 1 1
[2,] . -2 0
[3,] . . -3

Parfois, la décomposition LU existe à condition qu’on permute les lignes et


les colonnes de A. On obtient, dans ce cas, une décomposition de la forme A =
P L U où P est une matrice de permutation. La fonction lu est capable de gérer
cette situation : l’objet renvoyé contient des informations sur la permutation
nécessaire et on trouve la matrice de permutation dans la composante P de la
liste renvoyée par la fonction expand. Dans l’exemple précédent, on a :

> comp$P

3 x 3 sparse Matrix of class "pMatrix"

[1,] | . .
[2,] . | .
[3,] . . |

Cela représente la matrice unité et il n’y a donc pas eu ici de permutation.

6
2 Exercices
Exercice 4: Décompositions LU
4-1 ) Pour chacune des matrices suivantes, déterminer, en examinant les
mineurs principaux, s’il existe une décomposition LU et, si oui, la calculer.
     
2 3 3 2 b c
−2 1 6 5 ab ac + b
     
3 4 1 2 4 1 2 −5 −1
6 7 4 6 14 6   8 −24 1
−3 −6 2 −4 −10 −3 −2 −7 19
 
  3 0 −4 −1 −1
4 2 −3 −1 −15 −1 22
−4 5 8
−4 5 4 
  −9 −2 15


−8 6 11 
−10 11 15   −12 2

12 7 −4
−4 −4 3 15
−3 −5 12 4 21

Exercice 5: Résolution de systèmes par LU


Pour chacune des matrices d’ordre 3 de la question précédente,
  utiliser la
1
décomposition LU pour résoudre l’équation AX = b avec b = −3.
5
Exercice 6: Décomposition PLU
 
1 2 3
Monter que la matrice A =  2 4 5  n’admet pas de décomposition
−1 3 −2
LU mais que, si on transpose les lignes d’indices 2 et 3, alors la décomposition
existe. Indiquer la matrice de permutation P telle que A = P × L × U .

Vous aimerez peut-être aussi