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 AA est le nombre de pivots non nuls obtenus après réduction en forme échelon.

rang(A)=nombre de lignes non nulles dans la forme eˊchelon\text{rang}(A) = \text{nombre de lignes non nulles dans la forme échelon}

Propriétés du rang

PropriétéFormule
Rang maximalrang(A)min(m,n)\text{rang}(A) \leq \min(m, n)
Rang ligne = Rang colonnerang(A)=rang(AT)\text{rang}(A) = \text{rang}(A^T)
Plein rangrang(A)=min(m,n)\text{rang}(A) = \min(m, n)

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_row = 0
  pivot_col = 0

  while pivot_row < m and pivot_col < n:
      # 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  # colonne nulle : on garde la même ligne de pivot
          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_row += 1
      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 AA est singulière si elle n'est pas inversible.

🚨

Caractérisations équivalentes

Pour une matrice carrée AA de taille n×nn \times n, les propriétés suivantes sont équivalentes :

  1. AA est singulière
  2. det(A)=0\det(A) = 0
  3. rang(A)<n\text{rang}(A) < n
  4. AA a au moins une valeur propre nulle
  5. Il existe x0x \neq 0 tel que Ax=0A \cdot x = 0
  6. Les colonnes de AA sont linéairement dépendantes

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 n×nn \times n :

det(A)=j=1n(1)1+ja1jdet(A1j)\det(A) = \sum_{j=1}^{n} (-1)^{1+j} a_{1j} \det(A_{1j})

A1jA_{1j} est la sous-matrice obtenue en supprimant la ligne 1 et la colonne jj.

Cas particuliers

Matrice 2×2 :

det(abcd)=adbc\det\begin{pmatrix} a & b \\ c & d \end{pmatrix} = ad - bc

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

det(abcdefghi)=aei+bfg+cdhcegbdiafh\det\begin{pmatrix} a & b & c \\ d & e & f \\ g & h & i \end{pmatrix} = aei + bfg + cdh - ceg - bdi - afh

Matrice triangulaire :

det(A)=i=1naii\det(A) = \prod_{i=1}^{n} a_{ii}

Propriétés du déterminant

PropriétéFormule
Produitdet(AB)=det(A)det(B)\det(A \cdot B) = \det(A) \cdot \det(B)
Transposéedet(AT)=det(A)\det(A^T) = \det(A)
Inversedet(A1)=1/det(A)\det(A^{-1}) = 1/\det(A)
Scalairedet(λA)=λndet(A)\det(\lambda A) = \lambda^n \det(A)

Effet des opérations élémentaires

OpérationEffet sur det(A)
Échanger deux lignesMultiplie par 1-1
Multiplier une ligne par λ\lambdaMultiplie par λ\lambda
Ajouter un multiple d'une ligne à une autreNe change pas

Calcul efficace par factorisation LU

Méthode

Après factorisation PA=LUP \cdot A = L \cdot U :

det(A)=(1)sdet(U)=(1)si=1nuii\det(A) = (-1)^s \det(U) = (-1)^s \prod_{i=1}^{n} u_{ii}

ss est le nombre d'échanges de lignes.

Comparaison des complexités

MéthodeComplexité
Cofacteurs (récursif)O(n!)O(n!)
Factorisation LUO(n3/3)O(n^3/3)
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 :

det(a1b1a2b2)=aire du paralleˊlogramme formeˊ par a et b\det\begin{pmatrix} a_1 & b_1 \\ a_2 & b_2 \end{pmatrix} = \text{aire du parallélogramme formé par } \vec{a} \text{ et } \vec{b}
  • 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. det(A)0\det(A) \neq 0
  2. rang(A)=n\text{rang}(A) = n
  3. A1A^{-1} existe
  4. Ax=bA \cdot x = b a une solution unique pour tout bb
  5. Ax=0A \cdot x = 0 implique x=0x = 0
  6. Les colonnes de AA sont linéairement indépendantes
  7. Les lignes de AA sont linéairement indépendantes
  8. AA a nn pivots non nuls

Pour aller plus loin

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