Vous êtes sur la page 1sur 9

République Algérienne Démocratique et Populaire

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique

Université des Sciences et de la Technologie d’Oran Mohamed Boudiaf

Module : Méthodes Numériques Appliquées

Compte rendu du TP 1 : Résolution des systèmes linéaires par les méthodes itératives

Département d’automatique

1er Année Électromécanique

2023-2024

Sous-group (trinôme) :
-MESSELEM Hadjer Ben Wafae Idrise
- SENOUCI Imène
- SHAHER Rehab Abdurrahman Abdullah Mohammed

Enseignant responsible:
Mr. .ZAGOUG Sid Ahmed
I. Introduction :
Lorsque les méthodes directes deviennent coûteuses en termes de calcul ou inefficaces, les
méthodes itératives sont nécessaires pour résoudre des systèmes linéaires. Les méthodes itératives
sont des méthodes alternatives pour résoudre les systèmes d'équations linéaires (Ax = b)
A : La matrice des coefficients
x : Le vecteur des inconnues (solution)
b : Le vecteur du côté droit.

Les méthodes itératives produisent une solution approximative après un nombre fini d'itérations plutôt
que de calculer directement une solution exacte. Ces méthodes sont particulièrement utiles pour les
grands systèmes d’équations, où il est raisonnable de sacrifier la précision pour un temps de calcul
plus court.
Il existe de nombreuses méthodes itératives, mais celles que nous allons utiliser sont les suivantes :
I.1 La méthode de Jacobi
La méthode de Jacobi consiste à décomposer la matrice des coefficients A en :
• Une matrice diagonale D
• Une matrice triangulaire supérieure U
• Une matrice triangulaire inférieure L
De sorte que (A = D + U + L).
Pour la méthode de Jacobi, la formule d'itération est

𝒙(𝒌+𝟏) = −𝑫−𝟏 (𝑳 + 𝑼) 𝒙(𝒌) + 𝑫−𝟏 𝒃


𝒙(𝒌+𝟏) = 𝑫−𝟏 𝑵 𝒙(𝒌) + 𝑫−𝟏 𝒃
Définissez 𝑻𝑱 = 𝑫−𝟏 𝑵 et 𝑪𝑱 = 𝑫−𝟏 𝒃
Donc La méthode de Jacobi peut s'écrire comme suit :
𝒙(𝒌+𝟏) = 𝑻𝑱 𝒙(𝒌) + 𝑪𝑱 Avec 𝒌 = 𝟏, 𝟐, 𝟑, ⋯
Chaque composante du vecteur solution x est mise à jour en utilisant les valeurs de
l'itération précédente.
I.2 La méthode de Gauss-Seidel
La méthode de Gauss-Seidel, qui est similaire à celle de Jacobi, consiste à
décomposer A en D, U et L.
Pour Gauss-Seidel, la formule d'itération est la suivante :

𝒙(𝒌+𝟏) = −(𝑫 + 𝑳)−𝟏 𝑼 𝒙(𝒌) + (𝑫 + 𝑳)−𝟏 𝒃


Définissez 𝑻𝒈 = (𝑫 + 𝑳)−𝟏 𝑼 et 𝑪𝒈 = (𝑫 + 𝑳)−𝟏 𝒃
Donc La méthode de Gauss-Seidel peut s'écrire comme suit :
𝒙(𝒌+𝟏) = −𝑻𝒈 𝒙(𝒌) + 𝑪𝒈 Avec 𝒌 = 𝟏, 𝟐, 𝟑, ⋯
Contrairement à Jacobi, Gauss-Seidel utilise immédiatement les valeurs mises à jour
de x dans la même itération.
II. Problème résolu à l'aide des méthodes itératives de résolution des systèmes
linéaires (Approche Matricielle)
Soit le système suivant :
3 1 −1 2 0
𝐴 = [1 5 2] ; 𝑏 = [ 17 ] ; 𝒙(𝟎) = [0] ; k=4
2 −1 −6 −18 1
La solution théorique
La méthode de Jacobi
3 1 −1 0 1 −1
𝐴 = [1 5 2 ] ⟹ 𝑈 = [0 0 2 ]
2 −1 −6 0 0 0
3 0 0 0 0 0
𝐷 = [0 5 0 ] 𝐿 = [1 0 0]
0 0 −6 2 −1 0

