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.