Vous êtes sur la page 1sur 9

Chapitre 3

Résolution numériques des systèmes


d’équations linéaires

Le but de ce chapitre est de proposer quelques méthodes de résolution des systèmes d’équa-
tions tel que :


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

 a21 x1

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


 . . . . .

 a x
m1 1 +am2 x2 + · · · +amn xn = bm

Dans ce système, on a A = aij connue, et B = bi connues et X = xj inconnues (i = 1, ..., m


et j = 1, .., n), alors :
1. Si m > n →système sur-déterminé,
2. Si m < n → système sous-déterminé.
3. Si m = n → système déterminé, une solution unique (si det(A)Ó=0 ),
Dans le dernier cas le système admet une unique solution que l’on peut obtenir par différentes
méthodes.
Soit par exemple un système linéaire de 3 équations à 3 inconnues (x1 , x2 , x3 ) :

 a11 x1 + a12 x2 + a13 x3
 = b1
a21 x1 + a22 x2 + a23 x3 = b2
 a x +a x +a x = b

31 1 32 2 33 3 3

Celui-ci peut aussi s’écrire sous forme matricielle :


     
a11 a12 a13 x1 b1
 a21 a22 a23  .  x2  =  b2 
     
a31 a32 a33 x3 b3

3.1 Méthode Matricielle(matrice inverse)


Si A−1 est la matrice inverse de A , le système A × x = B s’écrit aussi :

x = A−1 × B

La connaissance de A−1 permet alors de calculer directement la solution x par produit


matriciel direct.

27
Méthodes Numériques et programmation 2eme physique

Exemple : Soit le système d’équations suivant :



 x1 + 3x2 + 5x3
 = 6
2x1 − x2 = 0
5x1 + 4x2 + 3x3 = −1

   
1 3 5 6
On a la matrice A=  2 −1 0  et la matrice B=  0 
   
5 4 3 −1
La solution par Matlab est :

>>A=[1 3 5;2 -1 0; 5 4 3];


>>B=[6;0;-1];
>>x=A^(-1)*B
x=
-0.5227
-1.0455
1.9318
   
x1 −0.5227
Alors la solution est la matrice x =  x2  = −1.0455 
   
x3 1.9318

3.2 Méthode du pivot (Gauss-Jordan)


La méthode du pivot est plus commode pour les systèmes denses d’ordre élevé. cette méthode
basée sur le constat suivant : le système linéaire reste invariant pour les trois opérations suivantes
effectuées dans n’importe quel ordre et un nombre de fois indéterminé :
1. Permutation de lignes de la matrice A (et donc de b) ;
2. Multiplication d’une ligne par une constante non nulle ;
3. Addition d’une ligne à une autre ligne.
Pour un système de 3 équations à 3 inconnues suivant :
     
a11 a12 a13 x1 b1
 a21 a22 a23   2   b2 
x =
     
a31 a32 a33 x3 b3

Dans cette méthode, on choisit successivement chaque ligne comme ligne pivot, le pivot étant
le premier élément non nul de la ligne. On divise alors la ligne N˚1 du système par a11 :
 a a12 a13
    
b1
11
x1
 a11 a11 a11 a11
 a21 a22 a23   x2  =  b2 
    
a31 a32 a33 x3 b3

On obtient alors le système :


     
1 a′12 a′13 x1 b′1
 a21 a22 a23   x2  =  b2 
     
a31 a32 a33 x3 b3

On annule ensuite le premier terme de chacune des autres lignes, en retranchant à la 2ème
ligne la 1ère ligne multipliée par a21 , à la 3ème ligne la 1ère ligne multipliée par a31 , etc ...

c
RAHAB Hichem ¥2016-2017 28 rahab.e-monsite.com
Méthodes Numériques et programmation 2eme physique

     
1 a′12 a′13 x1 b′1
 a21 − a21 a22 − a21 ∗ a′12 a23 − a21 ∗ a′13   x2  =  b2 − a21 × b′1 
     
a31 a32 a33 x3 b3
     
1 a′12 a′13 x1 b′1
 0 a′22 a′23 
  ′ 
 x2  =  b2 
  
a31 a32 a33 x3 b3
De même pour la troisième ligne :
     
1 a′12 a′13 x1 b′1
a′22 a′23
  ′
