Analyse numérique matricielle Élimination de Gauss, factorisation LU et applications L3 Mathématiques - Université d’Évry Printemps 2008 L’objet de ce TD est d’utiliser les méthodes élémentaires de l’analyse numérique matricielle pour résoudre des systèmes linéaires simples. L’implémentation est faite à l’aide du logiciel Scilab. 1 Rappels de cours Dans la suite, on considère une matrice carrée A = ( aij )i,j=1,...,n de Mnn (R) supposée inversible. On cherche à résoudre le système linéaire Ax = b, (1) pour b = (b1 , b2 , . . . , bn )| ∈ Rn donné. Résoudre (1) signifie déterminer x = ( x 1 , x 2 , . . . , x n )| ∈ Rn . 1.1 Résolution des systèmes triangulaires Un cas facile à traiter est celui des systèmes triangulaires. Lorsque A est une matrice triangulaire inférieure, c’est-à-dire que aij = 0 pour tout j > i, il est très facile de voir que b1 x1 = a11 , ! i −1 (2) 1 b − a x , i = 2, . . . , n. x = i ij j i ∑ aii j =1 Lorsque l’on a un système triangulaire supérieur, c’est-à-dire lorsque aij = 0 pour tout i > j, alors l’algorithme de résolution fonctionne par parcours inverse et devient bn xn = ann , ! n (3) 1 x = b − a x , i = n − 1, . . . , 1. i i ij j ∑ aii j = i +1 1 A NALYSE NUMÉRIQUE MATRICIELLE 1.2 Triangulation par élimination de Gauss La résolution des systèmes triangulaires est facile et peu coûteuse numériquement. L’idée est donc de proposer des algorithmes qui transforment un système linéaire général (1) en un système équivalent e e = b, Ax (4) e est triangulaire supérieure, issue de A. où A L’algorithme d’élimination de Gauss permet de trianguler la matrice A. Il comporte n étapes de transformation. On note A(k) l’état de la matrice e recherchée correspond à A(n) . On transformée à la ke étape. La matrice A ( 1 ) initialise l’algorithme avec A = A, puis on calcule les étapes k = 2, . . . , n à l’aide de la relation de récurrence définie pour i = k + 1, . . . , n par (k) aik (k) ( k +1) (k) a = a − a , ij ij (k) kj akk (k) aik (k) ( k +1) (k) = bi − ( k ) b k . bi akk j = k, . . . , n, (5) D’où l’algorithme 1. Algorithme 1 : Algorithme d’élimination de Gauss Entrées : A, b pour k = 1, . . . , n − 1 faire // On teste si le pivot est nul si | akk | < ε alors Afficher un message d’erreur fin sinon //Calcul de A(k) pour i = k + 1, . . . , n faire c ← aakkik bi ← bi − c × b k aik ← 0 pour j = k + 1, . . . , n faire aij ← aij − c × akj fin fin fin fin e ←A A e b←b e e b Sorties : A, page 2 É LIMINATION DE G AUSS , FACTORISATION LU ET APPLICATIONS 1.3 Factorisation LU Supposons que l’on dispose d’une factorisation telle que A = LU ou L est une matrice triangulaire inférieure et U supérieure. Alors le système général (1) s’écrit LUx = b, (6) que l’on résout en traitant successivement les systèmes triangulaires Ly = b, Ux = y. (7) L’algorithme suivant, appelé algorithme de Doolittle, permet d’obtenir cette factorisation Algorithme 2 : Algorithme de Doolittle Entrées : A L ← Inn U ← 0nn pour i = 1, . . . , n − 1 faire pour j = i, . . . , n faire i −1 uij ← aij − ∑ lik ukj k =1 fin pour j = i + 1, . . . , n faire ! i −1 1 l ji ← a ji − ∑ l jk uki uii k =1 fin fin −1 unn ← ann − ∑kn= 1 lnk ukn Sorties : L, U 2 Applications numériques Questions 1. Systèmes triangulaires a) Écrire une fonction [x]=solinf(L,b) qui résout un système triangulaire inférieur Lx = b. Tester sur le système 1 0 0 1 2 3 0 x = 8 . 1 4 −1 10 page 3 A NALYSE NUMÉRIQUE MATRICIELLE b) Écrire une fonction [x]=solsup(U,b) qui résout un système triangulaire supérieur Ux = b. Tester sur le système 1 2 3 6 0 4 8 x = 16 . 0 0 5 15 2. Élimination de Gauss a) Écrire une fonction [At,bt]=trigGauss(A,b) qui renvoie une mae tels que Ax = b ⇔ e et un vecteur b trice triangulaire supérieure A e Tester sur le système e = b. Ax 3 1 2 2 3 2 6 x = 1 . 6 1 −1 4 b) Écrire une fonction [x]=ResolutionGauss(A,b) qui utilise trigGauss et solsup pour résoudre le système Ax = b dans le cas général. Tester sur le système 1 2 3 5 5 2 1 x = 5 . 3 −1 1 6 3. Factorisation LU a) Écrire une fonction [L,U]=FactLU(A) qui implémente la méthode de Doolittle pour la factorisation LU. Tester sur la matrice 3 1 2 3 2 6 . 6 1 −1 b) Écrire une fonction [x]=ResolutionLU(A,b) qui utilise FactLU, solsup et solinf pour résoudre Ax = b. Tester sur le système 1 2 3 5 5 2 1 x = 5 . 3 −1 1 6 4. Application à l’inversion d’une matrice Écrire une fonction [B]=inverse(A) qui calcule l’inverse d’une matrice A de n × n en résolvant n systèmes linéaires. Tester sur la matrice 1 2 3 5 2 1 . 3 −1 1 page 4