14 Algorithmes du pivot de Gauss Applications On utilise les dénitions et notations du chapitre 13 On se reportera au paragraphe 131 pour les dénitions d'opérations élémentaires, de matrices de transvection, de dilatation, de permutation 141 Matrices échelonnées Soit A = ((a ij )) 1 i n M n,m (K) 1 j m Si A est non nulle, on dénit alors pour tout entier i compris entre 1 et n tel que la ligne numéro i de A soit non nulle l'entier d i comme le plus petit entier j compris entre 1 et m tel que a ij 0, soit : d i = inf {j {1,, m} a ij 0} Dénition 141 On dit qu'une matrice A M n,m (K) est échelonnée en ligne si elle est nulle ou si elle est non nulle et il existe un entier r compris entre 1 et n tel que : i {1,, r}, L i 0 ; i {r + 1,, n}, L i = 0 ; 1 d 1 < d 2 < < d r m On dit qu'une matrice A M n,m (K) est échelonnée en colonne si la matrice t A M n,m (K) est échelonnée en ligne Le cas où r = n correspond à une matrice ayant toutes ses lignes non nulles et de la forme : 0 0 a 1d1 a 1m 0 0 a 2d2 a 2m A = 0 0 a ndn a nm avec a idi 0 pour tout i compris entre 1 et n Pour r = n = m (cas d'une matrice carrée), on a nécessairement d i = i pour i compris entre 1 et n et la matrice A est triangulaire supérieure à diagonale non nulle, donc inversible 347
348 Algorithmes du pivot de Gauss Applications Pour 1 r n 1, une matrice échelonnée est de la forme : 0 0 a 1d1 a 1m 0 0 a 2d2 a 2m A = 0 0 a rdr a rm 0 0 0 0 Les coecients a idi, pour i compris entre 1 et r, sont les pivots de la matrice échelonnée A Théorème 141 Avec les notations de la dénition précédente, une matrice non nulle échelonnée en ligne [resp en colonne] A est de rang r (le nombre de lignes [resp de colonnes] non nulles) Démonstration On rappelle que, pour A M n,m (K) non nulle, on a 1 rg (A) min (n, m) Comme : a 1d1 a 1d2 a 1dr 0 a 2d2 a 2dr det 0 0 r = a idi 0 i=1 0 0 0 a rdr on a rg (A) r Pour r = n, on a nécessairement rg (A) = n = r puisque rg (A) n Pour 1 r n 1, on a rg (A) r puisque les lignes r + 1 à n de A sont nulles et là encore rg (A) = r Et comme rg (A) = rg ( t A), on a le résultat pour les matrices échelonnées en colonnes Dénition 142 On dit qu'un système linéaire Ax = b est échelonné si la matrice A est échelonnée en lignes 142 Résolution des systèmes linéaires par la méthode des pivots de Gauss Nous allons voir ici que toute matrice A M n,m (K) peut être transformée en une matrice échelonnée par une suite d'opérations élémentaires Cette transformation peut être utilisée pour résoudre des systèmes linéaires ou pour inverser des matrices carrées (qui sont inversibles) Tout est basé sur les résultats suivants Lemme 141 Soit A = ((a ij )) 1 i n M n,m (K) Il existe une matrice P GL n (K) produit 1 j m de matrices de permutation et de transvection telle que : P A = 11 12 1m 0 22 2m 0 n2 nm
Résolution des systèmes linéaires par la méthode des pivots de Gauss 349 Démonstration Si la première colonne de A est nulle, la matrice A a déjà la forme souhaitée et P = I n convient Sinon, il existe un indice i compris entre 1 et m tel que a i1 0 Si i 2, on permute alors la ligne 1 avec la ligne i, ce qui revient à multiplier à gauche la matrice A par la matrice de permutation P 1i, sinon on ne fait rien Dans tous les cas, on s'est ramené à une matrice de coecient 11 0 et en eectuant les opérations élémentaires : L i L i a(1) i1 11 L 1 (2 i n) ce qui revient à multiplier à gauche la matrice par les matrices de transvection : ( ) T i = T i1 a(1) i1 (2 i n) 11 on obtient la matrice : A (1) = P A = 11 12 1m 0 22 2m 0 n2 nm où P = T n T 2 P 1 avec P 1 = I n ou une matrice de permutation et, pour i compris entre 2 et n, T i = I n ou une matrice de transvection de paramètre non nul Remarque 141 Pour 11 0, on a rg (A) = 1 + rg ( B (1)), en notant : B (1) = Remarque 142 La matrice 22 2m n2 nm n T i est de la forme : i=2 ( ) n T i1 a(1) i1 = i=2 11 Une telle matrice est dite de Frobenius M n 1,m 1 (K) 1 0 0 λ 21 1 0 0 λ n 1,1 0 1 0 λ n1 0 0 1 Dénition 143 On appelle matrice de Frobenius une matrice carrée d'ordre n qui ne dière de l'identité que par une colonne (ou une ligne) Théorème 142 Soit A = ((a ij )) 1 i n M n,m (K) Il existe une matrice P GL n (K) 1 j m produit de matrices de permutation et de transvection telle que la matrice P A soit échelonnée en ligne
350 Algorithmes du pivot de Gauss Applications Démonstration En reprenant les notations de la remarque précédente, on applique le lemme à la matrice B (1) De proche en proche, on aboutit à une matrice P A échelonnée en ligne Remarque 143 En appliquant le théorème à la matrice t A M m,n (K), on déduit l'existence de P GL n (K) produit de matrices de permutation et de transvection telle que la matrice P t A soit échelonnée en ligne La matrice t (P t A) = A t P est alors échelonnée en colonne, la matrice Q GL n (K) étant un produit de matrices de permutation et de transvection Remarque 144 En utilisant des matrices de dilatation, on peut se ramener, pour A 0, à une matrice échelonnée de pivots tous égaux à 1 Remarque 145 Pour n = m, la matrice P A est équivalente à la matrice A mais pas semblable (sauf si P = I n ) Le théorème précédent nous donne un algorithme de résolution d'un système linéaire de n équations à m inconnues C'est la méthode des pivots de Gauss Cette méthode nous donne aussi un moyen de calculer le rang de la matrice A, c'est le rang de la matrice échelonnée P A Précisément, pour A = ((a ij )) 1 i n M n,m (K) et b K n, on s'intéresse aux solutions dans 1 j m K du système linéaire de n équations à m inconnues : m a ij x j = b i (1 i n) (141) j=1 qui peut aussi s'écrire sous forme matricielle, Ax = b Dans le cas où le second membre b est nul, on dit que le système est homogène On appelle solution du système (141) tout vecteur x = (x i ) 1 i m K m qui vérie (141) On dit qu'un système linéaire est compatible si l'ensemble de ses solutions est non vide Remarque 146 Un système homogène est toujours compatible puisque le vecteur nul est solution Remarque 147 Dans le cas où la matrice A est carrée et inversible, on dit que le système linéaire Ax = b est de Cramer Il a alors une unique solution On dit que deux systèmes linéaires Ax = b et A x = b sont équivalents s'ils ont même ensemble de solutions En désignant par u l'application linéaire de K m dans K n ayant A pour matrice dans les bases canoniques, on peut remarquer que l'ensemble des solutions du système homogène associé à (141) est le noyau de u et le système (141) est compatible si, et seulement si, b est dans l'image de u Si le système (141) est compatible et si x 0 en est une solution particulière, alors pour tout autre solution x, le vecteur x x 0 est dans le noyau de u L'ensemble des solutions de (141) est donc, dans ce cas, x 0 + ker (u), c'est-à-dire le sous-espace ane de K m de dimension n rg (A) dirigé par ker (u) et passant par x 0 On déduit donc, dans le cas où le système (141) est compatible, que l'ensemble des solutions est soit réduit à un point (cas où ker (u) = {0}), soit inni (cas où ker (u) {0})
Résolution des systèmes linéaires par la méthode des pivots de Gauss 351 On peut également donner l'interprétation vectorielle suivante du système (141) : ( ) p ( x K m Ax = b) x K m x j C j = b Dans le cas où le système est compatible, le vecteur b est dans l'espace vectoriel engendré par les vecteurs colonnes C j et tout revient à déterminer toutes les écritures possibles de b comme combinaison linéaire des C j Le système homogène associé Ax = 0 possède d'autres solutions que la solution nulle si, et seulement si, le système (C 1,, C m ) est lié dans K n On appelle opération élémentaire sur le système (141) toute opération élémentaire sur les lignes ou les colonnes de la matrice (A, b) M n,m+1 (K) Théorème 143 Une opération élémentaire sur les lignes d'un système linéaire Ax = b le transforme en un système équivalent Démonstration Une opération élémentaire sur les lignes du système linéaire Ax = b revient à multiplier à gauche les matrices A et b par une même matrice inversible P GL n (K) et l'équation Ax = b est équivalente à P Ax = P b Dans ce qui suit on considère le système linéaire de n équations à m inconnues : j=1 a 11 x 1 + + a 1m x m = b 1 (142) a n1 x 1 + + a nm x m = b n et on note, pour tout i compris entre 1 et n, L i = (a i1,, a im, b i ) la ligne numéro i de ce système On suppose que la matrice A n'est pas la matrice nulle (sinon l'ensemble des solutions du système (142) est K m ) Si les premières colonne C 1,, C d1 de la matrice A sont nulles, les variable x 1,, x d1 peuvent être quelconques et on passe à la colonne d 1 + 1, ce qui nous donne un système de n équations à m d inconnues On suppose donc que la première colonne de la matrice A n'est pas nulle et en permutant la ligne 1 avec une des lignes suivantes, on se ramène à un système A (1) x = b (1), avec 11 non nul On élimine alors x 1 des lignes 2 à n en eectuant les opérations élémentaires suivantes : ce qui donne le système : L i L i a(1) i1 11 L 1 (2 i n) 11 x 1 + 12 x 2 + + 1mx m = b (1) 1 a (2) 22 x 2 + + a (2) 2mx m = b (2) 2 a (2) n2 x 2 + + a (2) nmx m = b (2) n Si l'un des coecients a (2) i2 pour éliminer x 2 des équations 3 à n Si tous les coecients a (2) i2 est non nul (2 i n), on recommence avec un procédé analogue sont nuls, on passe alors à la colonne suivante
352 Algorithmes du pivot de Gauss Applications Et on continue ainsi de suite Au bout d'un nombre ni d'étapes, on aboutit à un système échelonné qui est équivalent au système (142) Trois cas de gure sont alors possibles Soit on a obtenu un système de Cramer triangulaire supérieur d'ordre n = m = r : α 11 x 1 + α 12 x 2 + + α 1n x n = β 1 α 22 x 2 + + α 2n x n = β 2 α nn x n = β n les pivots α ii étant tous non nuls Un tel système a une unique solution et se résout alors en remontée : x n = β n α n x i = 1 α ii ( β i n j=i+1 α ij x j ) (i = n 1,, 1) Dans ce cas, la matrice A est de rang n = m Du fait qu'une permutation de lignes change le déterminant de signe et qu'ajouter un multiple d'une ligne à une autre ne change pas ce dernier, on aura : det (A) = ( 1) p n α ii où p est le nombre de permutations qui ont été nécessaires pour avoir des pivots α ii non nuls, ce qui nous donne un algorithme de calcul du déterminant de A Soit on a obtenu un système de r n équations à m > r inconnues de la forme : α 11 x 1 + α 12 x 2 + + α 1r x r + α 1,r+1 x r+1 + + α 1m x m = β 1 α 22 x 2 + + α 2r x r + α 2,r+1 x r+1 + + α 2m x m = β 2 i=1 α rr x r + α r,r+1 x r+1 + + α rm x m = β r Les r premières inconnues sont appelées inconnues principales et les autres inconnues non principales Les inconnues non principales sont alors utilisées comme paramètres en second membre et on résout le système aux inconnues principales x 1,, x r : α 11 x 1 + α 12 x 2 + + α 1r x r = β 1 (α 1,r+1 x r+1 + + α 1m x m ) α 22 x 2 + + α 2r x r = β 2 (α 2,r+1 x r+1 + + α 2m x m ) α rr x r = β r (α r,r+1 x r+1 + + α nm x m ) les pivots α ii, pour i compris entre 1 et r, étant tous non nuls L'ensemble des solutions est alors un espace ane de dimension n r (le nombre de paramètres) et le rang de la matrice est r
Résolution des systèmes linéaires par la méthode des pivots de Gauss 353 Soit on a obtenu un système de n équations à r = m < n inconnues de la forme : α 11 x 1 + α 12 x 2 + + α 1m x m = β 1 α 22 x 2 + + α 2m x m = β 2 α mm x m = β m 0 = β m+1 0 = β n Si l'un des β i, pour i compris entre m + 1 et n est non nul, alors le système n'a pas de solution Si tous β i, pour i compris entre m + 1 et n sont nuls, le système restant, appelé système aux équations principales, est de Cramer et on a une unique solution Dans ce cas, la matrice est de rang m Exemple 141 Soit à résoudre le système : x + y + z = 1 x + 2y + 2z = 2 x + 2y + 3z = 3 Les opérations élémentaires : donnent le système : L i L i L 1 (i = 2, 3) puis l'opération L 3 L 3 L 2 donne : x + y + z = 1 y + z = 1 y + 2z = 2 x + y + z = 1 y + z = 1 z = 1 et le système a pour unique solution (x, y, z) = (0, 0, 1) Exemple 142 Soit à résoudre le système : x + y + z = 1 x + 2y + 2z = 2 x + 2y + 2z = 3 Les opérations élémentaires : donnent le système : L i L i L 1 (i = 2, 3) x + y + z = 1 y + z = 1 y + z = 2 puis l'opération L 3 L 3 L 2 donne : et le système n'a pas de solution x + y + z = 1 y + z = 1 0 = 1
354 Algorithmes du pivot de Gauss Applications Exemple 143 Soit à résoudre le système : x 2y + t = 1 x y z + 4t = 1 x 3y + z 2t = 1 Les opérations élémentaires : donnent le système : L i L i L 1 (i = 2, 3) x 2y + t = 1 y z + 3t = 0 y + z 3t = 0 équivalent à : { x 2y + t = 1 y z + 3t = 0 et le système a innité de solutions données par : où (z, t) R 2 (x, y, z, t) = (1 + 2z 7t, z 3t, z, t) Exemple 144 Soient A, B, C, D quatre points distincts et alignés dans un plan Peut-on déterminer quatre points distincts et alignés M, N, P, Q tels que A, B, C, D soient respectivement les milieux des segments [M, N], [N, P ], [P, Q] et [Q, M]? Si les points M, N, P, Q existent, ils sont nécessairement sur la droite (AB) On munit (AB) d'un repère et on désigne par a, b, c, d les abscisses respectives des points A, B, C, D et x, y, z, t celles de M, N, P, Q dans ce repère Le problème a des solutions si, et seulement si, le système : x + y = 2a y + z = 2b z + t = 2c x + t = 2d a des solutions La méthode des pivots de Gauss transforme ce système en : x + y = 2a y + z = 2b 0 = 2 (b + d a c) et ce système a des solutions si, et seulement si, a + c = b + d Remarque 148 Pour éviter de faire une division par un nombre trop petit, dans le choix du pivot, on aura intérêt, à chaque étape de l'algorithme, à permuter la ligne i avec la ligne j i telle que : a jk = max { a ik i = k,, n} de manière à avoir le pivot le plus grand possible en valeur absolue Si ce maximum est trop petit, alors le système est numériquement dégénéré Remarque 149 La résolution d'un système de n équations à n inconnues par la méthode de Gauss nécessite un nombre d'opérations qui est un O (n 3 )
Résolution des systèmes de Cramer à coecients entiers 355 Pour la programmation, on peut procéder comme suit dans le cas d'un système de Cramer (n = m et det (A) 0) La variable L utilisée dans la procédure PivotMax est le numéro de la ligne où se trouve le pivot le plus grand en valeur absolue, pour tout k compris entre 1 et n La procédure PermuterLigne, facile à écrire permet de permuter deux lignes du système Après exécution de la procédure la matrice A est devenue triangulaire et le vecteur b est transformé, de sorte que les valeurs initiales de A et b sont perdues C'est-à-dire que les variables A et b sont passées par adresse (c'est le mode Entrée_Sortie) PROCEDURE PivotMax(Entrée k, n : Entier ; ε : Réel ; Entrée_Sortie A : Matrice ; b : Vecteur) ; L = k ; Pour i Allant de k + 1 à n Faire Si a ik > a Lk Alors L = i ; Si a ik < ε Alors Stop('Pivot trop petit') ; Si L k Alors PermuterLignes(n, k, L, A, b) ; PROCEDURE Eliminer(Entrée k, n : Entier ; Entrée_Sortie A : Matrice ; b : Vecteur) ; Pour i Allant de k + 1 à n Faire m = a ik a kk ; Pour j Allant de k + 1 à n Faire a ij = a ij m a kj ; a ik = 0 ; b i = b i m b k ; PROCEDURE Pivotage(Entrée n : Entier ; Entrée_ Sortie A : Matrice ; b : Vecteur) ; Pour k Allant de 1 à n 1 Faire PivotMax(k, n, A, b) ; Eliminer(k, n, A, b) ; Puis, la résolution du système linéaire Ax = b se fait en appelant une procédure de résolution d'un système triangulaire supérieur facile à écrire 143 Résolution des systèmes de Cramer à coecients entiers On suppose ici que m = n et que A M n (Z), b M n,1 (Z) Dans ce cas, en modiant la méthode de Gauss, on peut calculer la solution x de façon exacte comme vecteur à coecients dans Q On procède comme suit
356 Algorithmes du pivot de Gauss Applications Etape 0 Après une éventuelle permutation de lignes, on a obtenu le système A (1) x = b (1) à coecients dans Z avec un premier pivot non nul Etape 1 Elimination de x 1 dans les équations 2,, n En eectuant la division de la ligne 1 par le premier pivot, on perd le caractère entier du système Il est préférable de procéder comme suit : garder la ligne 1 ; L (1) i 11 L (1) i i1 L(1) 1, pour i = 2,, n Ce qui donne le système A (2) x = b (2), avec un deuxième pivot non nul (au prix d'une éventuelle permutation) Etape 2 Elimination de x 2 dans les équations 3,, n Si on procède de la même façon pour cette étape, on constate que les coecients de la matrice A (3) et du vecteur b (3) sont divisibles par le premier pivot On peut donc s'autoriser une division par ce premier pivot pour cette étape 2, ce qui aura l'avantage de diminuer les coecients obtenus Etape k Elimination de x k dans les équations k + 1,, n Cette étape est décrite par les formules : a (k+1) ij = ( ) a (k) kk a(k) ij a (k) ik a(k) kj a (k 1) k 1,k 1 pour i = k + 1,, n et j = k + 1,, n + 1 (en prenant b comme colonne numéro n + 1) Ce qui donne au bout de n 1 étapes un système triangulaire supérieur à coecients entiers qui peut se résoudre de façon exacte dans Q n Calcul du déterminant Au signe près, on a : det ( A (2)) = ( 11 ) n 1 det (A) det ( ( ) A (3)) a (2) n 2 22 = det ( A (2)) ( = 11 De proche en proche, on a alors : det ( A (n)) = ( 1) p ( n a (k) kk k=1 a (2) 22 ) ) n 2 a (1) 11 det ( A (1)) det (A) ce qui donne, en tenant compte de l'expression de det ( A (n)) comme produit des pivots : det (A) = ( 1) p a (n) nn Dans la programmation structurée ci-dessus, on peut aussi travailler avec une matrice à n lignes et n + 1 colonnes en prenant b pour colonne n + 1 De manière plus générale, pour résoudre en parallèle p systèmes linéaires de même matrice A et de seconds membres respectifs b 1,, b p, on travaillera avec une matrice à n lignes et n+p colonnes en prenant, pour j compris entre 1 et p, b j comme colonne n + j En prenant pour valeurs particulières des seconds membres les vecteurs de la base canonique de K n, on dispose d'un procédé de calcul de l'inverse d'une matrice Mais, en fait, pour calculer l'inverse d'une matrice on préfère utiliser la méthode Gauss-Jordan qui est une variante de la méthode de Gauss
La méthode de Gauss-Jordan pour les systèmes de Cramer 357 144 La méthode de Gauss-Jordan pour les systèmes de Cramer Voir le paragraphe 137 Pour la programmation de cette méthode, on peut procéder comme suit, le vecteur b contenant en n d'opération la solution du système PROCEDURE EliminerGaussJordan(Entrée k, n : Entier ; Entrée_Sortie A : Matrice ; b : Vecteur) ; Pour j Allant de k + 1 à n Faire a kj = a kj a kk ; b k = b k a kk ; a kk = 1 ; Pour i Allant de 1 à k 1 Faire Pour j Allant de k + 1 à n Faire a ij = a ij a ik a kj ; b i = b i a ik b k ; a ik = 0 ; Pour i Allant de k + 1 à n Faire Pour j Allant de k + 1 à n Faire a ij = a ij a ik a kj ; b i = b i a ik b k ; a ik = 0 ; PROCEDURE GaussJordan(Entrée n : Entier ; Entrée_Sortie A : Matrice ; b :Vecteur) ; Pour k Allant de 1 à n Faire PivotMax(k, n, A, b) ; EliminerGaussJordan(k, n, A, b) ; Le calcul de l'inverse et du déterminant d'une matrice peut alors se faire en remplaçant le vecteur b par la matrice identité, ce qui revient à résoudre en parallèle les n systèmes linéaires de même matrice A et de seconds membres respectifs e 1,, e n formant la base canonique de K n On obtient alors la programmation structurée suivante PROCEDURE InitInverse(Entrée : n : Entier ; Sortie Inv : Matrice) ; Pour i Allant de 1 à n Faire Pour j Allant de 1 à n Faire Si j i Alors Inv ij = 0 Sinon Inv ij = 1 ;
358 Algorithmes du pivot de Gauss Applications PROCEDURE PivotMaxInv(Entrées k, n : Entiers ; ε : Réel ; Entrée_Sortie A, Inv : Matrice) ; L = k ; Pour i Allant de k + 1 à n Faire Si a ik > a Lk Alors L = i ; Si a Lk < ε Alors Arrêter('Pivot trop petit') ; Si L k Alors Pour j Allant de k à n Echanger(a kj, a Lj ) ; Pour j Allant de 1 à n Echanger(Inv kj, Inv Lj ) ; PROCEDURE EliminerInvGaussJordan(Entrées k, n : Entiers ; Entrée_Sortie A, Inv : Matrice) ; Pour j Allant de k + 1 à n Faire a kj = a kj a kk ; Pour j Allant de k + 1 à n Faire Inv kj = Inv kj Inv kk ; a kk = 1 ; Pour i Allant de 1 à k 1 Faire Pour j Allant de k + 1 à n Faire a ij = a ij a ik a kj ; Pour j Allant de 1 à n Faire Inv ij = Inv ij a ik Inv kj ; a ik = 0 ; Pour i Allant de k + 1 à n Faire Pour j Allant de k + 1 à n Faire a ij = a ij a ik a kj ; Pour j Allant de 1 à n Faire Inv ij = Inv ij a ik Inv kj ; a ik = 0 ; Fin PROCEDURE InversionGaussJordan(Entrée n : Entier ; Entrée_Sortie A, Inv : Matrice) ; InitInverse(n, Inv) ; Pour k Allant de 1 à n Faire PivotMaxInv(k, n, A, Inv) ; EliminerInvGaussJordan(k, n, A, Inv) ; 145 Applications 1451 Décomposition LR (méthode de Crout) Voir le paragraphe 134
Applications 359 1452 Décomposition LD t L des matrices symétriques réelles Voir le paragraphe 135 1453 Décomposition de Cholesky des matrices symétriques réelles dénies positives Voir le paragraphe 136
360 Algorithmes du pivot de Gauss Applications