0  x2  =  b2
   
  
a31 − a31 a32 − a31 ∗ a′12 a33 − a31 ∗ a′13 x3 b3 − a31 ∗ b′1
Alors :      
1 a′12 a′13 x1 b′1
 0 a′22 a′23 
  ′ 
 x2  =  b2 
  
0 a′32 a′33 x3 b′3
On procède ainsi avec la deuxième linge :

1 a′12 a′13 b′1


     
x1
 0 a′22 a′23   b′ 
 x2  =  a′2 
 
 a′ a′22 a′22 
22 22
0 a′32 a′33 x3 b′3

Alors :      
1 a′12 a′13 x1 b′1
 0 1 a′′23 
  ′′ 
 x2  =  b 
  

0 a32 a33′ x3 b′3

On annule ensuite le deuxième terme des lignes 1 et 3, en retranchant à la 1ère ligne la 2ème
ligne multipliée par a12 , à la 3ème ligne la 2ème ligne multipliée par a32 .
     
1 a′12 − (a′12 × 1) a′13 − (a′12 × a′′23 ) x1 b′1 − (a′12 × b′′2 )
a′′23
  ′′
 0 1  x2  =  b2
   
 
0 a′32 − (a′32 × 1) a′33 − (a′32 × a′′23 ) x3 b′3 − (a′32 × b′′2 )
On obtient :      
1 0 a′′13 x1 b′′1
 0 1 a′′23 
  ′′ 
 x2  =  b2 
  
0 0 a′′33 x3 b′′3
La solution du système peut être obtenue ainsi :

n
 x1 = b1

2 x = bn
2
 x = bn

1 3

Exemple Soit à résoudre le système d’équation suivant par la méthode de Gauss :



 4x1
 + x2 +x3 = 7
x1 − 7x2 +2x3 = −2
 3x

+4x3 = 11
1

c
RAHAB Hichem ¥2016-2017 29 rahab.e-monsite.com
Méthodes Numériques et programmation 2eme physique

On écrit :      
4 1 1 x1 7
 1 −7 2  x = −2
     
 2   
3 0 4 x3 11

On définit tout d’abord la matrice argument dans Matlab par :


 
4 1 1 7
A =  1 −7 2 −2 
 
3 0 4 11

On commence par diviser la première ligne par le Pivot=4.

4 1 1 7
1 41 14 74
   
4 4 4 4
A =  1 −7 2 −2  =  1 −7 2 −2 
   
3 0 4 11 3 0 4 11

On annule ensuite le premier terme des lignes 2 et 3, en retranchant à la 2ème ligne la 1ère ligne
multipliée par ’1’, à la 3ème ligne la 1ère ligne multipliée par ’3’,
 1 1 7   1 1 7 
1 4 4 4 1 4 4 4
   
   
1 1 7
A= 1−1 −7 − 2− −2 − = 0 − 29 7
− 15
   
 4 4 4   4 4 4 

   
1 1 7
3−3 0−3× 4 4−3× 4 11 − 3 × 4 0 − 43 13
4
23
4

Ensuite on diviser la deuxième ligne par le Pivot= −29


4

1 1 7
1
   1 1 7 
4 4 4 1 4 4 4
   
 −29 7 −15
  
15
   −7
A= = 0 1
 0
4 4 4 
−29 −29 −29   29 29 
 4 4 4   
  
0 − 34 13 23 0 − 34 13
4
23
4
4 4

On annule ensuite le deuxième terme des lignes 1 et 3, en retranchant à la 1ère ligne la 2ème
ligne multipliée par ’ 41 ’, à la 3ème ligne la 2ème ligne multipliée par ’ −3
4 ’,

 1 1 1 1 −7 7 1 15   9 188 
1 4 − 4 ×1 4 − 4 × 29 4 − 4 × 29 1 0 29 116
   
   
−7 15 −7 15
A= 0 1 = 0 1
   
 29 29   29 29 

   
−3 13 23 15 356 712
0 4 − ( −3
4 × 1) 4 − ( −3
4 ×
−7
29 ) 4 − ( −3
4 × 29 ) 0 0 116 116

Dans l’étape suivante on diviser la troisième ligne par le Pivot= 356


116

9 188
1 0
   9 188 
29 116 1 0 29 116
   
  
 0 1 −7 15 
15
  −7
A= 29 29 = 0 1 
   29 29 

   
 356 712 
0 0 116
356
116
356 0 0 1 2
116 116