0 1 −1 0 0 0
𝑁 = − ([0 0 2 ] + [ 1 0 0])
0 0 0 2 −1 0
0 −1 1
= [−1 0 −2]
−2 1 0
1
0 0
3
1
𝐷−1 = 0 0
5
1
[0 0 − ]
6
1 1 1
0 0 0 −
3 3 3
1 0 −1 1 1 2
𝑻𝑱 = 𝑫−𝟏 𝑵 = 0 0 ∗ [−1 0 −2] = − 0 −
5 −2 1 0 5 5
1 1 1
[0 0 − 6] [ 3 −6 0 ]
1
0 0 2
3
1 2 3
𝑪𝑱 = 𝑫−𝟏 𝒃 = 0 0 ∗ [ 17 ] = 17
5
1
−18 5
[3]
[0 0 −
] 6
𝒙(𝟏) = 𝑻𝑱 𝒙(𝟎) + 𝑪𝑱
1 1
0 − 2
3 3
1 2 0 3 𝟏
𝒙(𝟏) = − 0 − ∗ [0] + 17 = [𝟑]
5 5 1 𝟑
1 1 5
− 0 [ 3 ]
[ 3 6 ]

𝒙(𝟐) = 𝑻𝑱 𝒙(𝟏) + 𝑪𝑱
1 1
0 − 2 𝟐
3 3
1 2 1 3 𝟑 𝟎. 𝟔𝟔𝟔𝟕
𝒙(𝟐) = − 0 − ∗ [3] + 17 = 𝟐 = [ 𝟐. 𝟎𝟎𝟎𝟎 ]
5 5 3 𝟏𝟕 𝟐. 𝟖𝟑𝟑𝟑
1 1 5
− 0 [ 3 ] [ 𝟔 ]
[ 3 6 ]

𝒙(𝟑) = 𝑻𝑱 𝒙(𝟐) + 𝑪𝑱
1 1 𝟏𝟕
0 − 2 2
3 3 𝟏𝟖
1 2 3 3 𝟑𝟐 𝟎. 𝟗𝟒𝟒𝟒
𝒙(𝟑) = − 0 − ∗ 2 + 17 = = [ 𝟐. 𝟏𝟑𝟑𝟑 ]
5 5 17 𝟏𝟓 𝟐. 𝟖𝟖𝟖𝟗
1 1 5 𝟐𝟔
− 0 [6] [3]
[ 3 6 ] [𝟗]

𝒙(𝟒) = 𝑻𝑱 𝒙(𝟑) + 𝑪𝑱
1 1 17 𝟏𝟐𝟒
0 − 2
3 3 18 𝟏𝟑𝟓
1 2 32 3 𝟑𝟕 𝟎. 𝟗𝟏𝟖𝟓
𝒙(𝟒) = − 0 − ∗ + 17 = = [ 𝟐. 𝟎𝟓𝟓𝟔]
5 5 15 𝟏𝟖 𝟐. 𝟗𝟓𝟗𝟑
1 1 26 5 𝟕𝟗𝟗
− 0 [ 3 ]
[ 3 6 ] [9] [𝟐𝟕𝟎]

La méthode de Gauss-Seidel
3 1 −1 0 1 −1
𝐴 = [1 5 2 ] ⟹ 𝑈 = [0 0 2]
2 −1 −6 0 0 0
0 0 0 3 0 0
𝐿 = [1 0 0] 𝐷 = [0 5 0]
2 −1 0 0 0 −6

3 0 0 0 0 0 3 0 0
𝐷 + 𝐿 = [0 5 0 ] + [1 0 0] = [1 5 0]
0 0 −6 2 −1 0 2 −1 −6
1
(𝐷 + 𝐿)−1 = ∗ 𝑐𝑜𝑚((𝐷 + 𝐿)−1 )𝑡
det(𝐷 + 𝐿)−1 )
5 0
det(𝐷 + 𝐿)−1 ) = 3 | | = 3 ∗ ((5 ∗ −6) − (−1 ∗ 0)) = −90
−1 −6
5 0 1 0 1 5
| | | | | |
⏟−1 −6 ⏟2 −6 ⏟ 2 −1
+ − +
0 0 3 0 3 0
𝑐𝑜𝑚((𝐷 + 𝐿)−1 ) = |⏟
1 −6
| |
⏟2
| |
−6 ⏟ 2 −1
|
− + −
0 0 3 0 3 0
| | | | | |

5 0 ⏟
1 0 ⏟
1 5
[ + − + ]
−30 6 −11
= [ 0 −18 3 ]
0 0 15
−30 0 0
𝑐𝑜𝑚((𝐷 + 𝐿)−1 )𝑡 = [ 6 −18 0 ]
−11 3 15
1 −30 0 0
(𝐷 + 𝐿)−1 = ∗[ 6 −18 0 ]
−90
−11 3 15
1
0 0
3
−1 1
(𝐷 + 𝐿)−1 = 0
15 5
11 −1 −1
[ 90 30 6 ]
1 1 −1
0 0 0
3 0 1 −1 3 3
−1 1 −1 7
𝑇𝑔 = (𝐷 + 𝐿)−1 𝑈 = 15 5
0 ∗ [0 0 2 ]= 0 15 15
11 −1 −1 0 0 0 11 −17
[ 90 30 6 ] [0 90 90 ]
1 2
0 0
3 3
−1 1 2 49
𝐶𝑔 = (𝐷 + 𝐿)−1 𝑏 = 0 ∗ [ 17 ] =
15 5 −18 15
11 −1 −1 241
[ 90 30 6] [ 90 ]

𝒙(𝟏) = −𝑻𝒈 𝒙(𝟎) + 𝑪𝒈


1 −1 2
0 𝟏
3 3 3 𝟏𝟒
−1 7 0 49 𝟏. 𝟎𝟎𝟎𝟎
𝒙(𝟏) = − 0 ∗ [0] + ⟹ 𝒙(𝟏) = 𝟓 = [𝟐. 𝟖𝟎𝟎𝟎]
15 15 1 15 𝟒𝟑 𝟐. 𝟖𝟔𝟔𝟕
11 −17 241
[𝟏𝟓]
[0 90 90 ] [ 90 ]

𝒙(𝟐) = −𝑻𝒈 𝒙(𝟏) + 𝑪𝒈


1 −1 2 𝟑𝟏
0 1
3 3 14 3 𝟒𝟓
−1 7 49 𝟒𝟕𝟔 𝟎. 𝟔𝟖𝟖𝟗
𝒙(𝟐) = − 0 ∗ 5 + ⟹ 𝒙(𝟐) = = [𝟐. 𝟏𝟏𝟓𝟔]
15 15 43 15 𝟐𝟐𝟓 𝟐. 𝟖𝟕𝟕𝟎
11 −17 241 𝟏𝟗𝟒𝟐
[15]
[0 90 90 ] [ 90 ] [ 𝟔𝟕𝟓 ]

𝒙(𝟑) = −𝑻𝒈 𝒙(𝟐) + 𝑪𝒈


1 −1 31 2
0
3 3 45 3
−1 7 476 49 𝟎. 𝟗𝟐𝟎𝟒
𝒙(𝟑) = − 0 ∗ + ⟹ 𝒙(𝟑) = [𝟐. 𝟎𝟔𝟓𝟎𝟖]
15 15 225 15 𝟐. 𝟗𝟔𝟐𝟔𝟓
11 −17 1942 241
[0 90 90 ] [ 675 ] [ 90 ]

𝒙(𝟒) = −𝑻𝒈 𝒙(𝟑) + 𝑪𝒈

