U n i v e r s i t é M o u l a y I s m aı̈ l
E.N.S.A.M.–M e k n è s
Calcul Matriciel Numérique
1ère Année Cycle Ingénieur, Semestre 1
2020-2021
Résolution des systèmes d’équations linéaires
TD/TP N o 2
Objet : En utilisant Matlab, résoudre un système d’équations linéaires par les méthodes directes et les méthodes itératives
1. Méthodes directes :
(a) On considère le système suivant:
x + 2y − z = 3
−y + 5z = 2 (1)
3z = 3
Écrire une fonction matlab qui résout par remontée triangulaire un système linéaire U x = b où U est une matrice
triangulaire supérieure selon le prototype suivant:
function [x]=remontee(U,b) \\
\hspace*{2cm} \vdots \\
end \\
Donner la solution du système (1) et comparer la à la solution donnée en utilisant l’opérateur \ de matlab.
Calculer ensuite exactement le nombre d’opérations élémentaires (+,-,*,/) nécessaire à la résolution d’un système
linéaire avec une matrice triangulaire supérieure d’ordre n.
(b) On considère le système suivant:
2x = 4
−5x + 3y = 5 (2)
2x + 2y − z = 3
Écrire une fonction matlab qui résout par descente triangulaire un système linéaire Lx = b où L est une matrice
triangulaire inférieure selon le prototype suivant:
function [x]=descente(L,b)\\
\hspace*{2cm} \vdots \\
end \\
Donner la solution du système (2) et comparer la à la solution donnée en utilisant l’opérateur \ de matlab.
(c) On considère le système suivant:
4x − y + z = 7
4x − 8y + z = −21 (3)
−2x + y + 5z = 15
Écrire une fonction matlab qui résout un système linéaire Ax = b par la méthode de Gauss selon le prototype suivant:
function [x]=gauss(A,b)\\
\hspace*{2cm} \vdots \\
end \\
On pourra utiliser les fonctions déjà créées dans les questions précédentes. Donner la solution du système (3) et
comparer la à la solution donnée en utilisant l’opérateur \ de matlab.
(d) Ecrire une fonction matlab qui résout un système linéaire Ax = b par la méthode de décomposition LU (crout) selon
le prototype suivant:
function [L,U,x]=crout(A,b)\\
\hspace*{2cm} \vdots \\
end \\
Donner la solution du système (3) et comparer le résulat à celui obtenu en utilisant la fonction lu de matlab.
2. Méthodes itératives :
(a) On reprend le système précédent:
4x − y + z = 7
4x − 8y + z = −21 (4)
−2x + y + 5z = 15
Écrire une fonction matlab qui résout un système linéaire Ax = b par la méthode de Jacobi selon le prototype suivant:
function [X,niter] = jacobi(A,b,X0,nmax,tol)\\
\hspace*{2cm} \vdots \\
end \\
avec comme paramètres d’entrée la matrice A, le second membre b, le vecteur initial X0, le nombre maximal nmax
d’itérations et l’erreur tolérée tol. Donner la solution approchée du système (3) et comparer le nombre d’itérations et
l’erreur de cette méthode en variant les tests d’arrêt.
(b) reprendre la question précédente en utilisant la méthode de Gauss-Seidel selon le prototype suivant:
function [X,niter] = gseidel(A,b,X0,nmax,tol)\\
\hspace*{2cm} \vdots \\
end
(c) reprendre la question précédente en utilisant la méthode de relaxation selon le prototype suivant:
function [X,niter] = relaxation(A,b,X0,w,nmax,tol)\\
\hspace*{2cm} \vdots \\
end
où w désigne le paramètre de relaxation.
Tracer le nombre d’itérations en fonction du paramètre de relaxation w ∈ [0, 2] avec un test d’arrêt fixé.