Rang, singularité et déterminants

Objectifs d'apprentissage

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

  • Déterminer le rang d'une matrice par réduction en échelon
  • Reconnaître une matrice singulière
  • Calculer un déterminant par cofacteurs et par factorisation LU
  • Comprendre le lien entre rang, déterminant et inversibilité
  • Interpréter géométriquement le déterminant

Prérequis

  • Élimination de Gauss
  • Factorisation LU

Le rang d'une matrice

Définition

Le rang d'une matrice est le nombre de pivots non nuls obtenus après réduction en forme échelon.

Rang d'une matrice

Le rang = nombre de pivots non nuls après réduction en échelon

Matrice A

1
0
0
0
1
0
0
0
1

Forme échelon

1
0
0
0
1
0
0
0
1

Rang(A) = 3

✓ Plein rang : la matrice est inversible

Propriétés du rang

PropriétéFormule
Rang maximal
Rang ligne = Rang colonne
Plein rang

Calcul du rang

rang_matrice.pypython
import numpy as np

def rang_matrice(A, tol=1e-10):
  """
  Calcule le rang d'une matrice par réduction en échelon.
  """
  U = A.astype(float).copy()
  m, n = U.shape
  rang = 0
  pivot_col = 0

  for pivot_row in range(m):
      if pivot_col >= n:
          break

      # Chercher un pivot non nul dans la colonne
      max_idx = pivot_row + np.argmax(np.abs(U[pivot_row:, pivot_col]))

      if np.abs(U[max_idx, pivot_col]) < tol:
          pivot_col += 1
          continue

      # Échanger les lignes
      U[[pivot_row, max_idx]] = U[[max_idx, pivot_row]]
      rang += 1

      # Élimination
      for i in range(pivot_row + 1, m):
          factor = U[i, pivot_col] / U[pivot_row, pivot_col]
          U[i, pivot_col:] -= factor * U[pivot_row, pivot_col:]

      pivot_col += 1

  return rang

# Exemples
A1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  # rang 2
A2 = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])  # rang 3
A3 = np.array([[1, 2], [2, 4]])  # rang 1

print(f"rang(A1) = {rang_matrice(A1)}")
print(f"rang(A2) = {rang_matrice(A2)}")
print(f"rang(A3) = {rang_matrice(A3)}")

Matrices singulières

Définition

Une matrice carrée est singulière si elle n'est pas inversible.

🚨

Caractérisations équivalentes

Pour une matrice carrée de taille , les propriétés suivantes sont équivalentes :

  1. est singulière
  2. a au moins une valeur propre nulle
  3. Il existe tel que
  4. Les colonnes de sont linéairement dépendantes

Interprétation géométrique de la singularité

Col 1Col 2

Les colonnes sont indépendantes → det ≠ 0 → Aire > 0

det(A) = 1·1 - 0·0 = 1

Détection lors de l'élimination de Gauss

Une matrice est singulière si, même après pivotage, on rencontre un pivot nul :

detection_singularite.pypython
def est_singuliere(A, tol=1e-10):
  """
  Détecte si une matrice carrée est singulière.
  """
  n = len(A)
  return rang_matrice(A, tol) < n

Le déterminant

Définition récursive (cofacteurs)

Pour une matrice :

est la sous-matrice obtenue en supprimant la ligne 1 et la colonne .

Cas particuliers

Matrice 2×2 :

Matrice 3×3 (règle de Sarrus) :

Matrice triangulaire :

Calcul du déterminant

3
1
2
4

det = 3·4 - 1·2

det = 12 - 2

det = 10

det(A) = 10

✓ Non singulière (inversible)


Propriétés du déterminant

PropriétéFormule
Produit
Transposée
Inverse
Scalaire

Effet des opérations élémentaires

OpérationEffet sur det(A)
Échanger deux lignesMultiplie par
Multiplier une ligne par Multiplie par
Ajouter un multiple d'une ligne à une autreNe change pas

Calcul efficace par factorisation LU

Méthode

Après factorisation :

est le nombre d'échanges de lignes.

Comparaison des complexités

MéthodeComplexité
Cofacteurs (récursif)
Factorisation LU
determinant.pypython
import numpy as np

def determinant(A):
  """
  Calcule le déterminant par factorisation LU avec pivotage.
  """
  n = len(A)
  U = A.astype(float).copy()
  swaps = 0

  for k in range(n - 1):
      # Pivotage partiel
      max_idx = k + np.argmax(np.abs(U[k:, k]))
      if max_idx != k:
          U[[k, max_idx]] = U[[max_idx, k]]
          swaps += 1

      if abs(U[k, k]) < 1e-12:
          return 0.0  # Matrice singulière

      # Élimination
      for i in range(k + 1, n):
          U[i, k:] -= (U[i, k] / U[k, k]) * U[k, k:]

  # Produit de la diagonale avec signe
  return ((-1) ** swaps) * np.prod(np.diag(U))

# Exemples
A1 = np.array([[2, 1], [1, 3]])
A2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  # singulière

print(f"det(A1) = {determinant(A1)}")
print(f"det(A2) = {determinant(A2)}")

Interprétation géométrique

En 2D : aire signée

Le déterminant de deux vecteurs colonnes représente l'aire signée du parallélogramme qu'ils forment :

  • Positif : orientation directe
  • Négatif : orientation inverse
  • Nul : vecteurs colinéaires (aire nulle)

En 3D : volume signé

Le déterminant de trois vecteurs représente le volume signé du parallélépipède.

En général

Le déterminant mesure comment une transformation linéaire dilate ou contracte les volumes.


Résumé

ConceptDéfinitionCalcul
RangNombre de pivots non nulsRéduction en échelon
Singularitédet = 0, rang < nPivot nul après pivotage
DéterminantFacteur de dilatationProduit diagonale de U

8 propriétés équivalentes pour A inversible :

  1. existe
  2. a une solution unique pour tout
  3. implique
  4. Les colonnes de sont linéairement indépendantes
  5. Les lignes de sont linéairement indépendantes
  6. a pivots non nuls

Pour aller plus loin

La prochaine leçon expliquera comment inverser une matrice et quand cette opération est pertinente.