1 −1 2
0
3 3 3
−1 7 0.9204 49 𝟎. 𝟗𝟔𝟓𝟖
𝒙(𝟒) = − 0 ∗ [2.06508] + (𝟒)
⟹ 𝒙 = [𝟐. 𝟎𝟐𝟏𝟕]
15 15 2.96265 15 𝟐. 𝟗𝟖𝟒𝟗
11 −17 241
[0 90 90 ] [ 90 ]
Programme Matlab
clc;
clear all ;
close all;

% Input Values
A=input('Write the Matrix A '' A = ') % A=[3,1,-1;1,5,2;2,-1,-6];
b=input ('Write the Vector b '' b = ') % b = [2; 17;-18];
X0=input ('Write the Vector X0 '' X0 = ') % X0 = [0; 0; 1];
n=input('enter the number of iteration '' n = ') % n = 20;

% Determine matrix size


[M, I]=size (A);
if M~=I
error ('A is not a square Matrix')
end

%Check for diagonally dominant


for m=1:M
row=abs(A(m,:));
d=sum (row)-row(m);
if row(m)<=d
error ('[A] is not diagonally dominant')
end
end

% Calculate The Matrixes D, L, U , P , Tj ,Cj , Tg, Cg .


D=diag (diag(A));
L = D-tril (A);
U= D-triu (A);
Tj=inv (D)*(L+U);
Cj=inv (D)*b;
P=D-L;
Tg=inv (P)*U;
Cg=inv (P)*b;

% Solution of Jacobi's method


X=X0;
Y=X0;
for i=1:n
X=Tj*X+Cj;
Y=Tg*Y+Cg;
end
disp ('The solution by Jacobi is')
disp(X)
disp ('The solution by Gauss-Seidel is')
disp(Y)

The solution by Jacobi is The solution by Gauss-Seidel is


1.0000 1.0000
2.0000 2.0000
3.0000 3.0000
𝟏
Le résultat obtenus par le calculant direct 𝒙 = 𝒊𝒏𝒗(𝑨) ∗ 𝒃 ⟹ 𝒙 = [𝟐]
𝟑
Donc, L’itération numéro 20 est celle qui nous a donné la solution exacte du système linéaire.

III. Problème résolu à l'aide des méthodes itératives de résolution des systèmes
linéaires
Le système des équations linéaire est le suivante
10𝑥1 + 3𝑥2 + 𝑥3 = 19
3𝑥1 + 10𝑥2 + 2𝑥3 = 29
𝑥1 + 2𝑥2 + 10𝑥3 = 35
𝑥 0 = [0 ;0 ; 0]
III.1. La solution théorique de système
Pour résoudre se système on va utiliser la méthode directe de Jacobi
1
𝒙𝟏 𝒌+𝟏 = (19 − 3𝒙𝟐 𝒌 − 𝒙𝟑 𝒌 )
10
1
𝒙𝟐 𝒌+𝟏 = (29 − 𝒙𝟏 𝒌 − 2𝒙𝟑 𝒌 )
10
1
𝒙𝟑 𝒌+𝟏 = (35 − 𝒙𝟏 𝒌 − 2𝒙𝟐 𝒌 )
10

𝟎 ; ⏟
𝟎 ; ⏟
𝟎
𝟏𝒆𝒓 𝒊𝒕𝒆𝒓𝒂𝒕𝒊𝒐𝒏 𝑿𝟎 = [ 𝟎 𝟎
]𝒌=𝟎∶
𝒙𝟏 𝒙𝟐 𝒙𝟑 𝟎

𝒙𝟏 𝟏 = 1/10(19 − 3𝒙𝟐 𝟎 − 𝒙𝟑 𝟎 )
𝒙𝟐 𝟏 = 1/10(29 − 3𝒙𝟏 𝟎 − 2𝒙𝟑 𝟎 )
𝒙𝟑 𝟏 = 1/10(35 − 𝒙𝟏 𝟎 − 2𝒙𝟐 𝟎 )
𝑿𝟏 = [𝟏. 𝟗; 𝟐. 𝟗; 𝟑. 𝟓]

