Principe
La décomposition LU exprime toute matrice carrée inversible A comme le produit de deux matrices triangulaires :
- L — matrice triangulaire inférieure, avec des 1 sur la diagonale (convention diagonale unité)
- U — matrice triangulaire supérieure
A = L · U
⎡1 0⎤ ⎡u₁₁ u₁₂⎤
L = ⎣l₂₁ 1⎦ , U = ⎣ 0 u₂₂⎦
llu_unit(A)
Calcule la matrice L de la décomposition LU. La diagonale est fixée à 1 et les coefficients sous-diagonaux sont calculés par élimination de Gauss.
A = [[4, 3], [6, 3]] L = llu_unit(A) # L = [[1.0, 0.0], # [1.5, 1.0]]
ulu_unit(A)
Calcule la matrice U correspondante. Une fois L et U obtenus, on peut vérifier que leur produit reconstitue la matrice originale.
U = ulu_unit(A) # U = [[4.0, 3.0], # [0.0, -1.5]] # Vérification : L · U = A import numpy as np np.allclose(np.dot(L, U), A) # True
Applications
- Résolution de systèmes linéaires Ax = b par substitution avant/arrière
- Calcul du déterminant : det(A) = det(U) = produit des éléments diagonaux de U
- Calcul de l'inverse d'une matrice par résolution de n systèmes
- Base algorithmique pour de nombreuses méthodes numériques
ℹ️
La décomposition LU est préférable à Cholesky pour les matrices qui ne sont pas symétriques définies positives.