- Inverse d'une matrice
-
Matrice inversible
En mathématiques et plus particulièrement en algèbre linéaire, une matrice carrée A d'ordre n est dite inversible ou régulière ou encore non singulière, s'il existe une matrice B d'ordre n telle que
- AB = BA = In, ( AB = In suffit d'aprés le théoreme du rang )
où In désigne la matrice unité d'ordre n. La multiplication est la multiplication ordinaire des matrices. Dans ce cas, la matrice B est unique et est appelée la matrice inverse de A, et est notée A−1.
Une matrice carrée qui n'est pas inversible est dite non inversible ou singulière. Tandis que dans les cas usuels, ces matrices sont à coefficients réels ou complexes, toutes ces définitions peuvent être données pour des matrices à coefficients dans un corps (et plus généralement dans un anneau) quelconque.
Sommaire
Théorème des matrices inversibles
Soit A une matrice carrée d'ordre n à coefficients dans un corps (par exemple le corps des réels ). Les propositions suivantes sont équivalentes (on note X une matrice colonne à n éléments dans ) :
- A est inversible,
- A est équivalente à la matrice unité In d'ordre n,
- A possède n pivots,
- le déterminant de A est non nul : det (A) ≠ 0,
- 0 n'est pas valeur propre de A,
- le rang de A est égal à n,
- le système homogène AX = 0 a pour unique solution X = 0,
- pour tout b dans , le système linéaire AX = b a au plus une solution,
- pour tout b dans , le système linéaire AX = b a au moins une solution,
- pour tout b dans , le système linéaire AX = b a exactement une solution,
- les colonnes de A, considérées comme des vecteurs de , sont linéairement indépendantes,
- les colonnes de A, considérées comme des vecteurs de , engendrent ,
- les colonnes de A, considérées comme des vecteurs de , forment une base de ,
- l'endomorphisme canoniquement associé à A (c’est-à-dire l'application linéaire de dans lui-même, notée can(A), qui a pour matrice A en base canonique) est injectif,
- l'endomorphisme can(A) canoniquement associé à A est surjectif,
- l'endomorphisme can(A) canoniquement associé à A est bijectif,
- la matrice A est inversible à gauche, c'est-à-dire qu'il existe une matrice B carrée d'ordre n telle que BA = In,
- la matrice A est inversible à droite, c'est-à-dire qu'il existe une matrice B carrée d'ordre n telle que AB = In,
- la transposée tA de A est inversible,
- il existe un polynôme annulateur de A dont 0 n'est pas racine,
- 0 n'est pas racine du polynôme minimal de A.
Plus généralement, une matrice carrée à coefficients dans un anneau commutatif unifère est inversible si et seulement si son déterminant est inversible dans cet anneau.
Autres propriétés et résultats
La matrice inverse d'une matrice inversible A est elle-même inversible, et
- (A−1)−1 = A
Le produit de deux matrices inversibles A et B (de même ordre) est une matrice inversible et son inverse est donné par la relation suivante (on remarquera que l'ordre des matrices est inversé)
- (AB)−1 = B−1A−1
Le produit d'un scalaire non nul k et d'une matrice inversible A est inversible, et son inverse est égal au produit de l'inverse de ce scalaire et de l'inverse de cette matrice.
- (kA)−1 = k−1A−1
Des deux premières de ces propriétés, il résulte que l'ensemble des matrices carrées inversibles d'ordre n constitue un groupe multiplicatif (dont l'élément neutre est la matrice unité d'ordre n); on l'appelle groupe général linéaire et on le note habituellement , où est le corps des scalaires.
En général, « presque toutes » les matrices carrées d'ordre n sont inversibles. Sur le corps des nombres réels, cela peut être formulé de façon plus précise: l'ensemble des matrices non inversibles, considéré comme sous-ensemble de , est négligeable, c'est-à-dire de mesure de Lebesgue nulle. Intuitivement, cela signifie que si l'on choisit au hasard une matrice carrée d'ordre n à coefficients réels, la probabilité pour qu'elle soit non inversible est égale à zéro. La raison en est que les matrices non inversibles sont les racines (ou zéros) d'une fonction polynomiale donnée par le déterminant.
L'ensemble des matrices inversibles est dense dans l'ensemble des matrices carrées réelles ou complexes. En effet on peut approcher toute matrice de Mn(R) (ou Mn(C)) par une suite de matrices inversibles. Par exemple, considérons la suite de matrices de terme général M(k)=M-(1/k).I. Le déterminant de M(k) est une fonction polynomiale en k, il s'annule donc un nombre fini de fois. Ainsi il existe K tel que pour tout k > K , det(M(k)) soit non nul, et donc que M(k) soit inversible. On a donc bien en considérant la suite (M(k)) pour k>K une suite de matrices inversibles qui converge vers M une matrice quelconque, ce qui justifie la densité.
Méthodes d'inversion
Avant de décrire les méthodes usuelles d'inversion, notons qu'en pratique, il n'est pas nécessaire de calculer l'inverse d'une matrice pour résoudre un système d'équations linéaires. Il est toutefois nécessaire que la matrice considérée soit inversible. Des méthodes de décomposition comme la décomposition LU sont beaucoup plus rapides que l'inversion.
Élimination de Gauss-Jordan
Article détaillé : Élimination de Gauss-Jordan.Méthode des cofacteurs
L'inverse d'une matrice A s'écrit sous une forme très simple à l'aide de la matrice complémentaire tcomA
où detA est le déterminant de A, comA est la comatrice de A et tA est la matrice transposée de A.
Cette écriture permet un calcul aisé de l'inverse d'une matrice de petite dimension. Pour des matrices de plus grande dimensions, cette méthode essentiellement récursive devient inefficace.
Inversion des matrices 2 x 2
L'équation des cofacteurs ci-dessus permet de calculer l'inverse des matrices de dimensions 2 x 2 : si ,
EXEMPLEInversion des matrices 3 x 3
De même, l'inverse d'une matrice de dimensions 3 x 3 s'écrit :
Inversion par bloc
L'inverse d'une matrice peut également être calculé par bloc, en utilisant la formule analytique suivante:
où A, B, C et D sont des blocs de taille arbitraire. Cette méthode peut se révéler avantageuse, par exemple, si A est diagonale et si son complément de Schur (D − CA − 1B) est une matrice de petite dimension, puisque ce sont les seules matrices à inverser.
Cette technique a été inventée par Volker Strassen, connu également pour l'algorithme de Strassen sur le produit matriciel rapide.
Dérivée de l'inverse d'une matrice
Soient un intervalle I (d'intérieur non vide) de et une fonction matricielle dérivable sur I.
Alors la fonction matricielle est dérivable sur I et :
Cette relation découle de l'identité
- .
Généralisations
Certaines des propriétés des matrices inverses sont aussi vérifiées par les matrices pseudo-inverses qui peuvent être définies pour n'importe quelle matrice, même pour celles qui ne sont pas carrées.
Au cas où la matrice X n'est pas carrée, il est possible d'inverser grâce à une prémultiplication par le groupe de matrices ou une postmultiplication par
On a bien:
Implémentation en Java
Le code ci-dessous implémente la méthode du pivot de Gauss-Jordan pour inverser une matrice carrée inversible. Le type de retour de la fonction étant booléen, si la matrice n'est pas inversible, elle retourne « false », autrement elle retourne « true ». Cette fonction utilise une fonction de permutation des lignes (conformément à la méthode du pivot) en fin de code. Cette fonction de permutation est implémentée ci-dessous également.
public static boolean inversion(double[][] M, int m, int n, double[][] B) { if (m != n) { System.out.println("Matrice non carrée"); return false; } //Pour stocker les lignes pour lesquels un pivot a déjà été trouvé Vector<Integer> I = new Vector<Integer>(); //Pour stocker les colonnes pour lesquels un pivot a déjà été trouvé Vector<Integer> J = new Vector<Integer>(); //Pour calculer l'inverse de la matrice initiale double[][] A = new double[m][n]; //Copie de M dans A et Mise en forme de B : B=I for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { A[i][j] = M[i][j]; if (i==j) B[i][j] = 1; else B[i][j] = 0; } } //Paramètres permettant l'arrêt prématuré des boucles ci-dessous si calcul impossible boolean bk = true; boolean bl = true; //Paramètres de contrôle pour la recherche de pivot int cnt_row = 0; int cnt_col = 0; //paramètre de stockage de coefficients double a, tmp; for (int k=0; k<n && bk; k++) { if (!I.contains(k)) { I.addElement(k); cnt_row++; bl = true; for (int l=0; l<n && bl; l++) { if (!J.contains(l)) { a = A[k][l]; if (a != 0) { J.addElement(l); cnt_col++; bl = false; //permet de sortir de la boucle car le pivot a été trouvé for (int p=0; p<n; p++) { if (p != k) { tmp = A[p][l]; for (int q=0; q<n; q++) { A[p][q] = A[p][q] - A[k][q]*(tmp/a); B[p][q] = B[p][q] - B[k][q]*(tmp/a); } } } } } } if (cnt_row != cnt_col) { //Matrix is singular"; //Pas de pivot possible, donc pas d'inverse possible! On sort de la boucle bk = false; k = n; } } } if (!bk) { //Le pivot n'a pas pu être trouve précédemment, ce qui a donne bk = false System.out.println("Matrix is singular"); for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { B[j][i] = M[j][i]; } } return false; } else { //Réorganisation des colonnes de sorte que A=I et B=Inv(M). Méthode de Gauss-Jordan for (int l=0; l<n; l++) { for (int k=0; k<n; k++) { a = A[k][l]; if (a != 0) { A[k][l] = 1; for (int p=0; p<n; p++) { B[k][p] = B[k][p]/a; } if (k != l) { exchange_row(A,k+1,l+1,n,n); exchange_row(B,k+1,l+1,n,n); } k = n; //Pour sortir de la boucle car le coefficient non nul a ete trouve } } } return true; } }
La fonction ci-dessous permute deux lignes d'une matrice donnée. À noter que dans une matrice à m lignes et n colonnes, les numéros de lignes à permuter se notent k et l où k et l sont strictement positifs et inférieurs ou égaux à m.
/*To exchange two rows in a matrix*/ public static void exchange_row(double[][] M, int k, int l, int m, int n) { if (k<=0 || l<=0 || k>n || l>n || k==l) return; double tmp; for (int j=0; j<n; j++) { tmp = M[k-1][j]; M[k-1][j] = M[l-1][j]; M[l-1][j] = tmp; } }
Voir aussi
Liens externes
- Portail des mathématiques
Catégorie : Matrice
Wikimedia Foundation. 2010.