See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Matrice inversible - Wikipédia

Matrice inversible

Un article de Wikipédia, l'encyclopédie libre.

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,

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

[modifier] Théorème des matrices inversibles

Soit A une matrice carrée d'ordre n à coefficients dans un corps \mathbb{K} (par exemple le corps des réels \mathbb{R}). Les propositions suivantes sont équivalentes (on note X une matrice colonne à n éléments dans \mathbb{K}) :

  • 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 \mathcal{M}_{n1}(\mathbb{K}), le système linéaire AX = b a au plus une solution,
  • pour tout b dans \mathcal{M}_{n1}(\mathbb{K}), le système linéaire AX = b a au moins une solution,
  • pour tout b dans \mathcal{M}_{n1}(\mathbb{K}), le système linéaire AX = b a exactement une solution,
  • les colonnes de A, considérées comme des vecteurs de \mathbb{K}^n, sont linéairement indépendantes,
  • les colonnes de A, considérées comme des vecteurs de \mathbb{K}^n, engendrent \mathbb{K}^n,
  • les colonnes de A, considérées comme des vecteurs de \mathbb{K}^n, forment une base de \mathbb{K}^n,
  • l'endomorphisme canoniquement associé à A (c’est-à-dire l'application linéaire de \mathbb{K}^n 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.

[modifier] 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 GL_n(\mathbb{K}), où \mathbb{K} 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 \mathbb{R}^{n\times n}, 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é.

[modifier] 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 rapide que l'inversion.

[modifier] Élimination de Gauss-Jordan

Icône de détail Article détaillé : Élimination de Gauss-Jordan.

[modifier] 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

A^{-1}=\frac1{\det A} \, {}^t{{\rm com} A} = \frac1{\det A} \, {}^t{\left(C_{ij}\right)} = \frac1{\det A} \, \begin{pmatrix}
C_{11} & C_{21} & \cdots & C_{j1} \\
C_{12} & \ddots &        & C_{j2} \\
\vdots &        & \ddots & \vdots \\
C_{1i} & \cdots & \cdots & C_{ji} \\
\end{pmatrix}

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.

[modifier] 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  ad - bc \neq 0,


A = \begin{bmatrix}
a & b \\ c & d \\
\end{bmatrix} ,     \      

{\rm com} A = \begin{bmatrix}
d & -c \\ -b & a \\
\end{bmatrix} ,     \      

{}^t{{\rm com} A} = \begin{bmatrix}
d & -b \\ -c & a \\
\end{bmatrix}



A^{-1} = \begin{bmatrix}
a & b \\ c & d \\
\end{bmatrix}^{-1} =
\frac1{ad - bc} \begin{bmatrix}
d & -b \\ -c & a \\
\end{bmatrix}


EXEMPLE


C = \begin{bmatrix}
1 & 2 \\ 3 & 4 \\
\end{bmatrix} ,     \      
C^{-1} = \begin{bmatrix}
1 & 2 \\ 3 & 4 \\
\end{bmatrix}^{-1} =
\frac1{-2} \begin{bmatrix}
4 & -2 \\ -3 & 1 \\
\end{bmatrix}

[modifier] Inversion des matrices 3 x 3

De même, l'inverse d'une matrice de dimensions 3 x 3 s'écrit :


\det A = a(ei-fh) - b(di-fg) + c(dh-eg) = a(ei-fh) - d(bi-ch) + g(bf-ce) = ... \


A^{-1} = \begin{bmatrix}
a & b & c\\ d & e & f \\ g & h & i \\
\end{bmatrix}^{-1} = \frac1{\det A} \begin{bmatrix}
ei - fh & fg - di & dh - eg \\
ch - bi & ai - cg & bg - ah \\
bf - ce & cd - af & ae - bd
\end{bmatrix}^t = 

\frac1{\det A} \begin{bmatrix}
ei - fh & ch - bi & bf - ce\\
fg - di & ai - cg &  cd - af\\
dh - eg  & bg - ah  & ae - bd
\end{bmatrix}

[modifier] Inversion par bloc

L'inverse d'une matrice peut également être calculé par bloc, en utilisant la formule analytique suivante:

\begin{bmatrix} A & B \\ C & D \end{bmatrix}^{-1} = \begin{bmatrix} A^{-1}+A^{-1}B(D-CA^{-1}B)^{-1}CA^{-1} & -A^{-1}B(D-CA^{-1}B)^{-1} \\ -(D-CA^{-1}B)^{-1}CA^{-1} & (D-CA^{-1}B)^{-1} \end{bmatrix}

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 (DCA − 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.

[modifier] Dérivée de l'inverse d'une matrice

Soient un intervalle I (d'intérieur non vide) de \mathbb{R} et une fonction matricielle A : I \to \mathrm{GL}_n(\mathbb{R}),\, t \mapsto A(t) dérivable sur I.

Alors la fonction matricielle A^{-1} : I \to \mathrm{GL}_n(\mathbb{R}),\, t \mapsto A(t)^{-1} est dérivable sur I et :

\forall\, t \in I,\,\frac{\mathrm{d}A^{-1}}{\mathrm{d}t}(t) = - A^{-1}(t)\, \frac{\mathrm{d}A}{\mathrm{d}t}(t)\, A^{-1}(t).

Cette relation découle de l'identité

\forall\, t \in I,\,A^{-1}(t)\, A(t) = I_n.

[modifier] 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  (X'X)^{-1}X' \, ou une postmultiplication par  X'(XX')^{-1} \,

On a bien:

 (X'X)^{-1}X'X=I \,
 XX'(XX')^{-1}=I \,

[modifier] Implementation 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 methode 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 carree");
            return false;
        }
        Vector<Integer> I = new Vector<Integer>(); 
        Vector<Integer> J = new Vector<Integer>(); 
        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;
            }
        }
 
        //Parametres permettant l'arret premature des boucles ci-dessous si calcul impossible 
        boolean bk = true;
        boolean bl = true;
 
        //Controle que la recherche de pivot se deroule bien
        int cnt_row = 0;
        int cnt_col = 0;
 
        //parametre 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 ete trouve
                            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";
                    bk = false;
                    k = n; //Pas de pivot possible, donc pas d'inverse possible! 
                }        
            }
        }
 
        if (!bk)
        {
            //Le pivot n'a pas pu etre trouve precedemment, 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 
        {
            //Reorganisation des colonnes de sorte que A=I et B=Inv(M). Methode 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. A 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;
        } 
    }

[modifier] Voir aussi

[modifier] Liens externes


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -