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

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
psp
Membre Relatif
Messages: 312
Enregistré le: 23 Oct 2007, 15:35

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

par psp » 01 Jan 2013, 21:50

Bonsoir,

Je vous sollicite aujourd'hui pour vous demander si vous avez des "tips" pour trouver plus rapidement l'inverse d'une matrice.

Concrètement j'y arrive, mais je met toujours 3 plombes pour l'inverser...
Si vous avez des "reflexes" permettant d'aller plus vite, merci de les partager !

Merci merci merci !



Joker62
Membre Transcendant
Messages: 5028
Enregistré le: 24 Déc 2006, 20:29

par Joker62 » 01 Jan 2013, 21:57

Bonsoir,

Moi je prends ma calculatrice.

psp
Membre Relatif
Messages: 312
Enregistré le: 23 Oct 2007, 15:35

par psp » 01 Jan 2013, 22:07

Interdit à mon exam :/

zork
Membre Rationnel
Messages: 979
Enregistré le: 06 Nov 2011, 16:22

par zork » 01 Jan 2013, 22:14

avec le déterminant et la comatrice

raph107
Membre Relatif
Messages: 205
Enregistré le: 17 Sep 2005, 09:53

par raph107 » 01 Jan 2013, 22:58

Résoudre le systeme en X, AX = Y s'il est simple à résoudre

adrien69
Membre Irrationnel
Messages: 1899
Enregistré le: 20 Déc 2012, 13:14

par adrien69 » 01 Jan 2013, 23:56

Regarder avant tout si elle n'est pas unitaire. Si elle l'est je sais faire. Sinon, si elle est hermitienne je diagonalise avant (de toute façon ce sera la question d'après si on l'a pas déjà fait). Sinon, si elle est de taille inférieure à 4, formules de Cramer, sinon pivot de Gauss (modulo quelques modifications si je vois des machins qui se simplifient).

Kikoo <3 Bieber
Membre Transcendant
Messages: 3814
Enregistré le: 28 Avr 2012, 10:29

par Kikoo <3 Bieber » 02 Jan 2013, 00:46

Salut,

Question d'un curieux amateur qui vient de commencer les matrices (avant l'heure, avec le programme de TES :zen:) : Pour diagonaliser une matrice, on passe forcément par du pivot de Gauss non ? Parce que moi je trouve que c'est le plus naturel...

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 02 Jan 2013, 00:53

Bonsoir Kikoo,
Moi, je poserais une question idiote : pourquoi inverser une matrice, à quoi ça sert ?

Kikoo <3 Bieber
Membre Transcendant
Messages: 3814
Enregistré le: 28 Avr 2012, 10:29

par Kikoo <3 Bieber » 02 Jan 2013, 01:16

Dlzlogic a écrit:Bonsoir Kikoo,
Moi, je poserais une question idiote : pourquoi inverser une matrice, à quoi ça sert ?

Moi je l'ai fait pour déterminer le nombre de personnes que comptait une population un mois avant l'apparition d'une épidémie (petit clin d'oeil à une personne que je connais [/ce-fut-l'instant-kikoo-envoie-un-clin-d'oeil]), en disposant d'indices sur la répartition des personnes malades, saines ou immunisées en pourcentage pour chaque mois consécutif (lol la phrase trop longue, je rajoute encore quelque mots dans la parenthèse afin de remplir mon quota)

PS : ouais mais non, je suis en train d'apprendre. J'ai regardé vite fait un pdf de cours niveau lycée et c'est pas du tout suffisant pour traiter le sujet, faut que je regarde mon cours niveau maths sup, mais avec les espaces vectoriels et compagnie (que je n'ai pas encore vu), je pense que cela devra attendre.

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

par leon1789 » 02 Jan 2013, 11:49

Kikoo <3 Bieber a écrit:Salut,

Question d'un curieux amateur qui vient de commencer les matrices (avant l'heure, avec le programme de TES :zen:) : Pour diagonaliser une matrice, on passe forcément par du pivot de Gauss non ? Parce que moi je trouve que c'est le plus naturel...

Attention, tu es en train de confondre deux choses qui parlent de matrice diagonale.

Soit M une matrice carrée.

Le pivot de Gauss permet d'écrire où P et Q sont inversibles et D diagonale de même rang que M. En particulier, M et D sont dites "matrices équivalentes". Ceci est toujours possible sur tout corps et c'est assez naturel comme tu dis. Souvent P et Q sont choisies triangulaires (inférieure et supérieure respectivement) sous condition d'inversibilité de certaines sous-matrices de M...

Mais diagonaliser une matrice, c'est écrire où P est inversible (dite "matrice de passage") et D diagonale (ici D est quasi-unique car formée par les valeurs propres de M avec les bonnes multiplicités). En particulier, M et D sont dites "matrices semblables". Cette diagonalisation n'est pas toujours possible. Ceci est moins simple que le pivot de Gauss !

