Introduction
Lorsqu’on travaille avec l’analyse de données, l’apprentissage automatique (machine learning) ou le calcul scientifique, on rencontre souvent des situations où il est nécessaire d’inverser une matrice — en particulier pour résoudre des systèmes d’équations linéaires ou effectuer des transformations.
La bibliothèque NumPy de Python rend ce processus à la fois rapide et simple.
Qu’est-ce que l’inverse d’une matrice ?
Pour une matrice carrée $( A )$, la matrice inverse $( A^{-1} )$ est définie de telle sorte que :
\begin{equation}
[
A \times A^{-1} = I
]
\end{equation}
où ( I ) est la matrice identité (une matrice contenant des 1 sur la diagonale et des 0 ailleurs).
Cependant, toutes les matrices ne sont pas inversibles.
Une matrice est dite inversible (ou non singulière) si et seulement si son déterminant est non nul.
Étape par étape : calculer l’inverse d’une matrice en Python
1 2 3 4 5 6 7 8 9 10 11 | # Étape 1 — Importer NumPy import numpy as np # Étape 2 — Définir une matrice carrée A = np.array([[4, 7], [2, 6]]) # Étape 3 — Calculer l’inverse A_inv = np.linalg.inv(A) print("Inverse de A :") print(A_inv) |
Sortie :
1 2 3 | Inverse de A : [[ 0.6 -0.7] [-0.2 0.4]] |
Vérifier le résultat
Vous pouvez vérifier le résultat en multipliant la matrice d’origine par son inverse.
Le produit doit être (approximativement) la matrice identité.
1 2 3 | I = A @ A_inv print("\nA * A_inv =") print(np.round(I, 3)) |
Résultat :
1 2 3 | A * A_inv = [[1. 0.] [0. 1.]] |
Les petites différences (par exemple 0.999 au lieu de 1.0) sont dues à la précision numérique des calculs en virgule flottante.
Vérifier si une matrice est inversible
Avant de calculer l’inverse, il est recommandé de vérifier le déterminant :
1 2 3 4 5 | det = np.linalg.det(A) print("Déterminant de A :", det) if det == 0: print("La matrice est singulière — aucun inverse n’existe.") |
Si le déterminant est nul, la matrice n’est pas inversible.
Gérer les matrices non inversibles
Si votre matrice peut être singulière ou non carrée, vous pouvez tout de même calculer une pseudo-inverse à l’aide de :
1 | A_pinv = np.linalg.pinv(A) |
La pseudo-inverse de Moore–Penrose fonctionne même lorsque la véritable inverse n’existe pas.
Elle est largement utilisée en apprentissage automatique et en régression aux moindres carrés.
Résumé
| Tâche | Fonction | Description |
|---|---|---|
| Inverse | np.linalg.inv(A) |
Calcule l’inverse d’une matrice carrée non singulière |
| Déterminant | np.linalg.det(A) |
Vérifie si la matrice est inversible |
| Pseudo-inverse | np.linalg.pinv(A) |
Fonctionne pour toute matrice (carrée ou non) |
Un autre exemple
Pour calculer l’inverse d’une matrice en Python, une solution consiste à utiliser les fonctions d’algèbre linéaire de NumPy via le module linalg.
Exemple
\begin{equation}
A = \left( \begin{array}{ccc}
1 & 3 & 3 \\
1 & 4 & 3 \\
1 & 3 & 4
\end{array}\right)
\end{equation}
L’inverse de ( A ) est :
\begin{equation}
A^{-1} = \left( \begin{array}{ccc}
7 & -3 & -3 \\
-1 & 1 & 0 \\
-1 & 0 & 1
\end{array}\right)
\end{equation}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | >>> import numpy as np >>> A = np.array([[1, 3, 3], ... [1, 4, 3], ... [1, 3, 4]]) >>> A array([[1, 3, 3], [1, 4, 3], [1, 3, 4]]) >>> A_inv = np.linalg.inv(A) >>> A_inv array([[ 7., -3., -3.], [-1., 1., 0.], [-1., 0., 1.]]) |
Vérification du résultat
1 2 3 4 | >>> A_inv.dot(A) array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) |
Comme prévu, la multiplication de ( A^{-1} ) par ( A ) donne la matrice identité, confirmant que l’inversion est correcte.
Références
| Liens | Site officiel |
|---|---|
NumPy linalg.inv — Calculer l’inverse (multiplicatif) d’une matrice |
Documentation officielle NumPy |
NumPy linalg.det — Calculer le déterminant d’un tableau |
Documentation officielle NumPy |
NumPy linalg.pinv — Calculer la pseudo-inverse de Moore–Penrose d’une matrice |
Documentation officielle NumPy |
