Élimination de Gauss

Objectifs d'apprentissage

À la fin de cette leçon, vous serez en mesure de :

  • Appliquer l'algorithme d'élimination de Gauss pour résoudre un système linéaire
  • Identifier et utiliser les pivots lors de l'élimination
  • Transformer un système quelconque en système triangulaire supérieur
  • Évaluer la complexité algorithmique de la méthode
  • Comparer l'élimination de Gauss avec la méthode de Gauss-Jordan

Prérequis

  • Notions de base en algèbre linéaire (matrices, vecteurs)
  • Opérations élémentaires sur les lignes d'une matrice
  • Résolution de systèmes triangulaires par substitution

Principe de la méthode

L'élimination de Gauss (aussi appelée méthode de Gauss ou réduction de Gauss) est l'une des méthodes les plus fondamentales pour résoudre les systèmes d'équations linéaires. Son principe est simple et élégant :

🚨

Idée centrale

Transformer le système original en un système triangulaire supérieur équivalent , puis résoudre ce dernier par substitution arrière.

La méthode se décompose en deux étapes :

  1. Phase d'élimination : Utiliser les opérations élémentaires pour créer des zéros sous la diagonale, transformant ainsi la matrice en une matrice triangulaire supérieure .

  2. Phase de substitution : Résoudre le système triangulaire par substitution arrière.


Exemple détaillé pas à pas

Résolvons le système suivant :

Avant de détailler les calculs, explorez le processus de manière interactive :

Élimination de Gauss : visualisation interactive

Transformation en système triangulaire supérieur

Étape 0 / 4
a₁a₂a₃b
R1
3
-1
2
12
R2
1
2
3
11
R3
2
-2
-1
2

Description

Matrice augmentée initiale [A|b]

Opération

Multiplicateur

Pivot
Ligne modifiée
Zéro créé

Étape initiale : écrire la matrice augmentée

Phase d'élimination

Premier pivot :

Le pivot est l'élément diagonal utilisé pour éliminer les éléments situés en dessous de lui dans la même colonne. Ici, le premier pivot est .

Objectif : Créer des zéros en positions (2,1) et (3,1).

Pour éliminer , on effectue :

Pour éliminer , on effectue :

Détaillons le calcul pour :

Et pour :

La matrice devient :

Second pivot :

Objectif : Créer un zéro en position (3,2).

On effectue :

La matrice triangulaire supérieure obtenue est :

💡

Système triangulaire obtenu

Le système équivalent est maintenant :

Phase de substitution arrière

On résout en remontant de la dernière équation à la première :

Étape 1 : De la troisième équation :

Étape 2 : De la deuxième équation :

Étape 3 : De la première équation :

Solution finale : , , .


La notion de pivot

Définition

Le pivot à l'étape est l'élément diagonal utilisé pour éliminer tous les éléments situés en dessous de lui dans la colonne .

Rôle du pivot

À chaque étape, on divise par le pivot pour calculer les multiplicateurs :

Puis on effectue l'élimination :

⚠️

Problème potentiel : pivot nul

Si un pivot est nul (), la division est impossible et l'algorithme échoue. C'est pourquoi on introduit le pivotage, que nous étudierons dans une leçon ultérieure.


Algorithme général

Voici l'algorithme d'élimination de Gauss pour un système de équations à inconnues :

elimination_gauss.pypython
import numpy as np

def elimination_gauss(A, b):
  """
  Résout le système A.x = b par élimination de Gauss.

  Paramètres:
      A : matrice des coefficients (n x n)
      b : vecteur des seconds membres (n,)

  Retourne:
      x : vecteur solution (n,)
  """
  n = len(b)

  # Créer la matrice augmentée
  Aug = np.column_stack([A.astype(float), b.astype(float)])

  # Phase d'élimination (triangularisation)
  for k in range(n - 1):  # Pour chaque pivot
      pivot = Aug[k, k]

      if abs(pivot) < 1e-12:
          raise ValueError(f"Pivot nul à l'étape {k}")

      for i in range(k + 1, n):  # Pour chaque ligne sous le pivot
          # Calculer le multiplicateur
          m = Aug[i, k] / pivot
          # Éliminer
          Aug[i, k:] = Aug[i, k:] - m * Aug[k, k:]

  # Phase de substitution arrière
  x = np.zeros(n)
  for i in range(n - 1, -1, -1):
      somme = sum(Aug[i, j] * x[j] for j in range(i + 1, n))
      x[i] = (Aug[i, n] - somme) / Aug[i, i]

  return x