Kikoo <3 Bieber
Membre Transcendant
Messages: 3814
Enregistré le: 28 Avr 2012, 10:29

par Kikoo <3 Bieber » 02 Jan 2013, 12:23

Salut et merci Léon ;)

Je dois avoir ça dans mon livre !

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 02 Jan 2013, 14:05

Kikoo <3 Bieber a écrit:Salut et merci Léon ;)

Je dois avoir ça dans mon livre !

@ Kikoo, si tu veux que je t'explique comment inverser une matrice, dis-le, je peut t'expliquer avec des mots simples. Je sais le faire (depuis hier) mais je sais toujours pas à quoi ça sert, c'est à dire ce que ça représente..

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

par Sylviel » 02 Jan 2013, 14:17

On te l'as déjà dis ce que ça représente Dlzlogic...

Une matrice est un tableau de nombre qui appartient à un anneau. Cela signifie que l'on a défini une addition et une multiplication de matrice. Si M est inversible alors M^-1 (son inverse) est l'unique matrice telle que M*M^-1 = M^-1 * M = I.

Pour l'interprétation il faut comprendre le lien entre matrice et application linéaire. Si on se fixe une base (ei) de l'espace de départ, et une base (fi) de l'espace d'arrivée, alors la matrice représentant une application linéaire u est tel que chaque colonne soit les u(ej). Ainsi tu lis directement que
.

La matrice inverse est la matrice de l'application réciproque dans les bases correspondantes.

En pratique cela signifie quoi ? Et bien si tu as une transformation linéaire qui prends un jeu de données x pour donner un jeu de résultats y. (Par exemple la localisation d'un point comme l'interesection de 3 plans). Si la transformation est inversible ça veut dire que chaque résultat (vectoriel) y correspond à un unique jeu de données. Dans ce cas tu peux écrire ton jeu de donnée sous forme de vecteur noté x, et ta transformation sous forme de matrice A, et tu auras Ax=y.
Maintenant tu veux faire l'inverse, i.e savoir quels sont les données à partir des résultats, alors ce sera
x=A^-1 y.

Pour conclure sur le point de vue numérique : lorsque tu dois résoudre un système linéaire il est plus rapide de le traiter directement plutôt que de calculer l'inverse (puisque calculer l'inverse c'est résoudre n système linéaire). En revanche si tu dois résoudre plein de fois le même système linéaire avec juste le second membre qui change, autant calculer l'inverse. De même on peut vouloir étudier les propriétés de la matrice inverse (valeur propres etc...).
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 02 Jan 2013, 18:01

Bonjour Sylviel,
Tout à fait d'accord.
Après relecture de ce que je dois faire, il semble que le calcul revienne effectivement à résoudre un système linéaire. L'explication qu'on m'a donnée détaille des opérations de base :
Donc. pour la matrice 5x5 créée. on cherche toutes les solutions du produit matriciel de l'inverse de la matrice 5x5 :

85 95 110 0 1
5 3 2 0 1
10 12 22 0 1
21 65 11 0 1
80 90 100 1 1

c'est à dire la matrice :

0.023417926 0.112684878 -0.118564617 -0.017538188 0
-0.005556454 -0.036228077 0.020366928 0.021417603 0
-0.003354077 -0.061868585 0.070476037 -0.005253374 0
-0.944233411 -0.236401843 0.213771923 -0.033136669 1
-0.093712115 0.66899701 0.390770225 0.03394488 0

multipliée par la matrice 5x1 de la première ligne de xxxxxx.xxx (et puis de la seconde. la troisième. etc.) :
10 10 10 1
à laquelle on ajoute à chaque fois la valeur "xxxx" AT de XXXXXX.XXX :

10 10 10 1 .5

Donc je peux faire ce qui est décrit, mais s'il s'agit de résoudre un système assez simple pourquoi se compliquer le vie.
En d'autres termes
J'ai une matrice A, je calcule son inverse A^-1, ça je sais faire.
Ensuite, il semble qu'on rajoute un vecteur après le signe "=", là, il semble bien que la méthode prime par rapport au but à atteindre.
Désolé d'éviter de donner des détails supplémentaires, je suppose que mon correspondant préfère la discrétion.

Concernant la complexité des calculs:
La résolution d'un système linéaire comporte 2 étapes
1- transformation du système en un système triangulaire par le méthode du pivot de Gauss
2- calcul de toutes les inconnues en commençant par la dernière (une division).
Le calcul de l'inversion d'une matrice comporte
1- calcul du déterminant (méthode de Gauss)
2- définition de la transposée
3- calcul de tous les cofacteurs. Ce calcul nécessite le calcul de nxn déterminants de matrices carrées de dimension (n-1).

Donc, ma question sur l'intérêt et/ou l'utilité des matrices inverses reste entière, en tout cas en ce qui me concerne, c'est à dire les applications numériques.

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

par Sylviel » 02 Jan 2013, 19:20