𝟐𝒆𝒎𝒆 𝒊𝒕𝒆𝒓𝒂𝒕𝒊𝒐𝒏 𝑿𝟏 = [𝟏. 𝟗; 𝟐. 𝟗; 𝟑. 𝟓] 𝒌 = 𝟏:

𝒙𝟏 𝟐 = 1/10(19 − 3𝒙𝟐 𝟏 ) − 𝒙𝟑 𝟏 )
𝒙𝟐 𝟐 = 1/10(29 − 3𝒙𝟏 𝟏 − 2𝒙𝟑 𝟏 )
𝒙𝟑 𝟐 = 1/10(35 − 𝒙𝟏 𝟏 − 2𝒙𝟐 𝟏 )
𝑿𝟐 = [𝟎. 𝟔𝟖𝟎; 𝟏. 𝟔𝟑; 𝟐. 𝟕]

𝟑𝒆𝒎𝒆 𝒊𝒕𝒆𝒓𝒂𝒕𝒊𝒐𝒏 𝑿𝟐 = [𝟎. 𝟔𝟖𝟎; 𝟏. 𝟔𝟑; 𝟐. 𝟕] 𝒌 = 𝟐:

𝒙𝟏 𝟑 = 1/10(19 − 3𝒙𝟐 𝟐 − 𝒙𝟑 𝟐 )
𝒙𝟐 𝟑 = 1/10(29 − 3𝒙𝟏 𝟐 − 2𝒙𝟑 𝟐 )
𝒙𝟑 𝟑 = 1/10(35 − 𝒙𝟏 𝟐 − 2𝒙𝟐 𝟐 )
𝑿𝟑 = [𝟏. 𝟏𝟑𝟖; 𝟐. 𝟏𝟓; 𝟑. 𝟏𝟎𝟔 ]

𝟒𝒆𝒎𝒆 𝒊𝒕𝒆𝒓𝒂𝒕𝒊𝒐𝒏 𝑿𝟑 = [𝟏. 𝟏𝟑𝟖; 𝟐. 𝟏𝟓; 𝟑. 𝟏𝟎𝟔 ] 𝒌 = 𝟑:

𝒙𝟏 𝟒 = 1/10(19 − 3𝒙𝟐 𝟑 − 𝒙𝟑 𝟑 )
𝒙𝟐 𝟒 = 1/10(29 − 3𝒙𝟏 𝟑 − 2𝒙𝟑 𝟑 )
𝒙𝟑 𝟒 = 1/10(35 − 𝒙𝟏 𝟑 − 2𝒙𝟐 𝟑 )
𝑿𝟒 = [𝟎. 𝟗𝟒𝟒𝟒; 𝟏. 𝟗𝟑𝟕𝟒; 𝟐. 𝟗𝟓𝟔𝟐]

III.2. Le programme Matlab

A = input('Enter the coefficient matrix A: '); % A=[10,3,1;3,10,2;1,2,10];


B = input('Enter the source vector B : '); % B=[19;29;35];
P = input('Enter the initial guess vector : '); % P=[0;0;0];
n = input('Enter the number of iterations : '); % n=5;
E = input('Enter the tolerance : '); % E= 1e-3;

N = length(B);
X = zeros(N, 1);

for j = 1:n
for i = 1:N
X(i) = (B(i) / A(i, i)) - (A(i, [1:i-1, i+1:N]) * P([1:i-1, i+1:N])) / A(i, i);
end
P = X;
fprintf('Iteration number %d\n', j);
end

if max(abs(X - P)) < E


fprintf('Converged solution:\n');
disp(X);
else
fprintf('Did not converge within %d iterations.\n', n);
end

Résultant obtenu
Enter the coefficient matrix A: [10,3,1;3,10,2;1,2,10]
Enter the source vector B : [19;29;35]
Enter the initial guess vector : [0;0;0]
Enter the number of iterations : 5
Enter the tolerance : 1e-3
Iteration number 1
Iteration number 2
Iteration number 3
Iteration number 4
Iteration number 5
Converged solution:
1.0232
2.0254
3.0181

Vous aimerez peut-être aussi