Feuille d`exercice 9 : Méthodes numériques de résolution d`un

publicité
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 X d’un système d’équation linéaire U X = Y où U désigne une matrice triangulaire supérieure inversible, et X, Y ∈ Mn,1 (R).
Pour i = n, ...1 faire :


X
xi =  y i −
Uij xj  /Uii
(1)
(2)
j>i
Fin
(3)
On écrira une fonction qui en entrée prend une matrice triangulaire supérieure U et une matrice colonne Y
et en sortie donne la solution X du système U X = 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(n−1) X = B (n−1) où An−1 est 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
(k)
(k−1)
(k)
(k−1)
Aij = Aij
Aij = Aij
1 ≤ i ≤ k,
(k−1)
− Aik
1≤j≤n
(k−1)
× Akj
(k−1)
/Akk
k < i ≤ n,
k≤j≤n
(ii) Modification du second membre :
(k)
bi
(k−1)
= bi
(k−1)
− Aik
(k−1)
× bkk−1 /Akk
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 B et en sortie donne la matrice triangulaire supérieure inversible A(n−1) et la
matrice colonne B (n−1) . 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ù A dé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 k telle que :

1, si i=j


 0, si i 6= j et j 6= k
Lij =
0, si i < k et j = k



(k−1)
(k−1)
−Aik /Akk , si i > k et j = k
alors on a pour tout k < n, A(k) = L(k) A(k−1) et b(k) = L(k) b(k−1) . 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
Téléchargement