# Exemple d'utilisation
A = np.array([[3, -1, 2],
            [1,  2, 3],
            [2, -2, -1]], dtype=float)
b = np.array([12, 11, 2], dtype=float)

x = elimination_gauss(A, b)
print(f"Solution : x = {x}")
# Affiche : Solution : x = [3. 1. 2.]

Complexité algorithmique

Analyse du coût

L'élimination de Gauss nécessite deux types d'opérations :

1. Phase d'élimination :

  • À l'étape , on effectue environ divisions et multiplications-soustractions.
  • Le coût total est de l'ordre de :

2. Phase de substitution arrière :

  • Coût de l'ordre de opérations.
🚨

Complexité de l'élimination de Gauss

La complexité totale de l'élimination de Gauss est :

où « flops » signifie « floating point operations » (opérations en virgule flottante).

Comparaison avec d'autres méthodes

MéthodeComplexitéRemarque
CramerImpraticable
Élimination de GaussMéthode de référence
Gauss-Jordan50% plus coûteuse
Substitution (système triangulaire)Négligeable pour grand

Temps de calcul pratique

Pour donner une idée concrète, voici les temps approximatifs pour différentes tailles de systèmes sur un ordinateur moderne :

Taille nOpérations (≈ n³/3)Temps estimé
100333 000< 1 ms
1 000333 millions≈ 0.1 s
10 000333 milliards≈ 2 min
100 000333 × 10¹²≈ 1 jour

Méthode de Gauss-Jordan

La méthode de Gauss-Jordan est une variante qui élimine les éléments à la fois au-dessus et en dessous de la diagonale, transformant la matrice en matrice identité.

Principe

Au lieu d'obtenir une matrice triangulaire supérieure, on obtient directement :

Avantages et inconvénients

AspectGauss-JordanÉlimination de Gauss
Substitution arrièreNon nécessaireNécessaire
Complexité
Efficacité50% plus lentePlus efficace
⚠️

Recommandation pratique

La méthode de Gauss-Jordan est déconseillée pour la simple résolution de systèmes linéaires car elle est 50% plus coûteuse que l'élimination de Gauss standard. Elle reste cependant utile pour calculer l'inverse d'une matrice.


Visualisation du processus

Le tableau suivant résume les étapes de l'élimination pour notre exemple :

ÉtapeOpérationPivot utilisé
InitialeMatrice augmentée originale
1a
1b
2
FinaleSubstitution arrière

La visualisation suivante montre la méthode de Gauss-Jordan appliquée au même système, pour comparaison avec l'élimination de Gauss :

Méthode de Gauss-Jordan

Élimination au-dessus ET en-dessous de la diagonale → matrice identité

1 / 10
3
-1
2
12
1
2
3
11
2
-2
-1
2

Matrice augmentée initiale [A|b]

Pivot
1 sur diagonale
0 créé
Solution

Résumé

L'élimination de Gauss est une méthode fondamentale pour résoudre les systèmes linéaires :

  • Principe : Transformer le système en un système triangulaire supérieur équivalent, puis résoudre par substitution arrière.
  • Pivot : Élément diagonal utilisé pour éliminer les éléments en dessous. Un pivot nul pose problème (solution : pivotage).
  • Complexité : flops, ce qui est bien meilleur que la méthode de Cramer ().
  • Gauss-Jordan : Variante qui évite la substitution arrière mais est 50% plus coûteuse — déconseillée pour la résolution simple.
  • L'algorithme se programme facilement et constitue la base de nombreuses bibliothèques numériques.

Pour aller plus loin

La prochaine leçon abordera le pivotage, une technique essentielle pour :

  • Éviter les divisions par zéro (pivot nul)
  • Améliorer la stabilité numérique de l'algorithme
  • Réduire les erreurs d'arrondi lors des calculs

Nous verrons le pivotage partiel et le pivotage complet, ainsi que la technique de normalisation (scaling).