Université d’Alger 1, Module : A. N.
Matricielle
Faculté des sciences Dépt. Mathématiques et Informatique
TP 1 : Méthode de Gauss
La méthodes choisit : Méthode de Gauss (Méthode directe)
Nom1 : ....................................................Prénom1 :....................................................
Nom2 : ....................................................Prénom2 :....................................................
Spécialité : ....................................................
Groupe : ....................................................
1
1. Le but : Implémentation d’un code Matlab pour résoudre un système d’équations
linéaires Ax = b par la méthode d’élimination de Gauss.
2. Principe de la méthode : Dans la méthode de Gauss, le système Ax = b est trans-
formé pour obtenir un système triangulaire Ãx = b̃ qui est ensuite résolu par remontée
triangulaire.
3. Condition d’utilisation : Les pivots akkk doivent être différents de zéro.
4. Algorithme :
étape1 : Elimination
aik
aij = aij − akj , 1 ≤ k ≤ n − 1, k + 1 ≤ i ≤ n, k ≤ j ≤ n + 1.
akk
étape2 : Résolution du système triangulaire
a
nn+1
si k = n ;
annh
xk = 1 n
P i
akn+1 − akj xj si 1 ≤ k ≤ n − 1.
akk
j=k+1
3x + 2y + z = 1 3 2 1 1 3 2 1 1
5. Exemple : x + 3y + 2z = 2 A = 1 3 2 , b = 2 et Ag = 1 3 2 2
.
2x + 4y + 6z = 3 2 4 6 3 2 4 6 3
étape1
:Elimination
3 2 1 1 3 2 1 1
−−−−−−−−−− 1
−−−−−−−−−−−−2−→
7 5 5
Ag = 1 3 2 2 L2 ← L2 − 3 L1 , L3 ← L3 − 3 L1 0 3 3 3
2 4 6 3 0 83 163
7
3
3 2 1 1
−−−−−−−−−− −→
L3 ← L3 − 87 L2
0 7
3
5
3
5
3
0 0 7 37
24
étape2
: Résolution du système triangulaire
1
3x + 2y + z = 1 3x + 2y + 8 = 1
7
3
y + 53 z = 5
3
⇒ 7
3
5
y + 24 = 5
3
24
z = 37 z=1
7 8
10 1 −1
3x + 8 + =1 x= 8
8
⇒ y = 58 ⇒ y= 4
7
z=1
z= 1
8 8
6. Le code Matlab : Notre programme scinder en trois parties :
(a) Écrire une fonction trigauss qui reçoit en argument une matrice Ag et qui renvoie
cette même matrice après triangularisation par la méthode de Gauss.
2
Code matlab de la fonction trigauss
function [Ag]=trigauss(Ag)
n=size(Ag,1) ;
for k=1 :n-1
for i=k+1 :n
w=Ag(i,k)/Ag(k,k) ; % multiplier la ligne i par aik/akk
for j=k :n+1
Ag(i,j)=Ag(i,j)-w*Ag(k,j) ;
% calculer le changement dans toute la ligne
end
end
end
Exemple d’execution de la trigauss
>> Ag =
3 2 1 1
1 3 2 2
2 4 6 3
>> [Ag] = trigauss(Ag)
>> Ag =
3 2 1 1
0 7/3 5/3 5/3
0 0 24/7 3/7
(b) Écrire une fonction soltri qui reçoit en argument la matrice triangulaire précédente
Ag et qui renvoie la solution sol obtenue par remontée triangulaire.
Code matlab de la fonction soltri
function [sol]=trisol(Ag)
n=size(Ag,1) ;
for i=n :-1 :1
s=0 ;
for j=i+1 :n % quand i=n on rentre pas dans la boucle
s=s+Ag(i,j)*sol(j) ;
end
sol(i)=(Ag(i,n+1)-s)/Ag(i,i) ; % on commence par xn après les autres
end
3
Exemple d’execution de la fonction trisol
>> [sol] = trisol(Ag)
>> sol =
−1/8 5/8 1/8
(c) Dans le script principal nommé ”MGauss”, on doit lire la matrice A et le vecteur
b ensuite construire la matrice augmentée Ag, puis Appeler : la fonction trigauss
avec la matrice Ag comme argument et la fonction soltri pour trouver le vecteur
sol solution du système.
Code Matlab de programme MGauss
clc
clear
A=input(’Donner la matrice A associe au système linéaire ’)
b=input(’Donner le second membre b ’)
disp(’La matrice augentée Ag est :’)
Ag=[A b]
format rat % .....Doone les nombres en fraction......
Ag=trigauss(Ag) ;
%....Appel a la fonction trigauss qui permet de triangulariser Ag
disp(’la matrice triangulaire est :’)
Ag
sol=trisol(Ag) ;
%....Appel a ”trisol” qui permet de résoudre le système triangulaire
disp(’la solution est :’)
sol
Exemple d’execution de script MGauss
>> Donner la matrice A associe au système linéaire [3 2 1 ;1 3 2 ;2 4 6 ]
A=
3 2 1
1 3 2
2 4 6
Donner le second membre b [1 ;2 ;3]
b=
1
2
3
4
La matrice augentée Ag est :
Ag =
3 2 1 1
0 7/3 5/3 5/3
0 0 24/7 3/7
la matrice triangulaire est :
Ag =
3 2 1 1
0 7/3 5/3 5/3
0 0 24/7 3/7
la solution est :
sol =
−1/8 5/8 1/8
7. Remarque : Les deux fonctions (trigauss, soltri) et le script MGauss sont envoyés
dans un fichier zip porte le nom suivant : SpécialitéGroupeNom1Nom2