c
RAHAB Hichem ¥2016-2017 30 rahab.e-monsite.com
Méthodes Numériques et programmation 2eme physique

Comme a été fait avant on annule ensuite le troisième terme des lignes 1 et 2, en retranchant
9
à la 1ère ligne la 3ème ligne multipliée par ’ 29 ’, à la 2ème ligne la 3ème ligne multipliée par ’ −7
29 ’.
 9 9 188 9 
1 0 29 − ( 29 × 1) 116 − ( 29 × 2)  



 1 0 0 1
−7 15
A= 0 1 − ( −7
29 × 1)
−7
29 − ( 29 × 2)  = 0 1 0 1 
   
29
0 0 1 2
 
 
0 0 1 2

La solution obtenue est alors : x1 = 1 x2 = 1 x3 = 2

Programme Matlab
Le programme Matlab correspondent à la résolution d’un système de 3 équations à l’aide de la
méthode de Gauss-Jordan est donné par la fonction Matlab suivante :

function [x]=Gauss(A)

disp(’Le premier pivot A(1,1)’)


Pivot=A(1,1);
for j=1:4
A(1,j)=A(1,j)/Pivot;
end

Pivot=A(2,1);
for j=1:4
A(2,j)=A(2,j)- Pivot*A(1,j);
end

Pivot=A(3,1);
for j=1:4
A(3,j)=A(3,j)- Pivot*A(1,j);
end

disp(’Le deuxième pivot A(2,2)’)


Pivot=A(2,2);
for j=2:4
A(2,j)=A(2,j)/Pivot;
end

Pivot=A(1,2);
for j=2:4
A(1,j)=A(1,j)- Pivot*A(2,j);
end

Pivot=A(3,2);
for j=2:4
A(3,j)=A(3,j)- Pivot*A(2,j);
end

disp(’Le troisième pivot A(3,3)’)


Pivot=A(3,3);
for j=3:4

c
RAHAB Hichem ¥2016-2017 31 rahab.e-monsite.com
Méthodes Numériques et programmation 2eme physique

A(3,j)=A(3,j)/Pivot;
end

Pivot=A(1,3) ;
for j=3:4
A(1,j)=A(1,j)-Pivot*A(3,j);
end

Pivot=A(2,3);
for j=3:4
A(2,j)=A(2,j)- Pivot*A(3,j);
end

x(1)=A(1,4);
x(2)=A(2,4);
x(3)=A(3,4);

Exemple En utilisant l’exemple précédent :


 
4 1 1 7
A =  1 −7 2 −2 
 
3 0 4 11

Le programme est exécuté ainsi :


>> A=[4 1 1 7; 1 -7 2 -2; 3 0 4 11];
>> [x]=Gauss(A)

x =

1.0000 1.0000 2.0000

3.3 Méthode de Gauss-Seidel


La méthode de Gauss seidel est une méthode itérative pour le calcul de la solution d’un sys-
(k) (k) (k)
tème linéaire Ax = b avec A ∈ Rn×n . Elle construit une suite de vecteurs : x(k) = (x1 , x2 , ..., xn )
convergent vers le vecteur solution exacte x = (x1 , x2 , ..., xn ) pour tout vecteur initiale x(0) =
(0) (0) (0)
(x1 , x2 , ..., xn lorsque k tend vers ∞.
soit le système de 3 équations à trois inconnues :

 a11 x1 + a12 x2 + a13 x3
 = b1
a21 x1 + a22 x2 + a23 x3 = b2
 a x +a x +a x = b

31 1 32 2 33 3 3

ce système peut s’écrit ainsi :



 x1
 = (b1 − a12 x2 − a13 x3 )/a11
x2 = (b2 − a21 x1 − a23 x3 )/a22
 x = (b − a x − a x )/a

3 3 31 1 32 2 33

À la première itération, on calcule à partir du vecteur initial :


(0) (0) (0)
x0 = (x1 , x2 , x3 )

c
RAHAB Hichem ¥2016-2017 32 rahab.e-monsite.com
Méthodes Numériques et programmation 2eme physique

Les valeurs de x de la première itération se calculent ainsi :



(1) (0) (0)
 x1 = (b1 − a12 x2 − a13 x3 )/a11


(1) (1) (0)
x
2 = (b2 − a21 x1 − a23 x3 )/a22
 x(1) (1) (1)

= (b3 − a31 x1 − a32 x2 )/a33

3

Et on continue jusqu’à aboutir à une précision suffisante.

Exemple Considérons le système linéaire :


 
4x1 + 2x2 + x3 = 4
 −x1 + 2x2 = 2 
 
2x1 + x2 + 4x3 = 9

On peut le mettre sous la forme :


 
x1 = (4 − 2x2 − x3 )/4
 x2 = (2 + x1 )/2
 

x3 = (9 − 2x1 − x2 )/4

Soit x(0) = (0, 0, 0) le vecteur initiale.

Itération N 1
En partant de x(0) = (0, 0, 0)
 
x1 = (4 − 2(0) − (0))/4 = 1
 x2 = (2 + 1)/2 = 3/2 
 
x3 = (9 − 2(1) − 3/2)/4 = 11/8

x(1) = (1, 23 , 11
8 )

Itération N 2
En partant de : x(1) = (1, 32 , 11
8 )

x1 = (4 − 2( 23 ) − ( 11
 
−3
8 ))/4 = 32
61
 x2 = (2 − −3 )/2 =
 
32 64 
−3 61 527
x3 = (9 − 2( 32 ) − ( 64 ))/4 = 256

61 527
x(2) = ( −3
32 , 64 , 256 )

Itération N 3
61 527
En partant de : x(2) = ( −3
32 , 64 , 256 )

x1 = (4 − 2( 61 527 9
 
64 ) − ( 256 ))/4 = 1024
9 2057
 x2 = (2 + 1024 )/2 =
 
2048 
9 2057 16339
x3 = (9 − 2( 1024 ) − ( 2048 ))/4 = 8192

9 2057 16339 ∼
x(3) = ( 1024 , 2048 , 8192 ) = (0.0087, 1.0043, 1.9945)

La suite x(3) converge vers la solution du système x = (0, 1, 2).

c
RAHAB Hichem ¥2016-2017 33 rahab.e-monsite.com
Méthodes Numériques et programmation 2eme physique

Programme Matlab de la méthode


function x=Gauss_Seidel(a,b,Iter)
x=[0,0,0];
for i=1:Iter %Les itérations
x(1)=(b(1)-x(3)*a(1,3)-x(2)*a(1,2))/a(1,1);
x(2)=(b(2)-x(3)*a(2,3)-x(1)*a(2,1))/a(2,2);
x(3)=(b(3)-x(2)*a(3,2)-x(1)*a(3,1))/a(3,3);
end
x

Remarque :
Le Iter représente le nombre d’itérations qu’on désire faire pour approximer la solution.

Exemple En exécutant le programme MATLAB avec l’exemple précédent :

>> [x]=Gauss_seidel(A,B,3)

x =

0.0088 1.0044 1.9945

3.3.1 Test d’arrêt


On décide d’arrêter la méthode de Gausse-Seidel lorsque la différence (Ax − b) sera inférier
à une tolérance préciser à l’avance Tol. on modifier ainsi le programme précédent.

Programme Matlab avec test d’arrêt


function [x,iter]=Gauss_Seidel(a,b)
iter=0;
x=[0,0,0];
C=(a*x’)-b;
tol=1e-5;
while abs(C(1))>tol | abs(C(2))>tol | abs(C(3))>tol %Les itérations
x(1)=(b(1)-x(3)*a(1,3)-x(2)*a(1,2))/a(1,1);
x(2)=(b(2)-x(3)*a(2,3)-x(1)*a(2,1))/a(2,2);
x(3)=(b(3)-x(2)*a(3,2)-x(1)*a(3,1))/a(3,3);
iter=iter+1;
C=(a*x’)-b ;
end

Exemple Soit à résoudre le système suivant :



 3x1 + 2x2 + x3
 = 10
2x1 − 3x2 − 2x3 = 10
 x − x + 2x

= 5
1 2 3

Le programme Matlab s’exécute de la façon suivante :

>> A=[ 3 2 1; 2 -3 -2;1 -1 2];


>> B=[10 ;10; 5];
>> [x,iter]=Gauss_seidel2(A,B)

c
RAHAB Hichem ¥2016-2017 34 rahab.e-monsite.com
Méthodes Numériques et programmation 2eme physique

x =

3.8571 -0.8571 0.1429

iter =

17

c
RAHAB Hichem ¥2016-2017 35 rahab.e-monsite.com

Vous aimerez peut-être aussi