Alors calculer l'inverse d'une matrice via la formule des cofacteurs me paraît être une absurdité numérique. Je ne sais pas comment on calcule l'inverse d'une matrice en pratique, mais au pire il suffit de résoudre n système linéaire (un pour chaque vecteur de la base).

Je t'ai déjà apporté des éléments de réponse sur "pourquoi calculer la matrice inverse plutôt que résoudre un système". Je recommence en prenant l'exemple d'une transformation affine de R^3 (celui que tu as donné). Ton exemple s'écrit synthétiquement :

Y = T + AX, où T est un vecteur de translation, Y le vecteur d'arrivé, et X le vecteur de départ. Imaginons que T=0 (cela ne change pas grand chose), ainsi la transformation (linéaire cette fois) s'écrit
Y=AX. Imaginons que Y soit les mesures que tu lis sur un appareil en fonction d'une position X. A partir de ces mesures tu veux remonter au point X. Si tu veux utiliser l'appareil 10000 fois tu préfères calculer A^-1 et à chaque fois n'avoir qu'à faire une multiplication de matrice, plutôt que de résoudre 10000 système linéaire différents.

Bien sûr on peut vouloir s'intéresser aux propriétés algébriques de l'inverse...
Merci de répondre aux questions posées, ce sont des indications pour vous aider à résoudre vos exercices.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 02 Jan 2013, 19:40

généralement on peut utiliser la LU decomposition
la vie est une fête :)

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 02 Jan 2013, 20:27

Je me demande si on parle bien de la même chose.
Concernant le calcul de l'inverse d'un matrice, c'est une notation que j'ai vu maintes fois, j'ai toujours su ce que ça voulait dire, mais comme je n'en avais pas besoin, j'ai pas insisté.
Comme je devais la calculer (application en cours), j'ai cherché la documentation, et la seule méthode qui parait faire l'unanimité est celle des cofacteurs. Donc c'est celle que j'ai utilisée.
Tu sembles dire qu'une méthode meilleure serait de résoudre un système linéaire, alors que le calcul de l'inverse qu'une matrice sert apparemment, en particulier, pour résoudre un système linéaire.

Concernant la transformation affine (2D ou 3D), il y a deux étapes :
1- en fonction d'un certain nombre d'observations, on détermine les 6 ou 12 paramètres de la transformation (2D ou 3D). Cela revient toujours à résoudre un système linéaire de 6 ou 12 équations.
2- pour chaque point à transformer (des milliers en général) on applique la formule en utilisant les paramètres calculés, une fois pour toutes, à l'étape 1).

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.

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

par leon1789 » 02 Jan 2013, 21:02

Bon, je crois qu'il faut quand même parler de complexité d'algorithmes : quand on programme, il faut avoir quelques idées sur ça...

D'abord, une source sur laquelle on peut lire des choses :
http://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations#Matrix_algebra

On veut calculer l'inverse d'une matrice carrée de taille N x N
On voit que la méthode que tout le monde connait bac+1 (méthode de Gauss, ou décomposition LU si on préfère) est de complexité O(N^3). Calculer un déterminant, c'est pareil en terme de complexité.

Maintenant, utiliser les cofacteurs paraît totalement illusoire : il y a 1+N^2 déterminants à calculer, et chacun d'eux coûtent environ O(N^3) : ça fait au total O(N^5), donc "un peu moins efficace" qu'une méthode par pivot... Je ne pense pas que les cofacteurs fassent l'unanimité chez les programmeurs.

/!\ on pourrait imaginer faire du calcul en parallèle avec N processeurs, là, c'est peut-être différent.

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

par leon1789 » 02 Jan 2013, 21:07

Bon, je crois qu'il faut quand même parler de complexité d'algorithmes : quand on programme, il faut avoir quelques idées sur ça...

D'abord, une source sur laquelle on peut lire des choses :
http://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations#Matrix_algebra

On veut calculer l'inverse d'une matrice carrée de taille N x N
On voit que la méthode que tout le monde connait bac+1 (méthode de Gauss, ou décomposition LU si on préfère) est de complexité O(N^3). Calculer un déterminant, c'est pareil en terme de complexité.

Maintenant, utiliser les cofacteurs paraît totalement illusoire : il y a 1+N^2 déterminants à calculer, et chacun d'eux coûtent environ O(N^3) : ça fait au total O(N^5), donc "un peu moins efficace" qu'une méthode par pivot... Je ne pense pas que les cofacteurs fassent l'unanimité chez les programmeurs.

/!\ on pourrait imaginer faire du calcul en parallèle avec N processeurs, là, c'est peut-être différent.

Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

par leon1789 » 02 Jan 2013, 21:14

Autre possibilité qui me paraît plus complexe que le pivot : l'inversion en blocs (stratégie "diviser pour mieux régner")

http://en.wikipedia.org/wiki/Matrix_inversion#Methods_of_matrix_inversion
paragraphe : Blockwise inversion (complément de Schur)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : stfj et 59 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