100% ont trouvé ce document utile (1 vote)
302 vues5 pages

Corrigé TP : Systèmes Linéaires

Transféré par

Fatima zohra Bekkai
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
302 vues5 pages

Corrigé TP : Systèmes Linéaires

Transféré par

Fatima zohra Bekkai
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Djelfa - Département de physique - L2-Socl commun de physique - 2021/2022

Module : Méthodes numériques et programmation

Corrigé de TP 5 : Résolution numérique des systèmes d’équations linéaires

I. Travail dirigé
1) On écrit d’abord la matrice augmentée :
2 1 2 10
[6 4 0 |26]
8 5 1 35
On effectue ensuite des opérations sur ses lignes afin d’obtenir un système triangulaire supérieur. On suit
les étapes suivantes :
Etape 1 : Elimination sur la colonne 1 de la matrice précédente
On applique des opérations élémentaires sur les lignes 2 et 3 comme suivant :
② 1 2 10
[6 4 0 |26] (𝐿2 ← 𝐿2 − (6⁄②)𝐿1 )
8 5 1 35 (𝐿3 ← 𝐿3 − (8⁄②)𝐿1 )
On obtient :
2 1 2 10
[0 1 −6 |−4]
0 1 −7 −5
Remarque : l’élément 2 est appelé pivot.
Etape 2 : Elimination sur la colonne 2 de la matrice précédente
On applique une opération élémentaire sur la ligne 3 comme suivant :
2 1 2 10
[0 ① −6 |−4]
0 1 −7 −5 (𝐿3 ← 𝐿3 − (1⁄①)𝐿2 )
On obtient :
2 1 2 10
[0 1 −6 |−4]
0 0 −1 −1
Remarque : l’élément 1 est appelé pivot.
Le système triangulaire supérieur obtenu est donc :
2 1 2 𝑥1 10
[0 1 −6] [𝑥2 ] = [−4]
0 0 −1 𝑥3 −1
ou encore :
2𝑥1 + 1𝑥2 + 2𝑥3 = 10
(0)𝑥1 + 1𝑥2 + (−6)𝑥3 = −4
(0)𝑥1 + (0)𝑥2 + (−1)𝑥3 = −1
[
sa solution est : 𝑋 = 1𝑥 𝑥2 𝑥3 ]𝑇
, tel que :
−4 − (−6)(1) 10 − (1)(2) − (2)(1)
𝑥3 = −1⁄−1 = 1 , 𝑥2 = = 2 , 𝑥1 = =3
1 2
2) Soit le système linéaire suivant :

1) On utilise le théorème de convergence, on a :


|3| > |1| + |−1| , |5| > |1| + |2| , |−6| > |2| + |−1|
Les trois inégalités sont vérifiées, alors la matrice 𝐴 est à diagonale strictement dominante, et par
conséquent la méthode de Gauss-Seidel converge.
2) Pour le système (2), la méthode de Gauss-Seidel s’écrit :

1
1
𝑥1𝑘+1 = (2 − 𝑥2𝑘 + 𝑥3𝑘 )
3
1
𝑥2𝑘+1 = (17 − 𝑥1𝑘+1 − 2𝑥3𝑘 )
5
1
𝑥3𝑘+1 = (−18 − 2𝑥1𝑘+1 + 𝑥2𝑘+1 )
−6
partant de [0 0 0]𝑇 , on trouve d’abord :
1 2
𝑥11 = (2 − 0 + 0) =
3 3
1 2 49
𝑥21 = (17 − − 0) =
5 3 15
1 2 49 241
𝑥31 = (−18 − 2 ( ) + ) =
−6 3 15 90
tandis qu’à la deuxième itération on trouve :
1 49 241
𝑥11 = (2 − + ) = 0,4703704
3 15 90
1 241
𝑥21 = (17 − 0,4703704 + 2 ( )) = 2,234815
3 90
1
𝑥31 = (−18 − 2(0,4703704) + 2,234815) = 2,784321
−6
ainsi que les itérations suivantes :
𝑘 𝑥1𝑘 𝑥2𝑘 𝑥3𝑘
1 0.6666667 3.266667 2.677778
2 0.4703704 2.234815 2.784321
3 0.8498354 2.116305 2.930561
4 0.9380855 2.040158 2.972669
5 0.9775034 2.015432 2.989929
6 0.9914991 2.005729 2.996212
7 0.9968277 2.002150 2.998584
8 0.9988115 2.000804 2.999470
9 0.9995553 2.000301 2.999802
10 0.9998335 2.000113 2.999926
II. Travail pratique
1) Méthode d’élimination de Gauss
a. Algorithme de la méthode d’élimination de Gauss :

1. Donner la matrice 𝐴, le vecteur 𝐵 et la dimension 𝑛 du sytème.


2. Calculer les éléments du système triangulaire supérieur équivalent par :
𝑎𝑖𝑘 𝑎𝑖𝑘
𝑎𝑖𝑗 = 𝑎𝑖𝑗 − 𝑎𝑘𝑗 , 𝑏𝑖 = 𝑏𝑖 − 𝑏 , 𝑘 = 1: 𝑛 − 1 , 𝑖 = 𝑘 + 1: 𝑛 , 𝑗 = 𝑘: 𝑛
𝑎𝑘𝑘 𝑎𝑘𝑘 𝑘
3. Calculer la solution recherchée du système par la formule :
𝑏′𝑛
𝑠𝑖 𝑖 = 𝑛
𝑎′𝑛𝑛
𝑥𝑖 = , (𝑖 = 𝑛 , … , 2 , 1)
(𝑏′𝑖 − ∑𝑛𝑗=𝑖+1 𝑎′𝑖𝑗 𝑥𝑗 )
𝑠𝑖 𝑖 ≠ 𝑛
{ 𝑎′𝑖𝑖
du système obtenu :

2
𝑎′11 𝑎′12 𝑎′13 … 𝑎′1𝑛 𝑥1 𝑏 ′1
0 𝑎′ 22 𝑎′ 23 … 𝑎′ 2𝑛 𝑥2 𝑏′2
0 0 𝑎′ 33 … 𝑎′ 3𝑛 𝑥3 = 𝑏 ′ 3
⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮
[ 0 0 0 0 𝑎′ 𝑛𝑛 ] [𝑥𝑛 ] [𝑏 ′ 𝑛 ]

b. Le programme MATLAB de la méthode d’élimination de Gauss :

clear all;close all;clc;


%Programme de la méthode d'élimination de Gauss
A=[2 1 2;6 4 0;8 5 1];B=[10;26;35];n=length(B);
%Calcul du système triangulaire supérieur
for k=1:n-1
if A(k,k)==0
disp('Attention: pivot nul')
break
end
for i=k+1:n
C=A(i,k)/A(k,k);
B(i)=B(i)-B(k)*C;
for j=k:n
A(i,j)=A(i,j)-A(k,j)*C;
end
end
end
disp('La matrice triangulaire supérieur obtenue est :')
disp(A)
disp('Le vecteur B devient :')
disp(B)
%Calcul de la solution du système
for i=n:-1:1
if i==n
x(i)=B(i)/A(i,i);
else
s1=0;
for j=i+1:n
s1=s1+A(i,j)*x(j);
end
x(i)=(B(i)-s1)/A(i,i);
end
end
disp('solution est :')
disp(x)

Après exécution on obtient

La matrice triangulaire supérieur obtenue est :


2 1 2
0 1 -6
0 0 -1
Le vecteur B devient :
10
-4
-1
La solution est :
3 2 1

3
Attention : On ne peut pas appliquer la méthode d’élimination de Gauss si le pivot dans chaque étape est
nul.
c. On fait ce calcul directement sur la zone de commandes :
>> A=[2 1 2;6 4 0;8 5 1];B=[10;26;35];
>> X=A\B
X=
3
2
1

>> X=inv(A)*B
X=
3
2
1

Ces commandes prédéfinies équivalentes donnent le même résultat que notre programme réalisé.

2) Méthode de Gauss-Seidel

a. On fait ce calcul directement sur la zone de commandes :

>> A=[3 1 -1;1 5 2;2 -1 -6];B=[2;17;-18];


>> X=inv(A)*B
X=
1
2
3

>> X=A\B
X=
1.00000000000000
2.00000000000000
3.00000000000000

b. Algorithme de la méthode de Gauss-Seidel :

1. Donner la matrice 𝐴, le vecteur 𝐵, un vecteur de départ 𝑋0 , la précision 𝜀, le nombre maximal des


itérations 𝑁.
2. Calculer les éléments du vecteur 𝑋 𝑘+1 à partir du vecteur 𝑋 𝑘 en utilisant la formule la méthode de
Gauss-Seidel.
3. Si max|𝑋 𝑘+1 − 𝑋 𝑘 | ≤ 𝜀 ; afficher le résultat : vecteur solution 𝑋 = 𝑋 𝑘+1 et le nombre d’itération 𝑘, et
arrêter le calcul.
Si max|𝑋 𝑘+1 − 𝑋 𝑘 | > 𝜀 ; poser 𝑋 𝑘+1 = 𝑋 𝑘 .
Si 𝑘 > 𝑁 afficher « le nombre d’itérations maximal est atteint » et arrêter.
4. Retour à l’étape 2.

4
c. Le programme MATLAB de la méthode de Gauss-Seidel :

clear all;close all;clc;


format long
%Programme de la méthode de Gauss-Seidel
A=[3 1 -1;1 5 2;2 -1 -6];B=[2;17;-18];n=length(B);
x0=[0;0;0];
x1=x0;
eps=10^-2
e=1+eps;
k=0;
while e>eps
for i=1:n
s1=A(i,1:i-1)*x1(1:i-1);
s2=A(i,i+1:n)*x0(i+1:n);
x1(i)=(B(i)-s1-s2)/A(i,i);
end
e=max(abs(x1-x0));
x0=x1;
k=k+1;
end
disp('le vecteur solution est')
disp(x1)
disp('le nombre d''itérations est')
disp(k)

On obtient après exécution le résultat suivant :

le vecteur solution est :


0.99682770502025
2.00214981016155
2.99858426664649
le nombre d'itérations est : 7

d. Les résultats obtenus pour différentes précisions sont donnés dans le tableau suivant :

𝜀 Nombre 𝑥1 𝑥2 𝑥3
d’itérations
10−2 7 0.99682770502025 2.00214981016155 2.99858426664649
10−3 9 0.99955527762739 2.00030101282468 2.99980159040502
10−4 12 0.99997667778165 2.00001578354740 2.99998959533598
10−6 14 0.99999673260932 2.00000221124840 2.99999854232837

On conclut que lorsque la précision augmente, le nombre d’itérations effectué augmente plus en plus, et la
solution converge vers la solution exacte.

Vous aimerez peut-être aussi