Factorisation LU par Eric Brunelle 1 Introduction La factorisation LU d une matrice A n n est une astuce très importante dans le domaine de l analyse numérique. Sa base est très simple, mais ses applications sont très nombreuses et très utiles. Avant de montrer ces applications, regardons ce qu est la factorisation LU et comment l obtenir. L obtention de la factorisation.1 La théorie La factorisation LU consiste à écrire une matrice non-singulière A comme le produit de deux autres matrices L et U. L est une matrice triangulaire inférieure ayant des 1 sur la diagonale et U une matrice triangulaire supérieure. On notera les éléments de ces deux matrices de la manière suivante: L = 1 0 0... 0 l,1 1 0... 0 l 3,1 l 3, 1... 0....... l n,1 l n, l n,3... 1 U = u 1,1 u 1,... u 1,n 1 u 1,n 0 u,... u,n 1 u,n 0 0... u 3,n 1 u 3,n....... 0 0 0... u n,n La meilleure façon d obtenir cette factorisation, est d utiliser l élimination de Gauss. Nous savons que nous pouvons écrire l élimination grâce à un produit de matrices élémentaires E i. Commençons par éliminer la première colonne de la matrice A. On peut donc faire les transformations élémentaires suivantes sur la matrice A m i1 L 1 + L i L i 1
où m i1 = a i1 /a 11 et ce pour tous les i =..n et L i est la i ime ligne de la matrice A. On peut alors écrire cette transformations sous une forme matricielle. 1 0 0... 0 a 1,1 a 1,... a 1,n 1 a 1,n.............. EA = m i,1... 1... 0 a i,1 a i,... a i,n 1 a i,n.............. 0 0 0... 1 a n,1 a n, a n,3... a n,n Par la suite, on trouve l inverse de cette matrice E. 1 0 0... 0....... E 1 = m i,1... 1... 0....... 0 0 0... 1 On utilise le même principe pour éliminer les éléments sous la diagonale de la matrice A. m ij L j + L i L i où m ij = a ij /a jj pour les i = j + 1..n. Ainsi, la forme matricielle de cette élimination est: Alors, E k E k 1...E E 1 A = U A = E 1 1 E 1...E 1 k 1 E 1 k Puisque tous les E 1 i sont des matrices triangulaires inférieures, alors le produit de ces dernières l est aussi et, dans le cas ici, possède des 1 sur la diagonale. Ainsi, cette matrice résultant de ce produit est notre matrice L et, U est ce qui reste après l application de l élimination de Gauss. Nous pouvons alors mettre sur pied un algorithme pour trouver L et U à l aide d un ordinateur. Cela nous permettra d expliquer certains avantages de la factorisation LU par la suite. U
. Algorithme de factorisation LU u 1,1 = a 1,1 Pour j =..n u 1,j = a 1,j l j,1 = a j,1 /a 1,1 Pour i =..n 1 u i,i = a i,i i 1 k=1 l i,ku k,i Pour j = i + 1..n u i,j = a i,j i 1 [ k=1 l i,ku k,j l j,i = 1 u i,i a j,i ] i 1 k=1 l j,ku k,i u n,n = a n,n n 1 k=1 l n,ku k,n Regardons un exemple a de mettre les idées bien en place. Exemple 1. A = 4 9 4 4 1 Nous avons que m 1 = /4 = 0.5 et m 31 = 1/4 = 0.5. Ce nous donne 4 9 A 0 0.5 3 0 0.5.5 Continuons l élimination en posant m 3 = 0.5/0.5 = 0.5 et nous obtenons 1 0 0 4 9 que L = 0.5 1 0 et U = 0 0.5 3 Nous avons donc 0.5 0.5 1 0 0 4 obtenu la factorisation LU. 3
3 Utilité Voyons maintenant en quoi cela peut être utile. Pour ce faire, nous allons comparer le nombre d opérations nécessaire pour résoudre un système linéaire Ax = b avec la méthode d élimination de Gauss et par la méthode de substitution avant-arrière qui demande de connaître la factorisation LU de A. Commençons par l élimination de Gauss-Jordan. 3.1 Élimination de Gauss L élimination de Gauss est la méthode utilisée dans les cours d algèbre linéaire élémentaire. On prend la matrice A et on l augmente de b. On fait ensuite des opération élémentaires sur les lignes et on réduit la partie de gauche en une matrice identitée. Le vecteur à droite sera alors la solution x cherchée. Prenons un exemple. Soit 1 4 3 3 1 x y z = 15 5 4 (1) On crée la matrice augmentée pour ce système et on fait l élimination de Gauss. 1 15 [A b] = 4 3 3 5 () 1 4 1 15 0 5 7 55 (3) 0 1 3 11 1 15 0 5 7 55 (4) 0 0 1 5 1 0 5 0 1 0 4 (5) 0 0 1 5 1 0 0 1/ 0 1 0 4 (6) 0 0 1 5 4 (7)
Nous obtenons ainsi la solution x = 1/, y = 4 et z = 5. Regardons maintenant l algorithme a de programmer la méthode. Nous compterons par la suite le nombre d opérations nécessaires. Nommons B la matrice A augmentée de b. Ainsi nous avons que B = (b i,j ) où 1 i n et 1 i n + 1. 3. Algorithme de la méthode de Gauss Pour i = 1,.., n 1 Pour j = i + 1,.., n m j,i = b j,i /b i,i Pour k = i,.., n + 1 b j,k = b j,k m i,j b i,k Après cette étape, la matrice B est triangulaire inférieure. Il reste à la substitution arrière. x n = b n,n+1 /b n,n Pour i = n [ 1,.., 1 x i = b i,n+1 ] n j=i+1 b i,jx j /b i,i 3.3 Nombre d opérations Nous obtenons ainsi le vecteur x. Comme nous l avons mentionné plus tôt, ce qui est important de savoir pour comparer deux algorithme, c est le nombre de multiplication et de division demandé par chacun. C est ces opérations qui demandent plus grand temps de calcul à l ordinateur, l addition et la soustraction sont beaucoup plus rapide. Pour cet algorithme, on peut vérifier que la première étape demande n3 +3n 5n multiplication/division. La deuxième 6 étape (la substitution arrière) en demande n +n. Ainsi, au total l algorithme nécessite n3 +6n n. Ainsi, on peut dire que le nombre d opérations est de 6 l ordre 3. 5
Supposons maintenant que nous connaissons la factorisation LU de la matrice A. Ainsi, le système Ax = b peut se réécrire LUx = b. Posons z = Ux. Nous avons donc que Lz = b. Ce système est rapide à résoudre, car la matrice L est triangulaire inférieure. Voici l algorithme pour trouver z, dit la substitution avant. Algorithme de substitution avant z 1 = b 1 Pour i =...n z i = b i i 1 j=1 L i,jz j Il ne reste plus que résoudre le système Ux = z. Il ne faut pas oublier que U est une matrice triangulaire supérieure. Ceci est la subtitution arrière qui est la même que la deuxième partie de l algorithme de Gauss. Algorithme de substitution arrière x n = z n /U n,n Pour i = n [ 1,.., 1 x i = z i ] n j=i+1 U i,jx j /U i,i Comptons le nombre d opération de ces deux algorithmes. Pour la substitution avant, il y a i 1 multiplications à l étape i. Ainsi, le nombre total est n i=1 (i 1) = n n. Pour la susbtitution arrière, on a n i + 1M/S pour l étape i et puisque i = 1...n 1, on au total n 1 i=1 (n i + 1) = n +n. Ainsi, l algorithme pour résoudre le système lorsque l on connaît la factorisation LU de A demande n multiplications/divisions. Le comptage des opérations nous permet donc de conclure que si nous connaissons la factorisation LU et que n est grand, il est plus plus rapide d utiliser la méthode de factorisation LU, O(n ), que la méthode de Gauss, O(n 3 ). 6
4 Simulations numériques Nous avons effectué une expérimentation a de vérifier le théorie ci-haut. Pour de matrices de tailles 500 jusqu à 000, nous avons calculé le temps nécessaire pour que l ordinateur résoudre un système Ax = b avec les deux algorithmes. Ainsi, les temps de calcul T G pour Gauss et T LU pour LU devraient respectivement être des formes T G (n) kn 3 et T LU (n) cn où k et c sont des constantes. En traçant le graphique log-log de ces deux fonctions, la pente de chaque droite devrait nous donner l ordre, c est-à-dire 3 pour Gauss et pour LU. Voici les pentes trouvées:.658 pour Gauss et 1.8679 pour la méthode LU. Cela ressemble très bien aux résultats théoriques. 1 0 1 3 4 5 6. 6.4 6.6 6.8 7 7. 7.4 7.6 7.8 8 Figure 1: Graphique loglog du temps de calcul en fonction de n. Les x est la méthode LU et les o est la méthode de Gauss Jusqu ici, nous avons supposer que la factorisation LU de la matrice A était connue. Cela est rarement le cas et on peut montrer grâce à l algorithme de la factorisation LU que l ordre d opération pour trouver L et U est aussi 3. Cela signifie donc que si nous avons un système à résoudre et que l on ne connaît pas L et U, alors les deux méthodes nécessitent le même ordre de 7
temps de calcul. Il ne faut toutefois pas douter de l utilité de la méthode de factorisation LU. Dans plusieurs situations en analyse numérique, notamment dans la résolution d EDO, il y a plusieurs sytèmes Ax i = b i à résoudre pour i = 1..M avec M grand. Puisque A en constant pour tous ces systèmes, il est donc avantageux de calculer une fois L et U et de résoudre par la méthode de factorisation LU les M systèmes. 5 Exercices 1. Trouver la factorisation LU de la matrice 5 1 4 3 3 0 4 (8). Démontrer que le nombre de multiplication/division de la factorisation LU est bel et bien de l ordre 3. Faites de même pour l algorithme d élimination de Gauss. Références [1] Burden, R.L., Faires, J.D. Numerical Analysis, (Brooks/Cole, 001): 7e edition. 8