UNIVERSITE DES SCIENCES ET TECHNOLOGIES DE LILLE
U.F.R. de Mathématiques Pures et Appliquées
Département de Mécanique
Feuille d’exercice 9 : Méthodes numériques de résolution
d’un système d’équations linéaires
L’objectif de ce TP numérique est d’implémenter sous Matlab les algorithmes vus en cours de résolution
d’un système linéaire
Partie 1 : Résolution d’un système triangulaire
Implémenter sous matlab l’algorithme suivant qui permet de trouver la solution Xd’un système d’équa-
tion linéaire UX =YUdésigne une matrice triangulaire supérieure inversible, et X, Y ∈ Mn,1(R).
Pour i=n, ...1faire : (1)
xi=
yiX
j>i
Uij xj
/Uii (2)
Fin (3)
On écrira une fonction qui en entrée prend une matrice triangulaire supérieure Uet une matrice colonne Y
et en sortie donne la solution Xdu système UX =Y. On testera ensuite cette fonction sur des matrices
triangulaires simples dont on connaît la solution analytique.
Partie 2 : Algorithme d’élimination
Implémenter sous matlab l’algorithme d’élimination suivant qui permet à l’aide d’un système d’équations
sous forme linéaire AX =B(avec A∈ GLn(R)et X, B ∈ Mn,1(R)) d’obtenir un système équivalent
A(n1)X=B(n1) An1est une matrice triangulaire supérieure.
1) Initialisation
A(0) =A∈ Mn(R)
B(0) =B∈ Mn,1(R)
2) Itérations : pour k= 1,2, ..., n 1,faire
(i) Elimination de l’inconnue xk
A(k)
ij =A(k1)
ij 1ik, 1jn
A(k)
ij =A(k1)
ij A(k1)
ik ×A(k1)
kj /A(k1)
kk k < i n, k jn
(ii) Modification du second membre :
b(k)
i=b(k1)
iA(k1)
ik ×bk1
k/A(k1)
kk k < i n
Fin
On implémentera cet algorithme sous forme d’une fonction qui en entrée prend une matrice carrée de taille
n A et une matrice colonne Bet en sortie donne la matrice triangulaire supérieure inversible A(n1) et la
matrice colonne B(n1). On testera ensuite cette fonction sur des exemples de matrice inversible.
1
Partie 3 : Test
Utiliser ces fonctions pour obtenir la solution d’un système d’équation linéaire AX =B, où Adésigne une
matrice inversible quelconque. En utilisant les fonctions "tic" et "toc", regarder comment évolue le temps
d’inversion de la matrice en fonction de la taille de la matrice n. Tracer la fonction d’évolution.
Partie 4 : Vectorialisation du calcul
L’utilisation de boucles dans le language Matlab est à proscrire car elles sont très inefficaces (n’étant pas
compilées). Il vaut mieux utiliser des fonctions vectorielles ou matricielles qui elles font appel à des fonctions
codées en fortran et précompilées. Si l’on introduit la matrice L(k)de rang n identique à la matrice identité
Inà l’exception de la colonne ktelle que :
Lij =
1,si i=j
0,si i6=jet j6=k
0,si i < k et j=k
A(k1)
ik /A(k1)
kk ,si i > k et j=k
alors on a pour tout k < n,A(k)=L(k)A(k1) et b(k)=L(k)b(k1). Utiliser cette forme matricielle pour
réécrire l’algorithme d’élimination. En utilisant les fonctions "tic" et "toc", comparer le temps de calcul sous
matlab avec l’algorithme vectorialisé et l’algorithme en boucle.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !