- Méthode d'élimination de Gauss
-
Élimination de Gauss-Jordan
Pour les articles homonymes, voir pivot.En mathématiques, l'élimination de Gauss-Jordan, aussi appelée pivot de Gauss, nommée en hommage à Carl Friedrich Gauss et Wilhelm Jordan, est un algorithme de l'algèbre linéaire pour déterminer les solutions d'un système d'équations linéaires, pour déterminer le rang d'une matrice ou pour calculer l'inverse d'une matrice carrée inversible. Lorsqu'on applique l'élimination de Gauss sur une matrice, on obtient sa forme échelonnée réduite.
Sommaire
Histoire
Cette méthode doit son nom aux mathématiciens Carl Friedrich Gauss et Wilhelm Jordan, mais elle est connue des Chinois depuis au moins le Ier siècle de notre ère. Elle est référencée dans l'important livre chinois Jiuzhang suanshu ou Les neuf chapitres sur l'art mathématique, dont elle constitue le huitième chapitre, sous le titre « Fang cheng » (la disposition rectangulaire). La méthode est présentée au moyen de 18 exercices. Dans son commentaire très détaillé daté de 263, Liu Hui en attribue la paternité à Chang Ts'ang chancelier de l'empereur de Chine au IIe siècle avant notre ère.
Analyse numérique
La complexité algorithmique asymptotique de l'élimination de Gauss est O(n3) (notations de Landau), donc le nombre d'instructions nécessaires est proportionnel à n3 si la matrice est de type n*n. Cet algorithme peut être utilisé sur un ordinateur pour des systèmes avec des milliers d'inconnues et d'équations. Cependant, l'algorithme de Strassen, qui est en O(n2,807) a une meilleure complexité algorithmique asymptotique. De plus, la stabilité du procédé pose problème : en appliquant directement l'algorithme, les erreurs d'arrondis effectuées pendant le calcul sont accumulées et le résultat trouvé peut être loin de la solution. Dans la pratique, une bonne stratégie de choix des pivots permet en général de remédier à cette instabilité, même si on peut donner des contre-exemples[1]. L'élimination de Gauss est une bonne méthode pour les systèmes d'équations sur un corps où les calculs sont par nature exacts, comme les corps finis.
Calcul de l'inverse d'une matrice carrée par l'algorithme de Gauss-Jordan
Inverser une matrice A carrée inversible d'ordre n, revient à résoudre les n systèmes Afi = ei pour i allant de 1 à n. Pour cela, on crée un tableau à n lignes et 2n colonnes en bordant la matrice A par la matrice identité In.
Ainsi, pour inverser la matrice A=(ai j) de format (n, n), on utilisera la matrice augmentée suivante :
La transformation de Gauss-Jordan consiste à transformer ce système en un système équivalent dont le bloc gauche est l'identité, c'est-à-dire qu'il faut modifier la matrice (A | I) pour qu'elle devienne de la forme (I | A − 1) en utilisant les propriétés de l'algorithme. On notera :
- la ligne i de la matrice A à l'itération k
- le scalaire ai j de la matrice A à l'itération k
L'algorithme de Gauss-Jordan est le suivant :
Pour k allant de 1 à n
- Si il existe une ligne telle que
- échanger cette ligne i et la ligne k :
- Pour i allant de 1 à n et
- Sinon A n'est pas inversible, abandonner (on sait ici que le rang de la matrice est k − 1).
Après l'étape k de l'algorithme, la colonne k a tous ces coefficients nuls sauf un : celui de la diagonale, qui vaut 1.
Variante : on peut aussi chercher le coefficient le plus grand (en valeur absolue) avant d'échanger les lignes. Cela améliore la stabilité de l'algorithme. De même on peut aussi faire des échanges sur les colonnes pour trouver un coefficient plus grand, mais il faut garder la trace de ces permutations.
Avec l'inverse de la matrice A, peut résoudre les équations de la forme A.X = B, où B est un vecteur fixé, et X l'inconnue. Mais il existe aussi une autre présentation.
Résolution d'un système d'équations linéaires par l'algorithme de Gauss-Jordan
On veut résoudre un système d'équations A.X = B, où B est un vecteur fixé, et X le vecteur inconnu. On crée un tableau à n lignes et n + 1 colonnes en bordant la matrice A par le vecteur B. On utilise le même algorithme que ci-dessus. On obtient à la fin une matrice identité, et dans la dernière colonne le vecteur X recherché.
Variante : dans l'algorithme précédent, si on n'exécute la boucle interne que pour i allant de k + 1 à n, on obtient une matrice triangulaire supérieure. Il ne reste plus qu'à « remonter » pour retrouver les valeurs des coefficients de X.
Exemple
Soit le système d'équations suivant :
On établit la matrice correspondante et on applique la première étape de Gauss-Jordan, le pivot est 1 :
On ajoute un multiple de la première ligne aux deux autres lignes pour obtenir des zéros (respectivement et ); le nouveau pivot est ensuite 5 :
La deuxième ligne est multipliée par 1/5 :
On ajoute cette deuxième ligne à la troisième et à la première, le nouveau pivot est -7 :
On divise la 3e ligne par -7 :
On utilise la 3e ligne pour éliminer des coefficients dans la première et deuxième ligne. Nous sommes alors en présence d'une forme échelonnée réduite avec la matrice identité d'un côté et la valeur des variables dans l'autre :
La solution du système est ainsi :
Déterminant
Cet algorithme permet aussi de calculer le déterminant d'une matrice : dans l'algorithme ci-dessus, c'est le produit des « » qui sont choisis comme pivot à chaque itération. Si l'algorithme s'arrête parce qu'il n'y a plus de pivot non nul, alors la matrice n'est pas inversible, son déterminant est nul, mais on peut calculer son rang.
Notes et références
- ↑ voir par exemple les commentaires de Patrick Lascaux, Raymond Théodor, Analyse numérique matricielle appliquée à l'art de l'ingénieur, tome 1 : Méthodes directes [détail des éditions], p. 228
Voir aussi
Articles connexes
Liens externes
- Portail des mathématiques
Catégories : Matrice | Analyse numérique matricielle | Carl Friedrich Gauss
Wikimedia Foundation. 2010.