[Appel à témoins] Vos trucs et astuces pour inverser les matrices

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 02 Jan 2013, 21:27

Je vais répondre à Léon.
Avant de m'attaquer à ce problème, j'ai ouvert un sujet.
A part une méthode que j'ai citée (j'ai oublié le nom) je n'ai pas trouvé d'autre méthode que celle des cofacteurs. Il est absolument exact qu'elle parait bien longue et bien compliquée pour le seul but de résoudre un système linéaire, d'où ma question de base : "quelle est l'utilité de l'inversion de matrice ?".
J'ai exposé en détail mes questions et ce que je cherchais à faire, j'avoue que à part certaines évidences (type : c'est l'inverse d'une application) je ne vois que des réponses du genre : "c'est pas ça qu'il faut faire !".
Il faut comprendre que je suis un peu perdu.
Si mon correspondant avait écrit : "il faut résoudre le système linéaire suivant", je n'aurais parlé de rien. La résolution d'un système linéaire quelle que soit sa dimension, je sais faire.
Mon correspondant a utilisé l'écriture d'inversion de matrice, comme on le voit fréquemment, j'essaye de m'adapter.
Concernant le temps d'exécution, je ne sais pas si c'est la préoccupation principale.
En fait pour moi, la question actuelle est la suivante :
soit j'applique ligne à ligne ce qui est écrit, sans comprendre et surtout sans moyen de vérification
soit j'essaye de comprendre ce qui se cache derrière "inversion de matrice" et je résout la question proprement.

PS j'ai lu l'article "inversion par bloc", mon truc marche parfaitement, donc sans intérêt.
J'en suis au point où je sais inverser le matrice (qui n'est qu'un vulgaire tableau), mais à cette heure-ci j'ai aucune idée de la façon de m'en servir.

PS2 : Il est vrai que j'ai demandé des exemple de matrices et de leur inverse parce que j'ai toujours l'habitude de me vérifier (remise en cause perpétuelle = le quotidien de l'informaticien), mais j'avoue que l'utilisation d'un logiciel extérieur ou d'un calculateur ne me tente guère. Une ou 2 matrice 5x5 ou 6x6 et leur inverse me comblerait d'aise, à moins que l'on me dise que la résolution d'un système linéaire est la meilleure solution.



Benjamin
Membre Complexe
Messages: 2337
Enregistré le: 14 Avr 2008, 11:00

par Benjamin » 03 Jan 2013, 00:06

Bonsoir,

Quand on résout des équations différentielles avec des méthodes numériques (avec par exemple de la FDFD), tu utilises des méthodes à éléments finis qui maillent un espace. Typiquement le nombre de maille va être de l'ordre de plusieurs centaines de milliers (nécessaire pour atteindre une bonne convergence), et tu aboutis à un problème discrétisé du type Ax=b. La taille de A dépend directement du nombre de mailles.
Les meilleurs méthodes pour résoudre un système linéaire de plusieurs centaine de miliers de lignes, c'est d'inverser la matrice. C'est à tel point important que des logiciels se tirent la bourre pour optimser les algo qui inversent les matrices.

Dans le contexte que je connais (et qui je pense est loin de représenter un maximum) la résolution de l'inversion de telle matrice peut prendre facilement 24H avec les machines les plus puissantes. Sans compter, autre point très important, la mémoire vive nécessaire. Certaines méthodes vont demander des dizaines de Go pour résoudre de telle système (il arrive que je sature la machine sur laquelle je travaille et qui contient 64 Go de RAM).

Bref, savoir bien inverser une matrice numériquement est la clé pour gagner en temps de calcul et en mémoire nécessaire (voir ici, avec notamment le point 3).

Pour inverser une matrice 5x5, il est clair qu'un simple pivot de Gauss comme pour résoudre un système linéaire ne changera pas grand chose.

Dlzlogic a écrit:PS j'ai lu l'article "inversion par bloc", mon truc marche parfaitement, donc sans intérêt.
J'en suis au point où je sais inverser le matrice (qui n'est qu'un vulgaire tableau), mais à cette heure-ci j'ai aucune idée de la façon de m'en servir.

Je ne sais pas si j'ai bien compris ta remarque, mais une fois que tu as l'inverse, il faut calculer le produit inverse de A par ton second membre, et tu obtiens un vecteur dont chaque composante est la solution d'une des inconnus du système.

Sylviel
Modérateur
Messages: 6466
Enregistré le: 20 Jan 2010, 13:00

par Sylviel » 03 Jan 2013, 11:41

J'ai vaguement l'impression de parler dans le vide. Inverser une matrice c'est exactement résoudre un système linéaire dont le second membre est un paramètre. Ainsi tu obtiens une matrice A^-1.

Un système linéaire s'écrit Ax=b, avec A matrices, x inconnues, et b (le second membre) est un vecteur aussi. Alors les solutions s'écrivent très simplement x = A^-1 b. Donc on multiplie le vecteur b par la matrice A^-1.

Exemple :

x1 + x2 = b1
x1 - x2 = b2

a pour solution

x1 = 0.5 b1 + 0.5 b2
x2 = 0.5 b1 - 0.5 b2

pour tout b1 et b2. Donc la matrice inverse de
1 1
1 -1
est
0.5 0.5
0.5 -0.5

Une raison pour calculer l'inverse plutôt que de résoudre le système (d'un point de vue numérique) : si tu dois résoudre le système pour beaucoup de valeurs différentes de b tu fais plein de fois le même travail (à chaque fois O(N^3) ). Alors que si tu possèdes l'inverse pour chaque nouveau b tu n'as qu'une multiplication matricielle (O(N^2)) à faire...

Pour vérifier que tu as obtenu l'inverse il suffit de multiplier par la matrice de départ pour voir si cela donne l'identité. Ou demander à un langage quelconque qui a déjà ça de programmé pour vérifier.

P.S :

Petit détail technique, pour résoudre le système permettant de calculer les paramètres de la transformation affine, il n'est pas possible d'isoler la translation. La formule de transformation comporte 6 ou 12 paramètres interdépendants, contrairement à la similitude qui est une homothétie+rotation, la translation est une supplément optionnel.


la transformation dont tu parles est affine, et non linéaire. Je n'ai jamais dis que l'on pouvait ramener toute transformation affine à une transformation linéaire, j'ai juste dis que pour la clarté de la réponse (insuffisante visiblement) je me contentait d'une transformation linéaire. Dans ce cas "trouver les paramètres de la transformation inverse" c'est exactement la même chose que déterminer l'inverse de la matrice de la transformation initiale.
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 72 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite