Vous êtes sur la page 1sur 4

1

Ecole Supérieure privée A.U. 2019/2020 - Semestre 2


de l’Aéronautique et des Technologies Maths Appliquées - Niveau 3GT et 3GA
Enseignante : Marwa Bouali

TP : Résolutions des systèmes linéaires


(Méthodes Directes)

Objectif
Dans ce TP, on va s’intéresser à la résolution directe du système linéaire de la forme

Ax = b (1)

où A ∈ Mn (R) est une matrice inversible connue, b ∈ Rn est un vecteur donné et x ∈ Rn est le vecteur
inconnu.

1. Méthode de Cramer
1. Ecrire une fonction Matlab Cramer permettant de résoudre le système (1) au moyen de la
formule de Cramer :
det(Ai )
xi = , i = 1, · · · , n,
det(A)
où Ai est la matrice obtenue en remplacant la ième colonne de A par le vecteur b. On utilisera
la commande Matlab det.
2. Tester et valider votre fonction Matlab par l’exemple suivant :
   
10 7 8 7 4
7 5 6 5 3
A=  8 6 10 9  et b = 3 .
  

7 5 9 10 1

3. Vérifier ensuite votre résultat en le calculant directement avec : x = inv(A) × b. Rappelons que
la commande Matlab inv(A) donne l’inverse de la matrice A.
4. Prenez quelques exemples de cours et de TD pour tester votre fonction Matlab Cramer.

2. Méthode de Gauss (Pivot de Gauss)


La méthode du pivot de Gauss est une méthode pour transformer un système en un autre système
équivalent (ayant les mêmes solutions) qui est triangulaire et donc facile à résoudre. Les opérations
autorisées pour transformer ce système sont échange de deux lignes, multiplication d’une ligne par
un nombre non nul et addition d’un multiple d’une ligne à une autre ligne. On est alors ramené à la
résolution d’un système linéaire T x = b1 , où la matrice T est triangulaire et inversible. Ceci se fait
très facilement par substitution récursive. On appelle ce procédé remontée dans le cas d’une matrice
T triangulaire supérieure et descente dans le cas d’une matrice T triangulaire inférieure. Il faudra
remarquer que l’on résoud ainsi le système T x = b1 sans inverser la matrice T .
2

2.1. Cas d’une matrice triangulaire inférieure ou supérieure


Étant donné une matrice A triangulaire supérieure et un vecteur b. La solution x est définie par :

bn
 xn = ann



n
1 h X i
x = b − aij xj , pour i = n − 1, · · · , 1.
 i aii i



j=i+1

1. Ecrire une fonction Matlab intitulée Remontee permettant de résoudre le système (1) dans le
cas où A est une matrice triangulaire supérieure.
2. Tester et valider votre fonction Matlab par les exemples suivants :
     
4 0 2 3 0 −1 1
A1 = 0 2 4 , A2 = 0 4 2  et b = 5 .
0 0 6 0 0 3 3
3. Vérifier ensuite votre résultat en le calculant directement avec : x = inv(Ai ) × b, pour i = 1, 2.
4. Prenez quelques exemples de cours et de TD pour tester votre fonction Matlab Remontee.
Maintenant, étant donné une matrice A triangulaire inférieure et un vecteur b. La solution x est définie
par : 
b1
 x1 = a11



i−1
1 h X i
 x = b − a ij j , pour i = 2, · · · , n.
x
 i aii i


j=1

1. Ecrire une fonction Matlab intitulée Descente permettant de résoudre le système (1) dans le
cas où A est une matrice triangulaire inférieure.
2. Tester et valider votre fonction Matlab par les exemples suivants :
     
4 0 0 3 0 0 1
A1 = 9 2 0 ,
  A2 = 7 4 0
  et b = 5 .

7 −6 6 8 0 3 3
3. Vérifier ensuite votre résultat en le calculant directement avec : x = inv(Ai ) × b, pour i = 1, 2.
4. Prenez quelques exemples de cours et de TD pour tester votre fonction Matlab Descente.

2.2. Cas d’une matrice quelconque


Étant donné une matrice A et un vecteur b. L’algorithme du pivot de Gauss est donné par :

 Triangularisation de la matrice




 pour k = 1, · · · , n − 1


 pour i = k + 1, · · · , n

 aik

 m=
a

kk


bi = bi − m bk





pour j = k + 1, · · · , n


 aij = aij − m akj



 Résolution du système triangulaire supérieure

 bn

 xn =
a

nn


 n

 1 h X i
x = b − a x , pour i = n − 1, · · · , 1.

i i ij j

aii


j=i+1
3

1. Ecrire une fonction Matlab intitulée Gauss qui à partir d’une matrice A effectue la méthode
de Gauss et résout le système Ax = b.
2. Tester et valider votre fonction Matlab par les exemples suivants :
(i)
   
4 −1 1 7
A1 =  4 −8 1 et b1 = −21 .
−2 1 5 15

(ii)
   
1 3 3 −2
A2 = 2 2 5 et b2 =  7  .
3 2 6 12

(iii)
  

−1 3 −4 2
A3 =  1 −5 4  et b3 = −1 .
2 1 8 5

3. Vérifier ensuite votre résultat en le calculant directement avec : x = inv(Ai )×bi , pour i = 1, 2, 3.
4. Prenez quelques exemples de cours et de TD pour tester votre fonction Matlab Gauss.

3. Méthode de décomposition LU
La méthode de décomposition LU consiste à factoriser la matrice A en un produit de deux matrices
triangulaires A = LU , où L est triangulaire inférieure (L pour lower en Anglais) et U est triangulaire
supérieure (U pour upper en Anglais). Il s’agit en fait du même algorithme que celui de l’élimination
de Gauss dans le cas particulier où on ne pivote jamais. Une fois établie la fatorisation LU de A,
la résolution du système linéaire Ax = b est équivalente à la simple résolution de deux systèmes
triangulaires Ly = b puis U x = y, soit LU x = b. L’algorithme de factorisation et de résolution LU est
donné par :
Factorisation LU


ii = 1, i = 1, · · · , n



 u




 pour k = 1, · · · , n
k−1

 
   X 
l = a − l u , i = k, · · · , n
 
ik ik ij jk

 

 



 j=1
 k−1
 u = 1 a −

   X 
 

 kj
 kj lki uij , j = k + 1, · · · , n
lkk
i=1
 Résolution Ly = b



i−1



 1 X 

 y i = bi − lij y j , i = 1, · · · , n
lii


j=1



Résolution U x = y





  n
X 

x = y − u ij j , i = n, · · · , 1.
x

i i



j=i+1

1. Ecrire une fonction Matlab intitulée DecompositionLU permettant de résoudre le système


Ax = b avec la factorisation LU de la matrice A en utilisant les fonctions Matlab Remontee
et Descente.
4

2. Tester et valider votre fonction Matlab par l’exemple suivant :


   
2 −1 1 0
A = 3 2 −5 et b = 1 .
1 3 −2 4
3. Vérifier si L × U = A.
4. Vérifier ensuite votre résultat en le calculant directement avec : x = A\b. Noter que la commande
backslash "\" est utilisée pour la résolution des systèmes linéaires.
5. Matlab dispose d’une fonction prédéfinie pour la factorisation LU appelée lu. Trouver la factori-
sation LU de la matrice A par la commande Matlab [L, U ] = lu(A) et par [L, U, P ] = lu(A), où
P est une matrice de permutation telle que A = P T LU . Avec cette syntaxe, L est triangulaire
inférieure ne possédant que des 1 sur la diagonale et U est triangulaire supérieure.
6. Prenez quelques exemples de cours et de TD pour tester votre fonction Matlab Decomposi-
tionLU.

4. Méthode de décomposition de Cholesky


La méthode de Cholesky permettant de factoriser une matrice A symétrique définie positive sous la
forme A = CC T , où C est une matrice triangulaire inférieure inversible. D’où l’algorithme de Cholesky :
Factorisation CC T



pour i =v 1, · · · , n



 



  u
u i−1
X
c2ik



 

 c ii = taii −

 
k=1



 i−1
1
 
   X 
− ik jk , j = i + 1, · · · , n

c = a c c
 
  ji c
 
 ij
ii
k=1
 Résolution Cy = b


 i−1
1

 X 
y = b − c ij j , i = 1, · · · , n
y

i i



 cii

 j=1
Résolution C T x = y




n



 1 X 

 x i = y i − c ji x j , i = n, · · · , 1.
cii


j=i+1

1. Ecrire une fonction Matlab intitulée Cholesky permettant de résoudre le système Ax = b par
la décomposition de Cholesky de la matrice A en utilisant les fonctions Matlab Remontee et
Descente.
2. Tester et valider votre fonction Matlab Cholesky par l’exemple suivant :
   
1 −1 −1 −1 5
−1 2 0 0  −1
A= −1 0
 et b =   .
3 1 4
−1 0 1 4 3

3. Vérifier si C × C T = A.
4. Vérifier ensuite votre résultat en le calculant directement avec : x = A\b.
5. Matlab dispose d’une fonction prédéfinie pour la factorisation de Cholesky appelée chol. Re-
trouver le même résultat par la commande Matlab C = chol(A,0 lower0 ).
6. Prenez quelques exemples de cours et de TD pour tester votre fonction Matlab Cholesky.