Université Bordeaux 1 MHT 631 – Licence Mathématiques Année

publicité
Université Bordeaux 1
Mathématiques
MHT 631 – Licence
Année 2016–2017
FEUILLE D’EXERCICES no 6
Pivot de Gauss - Décomposition LU
Travail sur machine
Exercice 1 – Écrire une fonction Pivot0 qui applique l’algorithme du pivot
de Gauss sans permutation de lignes à une matrice A. Cette fonction pourra
s’appliquer à toute matrice A, y compris rectangulaire. Par contre, elle ne fera
pas de permutations sur les lignes. Si on arrive à un pivot nul, alors le calcul
devra s’arrêter.
En entrée, Pivot0 prendra une matrice A quelconque à coefficients dans Q, et
donnera en sortie la décomposition LU sous forme compacte si aucun pivot nul
n’est rencontré, ou bien 0 dans le cas où un tel pivot apparaît.
Exercice 2 – Écrire une fonction Pivot1 qui rend la même chose que Pivot0,
mais sous forme non compacte : la fonction rendra un couple (L, U ) si aucun
pivot nul n’est rencontré.
Exercice 3 – Appliquer ces fonctions aux matrices de la feuille 5, exercices 1, 2, 3,
puis à des matrices de différentes tailles à coefficients dans Q choisies au hasard.
Exercice 4 – Écrire une fonction Pivot2 qui étant donnée une matrice A quelconque à coefficients dans Q, rend un triplet (P, L, U ) correspondant à une décomposition P A = LU .
Là encore, appliquer cette fonction aux matrices de la feuille 5, et à des matrices
prises au hasard.
Exercice 5 – Écrire une fonction TriangleInf qui résout un système triangulaire
LX = B, où L ∈ Tn,1inf , puis une fonction TriangleSup qui résout un système
triangulaire U X = B, où U ∈ Tn,sup .
Exercice 6 – Écrire les fonctions suivantes, dans le cas où A est une matrice
carrée inversible à coefficients dans Q.
1) Resout0(A,B) résout l’équation AX = B et rend une décomposition P A =
LU (dans cette fonction, appliquer Pivot2 à la matrice (A|B)), puis utiliser
TriangleSup).
2) Resout1(P,L,U,B) suppose connue une décomposition P A = LU et résout
l’équation AX = B.
3) Appliquer ces fonctions aux exemples de la feuille 5 et à des exemples pris au
hasard.
Exercice 7 – Dans cet exercice, on souhaite observer la taille des coefficients des
matrices qui interviennent dans l’agorithme du pivot de Gauss, lorsqu’on travaille
dans Mn (Q), et expérimenter différentes stratégies visant à minimiser cette taille.
Soient a et b des entiers non nuls tels que pgcd(a, b) = 1 et b > 0. On définit la
taille de a/b : t(a/b) = max(|a|, b).
Soit A = (aij ) ∈ Mn (Q). On définit la taille de A :
T (A) = max t(aij ).
i,j
1) Programmer l’algorithme du pivot partiel, en choisissant à chaque étape le
pivot le plus grand possible (au sens de la valeur absolue) situé sur la colonne
courante.
2) Programmer l’algorithme du pivot total en choisissant à chaque étape k le
pivot le plus grand possible parmi les coefficients (i, j) où i > k et j > k.
3) Comparer sur des exemples pris au hasard la taille des matrices obtenues par
les trois algorithmes (pivot normal, pivot partiel, pivot total).
4) Changeons de stratégie. Au lieu de prendre le pivot le plus grand possible,
programmer les pivot partiel et total en choisissant à chaque fois le pivot non nul
le plus petit possible, au sens de la taille t.
5) Comparer les tailles des matrices obtenues par toutes les stratégies utilisées.
6) Soit P AQ = LU la décomposition obtenue après application de l’algorithme
du pivot total. Écrire une fonction Resout2(P,Q,L,U,B) qui résout l’équation
AX = B.
Téléchargement