Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1771 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Inverse d'une matrice

n°234046
farib
Posté le 24-10-2002 à 18:22:49  profilanswer
 

Reprise du message précédent :

Toucouch a écrit a écrit :

 
Oui, mais pour une matrice plus grande?




 
ce sotn des cours de math qu'il faut chercher

mood
Publicité
Posté le 24-10-2002 à 18:22:49  profilanswer
 

n°234053
Pitounet
Posté le 24-10-2002 à 18:37:03  profilanswer
 

Toucouch a écrit a écrit :

 
Oui, mais pour une matrice plus grande?




 
 
Tu serais pas du genre à chercher la petite bete ???

n°234091
darkoli
Le Petit Dinosaure Bleu
Posté le 24-10-2002 à 20:25:22  profilanswer
 

Pitounet a écrit a écrit :

 
 
 
Tu serais pas du genre à chercher la petite bete ???




Bon tu me file le numéro de toucouch ?
Par MP ou mail !!!


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
n°234271
Toucouch
Posté le 25-10-2002 à 08:27:02  profilanswer
 

farib a écrit a écrit :

 
ce sotn des cours de math qu'il faut chercher




Disons que ça ne m'empêche pas de dormir, hein! C'était juste au cas où quelqu'un avait l'info en tête...

n°234272
Toucouch
Posté le 25-10-2002 à 08:28:19  profilanswer
 

DarkOli a écrit a écrit :

 
Bon tu me file le numéro de Toucouch ?
Par MP ou mail !!!




Ouais, j'aimerais mieux que ça ne soit pas diffusé en public sur le forum... :D

n°234275
Toucouch
Posté le 25-10-2002 à 08:36:28  profilanswer
 

Bon, c'est ce qu'il me semblait (le mec qui fait genre qui savait mais qui vérifiait quand-même pour être sûr :D ), on peut développer suivant une colonne j:
http://c.caignaert.free.fr/chapitre1/img121.gif

n°234276
darkoli
Le Petit Dinosaure Bleu
Posté le 25-10-2002 à 08:39:11  profilanswer
 

Toucouch a écrit a écrit :

Bon, c'est ce qu'il me semblait (le mec qui fait genre qui savait mais qui vérifiait quand-même pour être sûr :D ), on peut développer suivant une colonne j:
http://c.caignaert.free.fr/chapitre1/img121.gif




Ben c'est ce que j'ai du faire dans mon code je crois :crazy:
 
Toucouch : tu veux pas m'envoyer ton tel à mon adresse mail ? (darkoli@free.fr) ?


Message édité par darkoli le 25-10-2002 à 08:39:58

---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
n°234277
Toucouch
Posté le 25-10-2002 à 08:41:55  profilanswer
 

DarkOli a écrit a écrit :

 
Ben c'est ce que j'ai du faire dans mon code je crois :crazy:
 
Toucouch : tu veux pas m'envoyer ton tel à mon adresse mail ? (darkoli@free.fr) ?




Si señor, no problemo...

n°234288
Toucouch
Posté le 25-10-2002 à 09:22:04  profilanswer
 

DarkOli a écrit a écrit :

 
Toucouch : tu veux pas m'envoyer ton tel à mon adresse mail ?




Ca y est? Reçu?

n°234318
darkoli
Le Petit Dinosaure Bleu
Posté le 25-10-2002 à 10:40:56  profilanswer
 

Toucouch a écrit a écrit :

 
Ca y est? Reçu?




Oui, j'ai renvoyé un autre quizz pour confirmation ...


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
mood
Publicité
Posté le 25-10-2002 à 10:40:56  profilanswer
 

n°234323
Pitounet
Posté le 25-10-2002 à 10:49:16  profilanswer
 

ben oui, je me rappelais du coup du développement suivant une ligne ou une colonne.  
D'ailleurs, ça marche avec n'importe quelle ligne ou colonne, et avec n'importe quelle taille de matrice, le coup du développement (matrice carrée, qd même, hein !).
 
Toucouch : t'as plus yahoo ???


Message édité par Pitounet le 25-10-2002 à 10:49:42
n°234333
Toucouch
Posté le 25-10-2002 à 10:59:15  profilanswer
 

DarkOli a écrit a écrit :

 
Oui, j'ai renvoyé un autre quizz pour confirmation ...




1 & 2 Ok. Pour le reste, le script perl que j'ai fais craque du slip à partir de 1477... Mais je vais trouver, t'inquiète...

n°234339
Toucouch
Posté le 25-10-2002 à 11:02:16  profilanswer
 

Pitounet a écrit a écrit :

ben oui, je me rappelais du coup du développement suivant une ligne ou une colonne.  
D'ailleurs, ça marche avec n'importe quelle ligne ou colonne, et avec n'importe quelle taille de matrice, le coup du développement (matrice carrée, qd même, hein !).
 
Toucouch : t'as plus yahoo ???




En fait, je bosse sur Mac et mon boss et pas trop branché nouvelle technologies qui permettent aux employés de discuter pendant les heures de bureau... Comme il est limite gestapiste, j'aime mieux les solutions plus "discrètes"... :D
 
Maintenant on peut toujours utiliser les MP...

n°234341
Pitounet
Posté le 25-10-2002 à 11:04:45  profilanswer
 

Bon, je voudrais pas que tu te fasse virer, alors on oublie yahoo :)

n°234386
Toucouch
Posté le 25-10-2002 à 11:48:07  profilanswer
 

Pitounet a écrit a écrit :

Bon, je voudrais pas que tu te fasse virer, alors on oublie yahoo :)




Si tu n'as rien contre les discussions décousues, on peu toujours utiliser les MP, hein! (Au lieu de polluer outrageusement ce topic... :D)

n°234431
darkoli
Le Petit Dinosaure Bleu
Posté le 25-10-2002 à 13:39:38  profilanswer
 

Toucouch a écrit a écrit :

 
1 & 2 Ok. Pour le reste, le script perl que j'ai fais craque du slip à partir de 1477... Mais je vais trouver, t'inquiète...




Ben à 1477 il y a 309 chiffres ...
Et a 5656 il y a 1182 chiffres ...
 
indice : en cherchant bien il y a un sujet la dessus ou se trouve le code C que j'ai utilisé et aussi accessoirement F(10000) donbt voici un extrait : "3364476487643178326662161200510754331030214846068006390656476997468008144216666236815559551"


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
n°249219
souk
Tourist
Posté le 20-11-2002 à 03:38:11  profilanswer
 

a mon avis le calcul du determinant n'est pas nécessaire, mieux vaut faire un bon vieux pivot de Gauss, deux possibilités : soit en cours de route tu es amené à diviser par 0 auquel cas ton systeme n'est pas libre et la matrice n'est pas inversible, soit tu vas au bout du calcul et tu as ton inverse.


---------------
L'inventeur de la cédille est un certain monsieur Groçon .
n°249246
LeGreg
Posté le 20-11-2002 à 09:18:30  profilanswer
 

Pour une matrice surdeterminee il n'y a pas de solution en general.
 
Pour une matrice sous-determinee il y a une infinite de solution.
 
Certains systemes surdetermines permettent de trouver une solution approchee qui minimise l'erreur par rapport a un systeme "ideal" et parfaitement determine.
Cette solution approchee depend evidemment d'un jeu de contrainte et peut etre cherchee par recursion (minimisation d'une erreur quadratique dans l'espace de depart ou celui d'arrivee).
Afin d'initier la recursion et de ne pas passer trop de temps en partant d'une solution eloignee, on peut l'alimenter
par le produit du point d'arrivee par la pseudo inverse de la matrice surdeterminee.  
Des pseudo inverses il en existe une infinite,
mais on peut definir simplement celle-la:
pseudo inverse de la matrice : (t(A).A)^-1.t(A)
On est garanti que le terme t(A)A est inversible.
 
LeGreg


Message édité par LeGreg le 20-11-2002 à 09:19:16
n°254763
Musaran
Cerveaulté
Posté le 27-11-2002 à 02:19:35  profilanswer
 

bobricard a affiché a écrit :

(des images 2/4 couleurs compressées en jpeg)



Quelqu'un aurait-il fait une thèse sur l'utilisation obsessionelle et déraisonnée d'algorithme de compression d'images inadéquat ?
 
C'est que j'aimerais bien comprendre la raison profonde de ce phénomène qui m'échappe un peu je dois dire...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°1121886
El Dje
Posté le 16-06-2005 à 13:50:24  profilanswer
 

Voila la code corrige de darkoli (inversion d'une matrice 4X4 uniquement).
 
C'est une fonction qui minimise l'utilisation de la memoire! Neanmoins, elle ne minimise pas les erreurs d'arrondi et de bruit matematique... :non: )
 
La matrice que vous injectez en argument vous est rendu inversee.
Notez ici que la matrice est une 4X4 REELLE (mais comme dans le code initial ou elle etait donnee sous forme de vecteur)
Cela facilite les manipuliation utlerieure (produit matriciel et invesion :sol: )
 

Code :
  1. void InvMatrixFunc(double Matrix[4][4])
  2. {
  3.     double t[6]={0,0,0,0,0,0};
  4.     double CoffactMatrix [4][4];
  5.     double td;
  6.     // calcul des cofacteurs de la ligne 1
  7.    
  8.     t[0]=Matrix[2][2]*Matrix[3][3] - Matrix[3][2]*Matrix[2][3];
  9.     t[1]=Matrix[2][1]*Matrix[3][3] - Matrix[3][1]*Matrix[2][3];
  10.     t[2]=Matrix[2][1]*Matrix[3][2] - Matrix[3][1]*Matrix[2][2];
  11.     t[3]=Matrix[2][0]*Matrix[3][3] - Matrix[3][0]*Matrix[2][3];
  12.     t[4]=Matrix[2][0]*Matrix[3][2] - Matrix[3][0]*Matrix[2][2];
  13.     t[5]=Matrix[2][0]*Matrix[3][1] - Matrix[3][0]*Matrix[2][1];
  14.     CoffactMatrix[0][0]=Matrix[1][1]*t[0] - Matrix[1][2]*t[1] + Matrix[1][3]*t[2];
  15.     CoffactMatrix[0][1]=Matrix[1][0]*t[0] - Matrix[1][2]*t[3] + Matrix[1][3]*t[4];
  16.     CoffactMatrix[0][2]=Matrix[1][0]*t[1] - Matrix[1][1]*t[3] + Matrix[1][3]*t[5];
  17.     CoffactMatrix[0][3]=Matrix[1][0]*t[2] - Matrix[1][1]*t[4] + Matrix[1][2]*t[5];
  18.     // calcul du determinant
  19.     td=Matrix[0][0]*CoffactMatrix[0][0] - Matrix[0][1]*CoffactMatrix[0][1] + Matrix[0][2]*CoffactMatrix[0][2] - Matrix[0][3]*CoffactMatrix[0][3];
  20.     // Form1->Edit1->Text=FloatToStr(td);
  21.     // test du determiant : si non nul on continue
  22.     if(td==0)
  23.     {
  24. cout<<"\ndeterminant null!!!"<<endl<<endl;
  25. Matrix[0][0]=1;
  26. Matrix[0][1]=0;
  27. Matrix[0][2]=0;
  28. Matrix[0][3]=0;
  29. Matrix[1][0]=0;
  30. Matrix[1][1]=1;
  31. Matrix[1][2]=0;
  32. Matrix[1][3]=0;
  33. Matrix[2][0]=0;
  34. Matrix[2][1]=0;
  35. Matrix[2][2]=1;
  36. Matrix[2][3]=0;
  37. Matrix[3][0]=0;
  38. Matrix[3][1]=0;
  39. Matrix[3][2]=0;
  40. Matrix[3][3]=1;
  41. return;
  42.     }
  43.     // calcul des cofacteurs de la ligne 2
  44.     CoffactMatrix[1][0]=Matrix[0][1]*t[0] - Matrix[0][2]*t[1] + Matrix[0][3]*t[2];
  45.     CoffactMatrix[1][1]=Matrix[0][0]*t[0] - Matrix[0][2]*t[3] + Matrix[0][3]*t[4];
  46.     CoffactMatrix[1][2]=Matrix[0][0]*t[1] - Matrix[0][1]*t[3] + Matrix[0][3]*t[5];
  47.     CoffactMatrix[1][3]=Matrix[0][0]*t[2] - Matrix[0][1]*t[4] + Matrix[0][2]*t[5];
  48.     // calcul des cofacteurs de la ligne 3
  49.     t[0]=Matrix[0][2]*Matrix[1][3] - Matrix[1][2]*Matrix[0][3];
  50.     t[1]=Matrix[0][1]*Matrix[1][3] - Matrix[1][1]*Matrix[0][3];
  51.     t[2]=Matrix[0][1]*Matrix[1][2] - Matrix[1][1]*Matrix[0][2];
  52.     t[3]=Matrix[0][0]*Matrix[1][3] - Matrix[1][0]*Matrix[0][3];
  53.     t[4]=Matrix[0][0]*Matrix[1][2] - Matrix[1][0]*Matrix[0][2];
  54.     t[5]=Matrix[0][0]*Matrix[1][1] - Matrix[1][0]*Matrix[0][1];
  55.     CoffactMatrix[2][0] =Matrix[3][1]*t[0] - Matrix[3][2]*t[1] + Matrix[3][3]*t[2];
  56.     CoffactMatrix[2][1] =Matrix[3][0]*t[0] - Matrix[3][2]*t[3] + Matrix[3][3]*t[4];
  57.     CoffactMatrix[2][2]=Matrix[3][0]*t[1] - Matrix[3][1]*t[3] + Matrix[3][3]*t[5];
  58.     CoffactMatrix[2][3]=Matrix[3][0]*t[2] - Matrix[3][1]*t[4] + Matrix[3][2]*t[5];
  59.     // calcul des cofacteurs de la ligne 4
  60.     CoffactMatrix[3][0]=Matrix[2][1]*t[0] - Matrix[2][2]*t[1] + Matrix[2][3]*t[2];
  61.     CoffactMatrix[3][1]=Matrix[2][0]*t[0] - Matrix[2][2]*t[3] + Matrix[2][3]*t[4];
  62.     CoffactMatrix[3][2]=Matrix[2][0]*t[1] - Matrix[2][1]*t[3] + Matrix[2][3]*t[5];
  63.     CoffactMatrix[3][3]=Matrix[2][0]*t[2] - Matrix[2][1]*t[4] + Matrix[2][2]*t[5];
  64.     // inversion
  65.     td=1/td;
  66.     Matrix[0][0]=CoffactMatrix[0][0]*td;
  67.     Matrix[0][1]=-CoffactMatrix[1][0]*td;
  68.     Matrix[0][2]=CoffactMatrix[2][0]*td;
  69.     Matrix[0][3]=-CoffactMatrix[3][0]*td;
  70.     Matrix[1][0]=-CoffactMatrix[0][1]*td;
  71.     Matrix[1][1]=CoffactMatrix[1][1]*td;
  72.     Matrix[1][2]=-CoffactMatrix[2][1]*td;
  73.     Matrix[1][3]=CoffactMatrix[3][1]*td;
  74.     Matrix[2][0]=CoffactMatrix[0][2]*td;
  75.     Matrix[2][1]=-CoffactMatrix[1][2]*td;
  76.     Matrix[2][2]=CoffactMatrix[2][2]*td;
  77.     Matrix[2][3]=-CoffactMatrix[3][2]*td;
  78.     Matrix[3][0]=-CoffactMatrix[0][3]*td;
  79.     Matrix[3][1]=CoffactMatrix[1][3]*td;
  80.     Matrix[3][2]=-CoffactMatrix[2][3]*td;
  81.     Matrix[3][3]=CoffactMatrix[3][3]*td;
  82.     return;
  83. }

n°1122628
LorDjidane
GT & PSN ID : Lordji
Posté le 17-06-2005 à 00:23:33  profilanswer
 

Bah pour les matrices > 3*3, suffit de développer par rapport à une ligne ou une colonne spécifique (celle qui arrange), en prenant soin d'alterner par un facteur 1 ou -1 les différents calculs menés ensuite.
 
(s'inspirer de la formule du det 3*3 postée page 1)
 
Pour le 3*3, c'est bien "Diagonales descendantes - Diagonales montantes" (règle de Sarrus je crois).

n°1122751
El Dje
Posté le 17-06-2005 à 09:48:48  profilanswer
 

LorDjidane a écrit :

Bah pour les matrices > 3*3, suffit de développer par rapport à une ligne ou une colonne spécifique (celle qui arrange), en prenant soin d'alterner par un facteur 1 ou -1 les différents calculs menés ensuite.
 
(s'inspirer de la formule du det 3*3 postée page 1)
 
Pour le 3*3, c'est bien "Diagonales descendantes - Diagonales montantes" (règle de Sarrus je crois).


 
Oui, c'est une possibilite...
 
Mais plus les matrices sont grandes, et plus les erreurs introduites au niveau des arrondis est importante!.
D'autres algorithmes permettent de limiter ces effets (methode du pivot, etc...)
Sinon, mon algorithme est bel et bien tire d'un algorithme qui est recursif a la base!.
L'avantage, c'est qu'il est tres econome en memoire tres rapide...

n°1122768
LorDjidane
GT & PSN ID : Lordji
Posté le 17-06-2005 à 09:55:27  profilanswer
 

Oui t'as l'air de t'être plus penché sur la question de moi donc bon =]
 
Je me limite à ce que j'ai appris en maths en prépa, sans savoir l'appliquer en informatique, désolé :x

n°1122934
El Dje
Posté le 17-06-2005 à 11:20:37  profilanswer
 

hihihi
 
pas de problemes ;)
 
Mais je cherchais un algo rapide pour de premiers tests...
si j'ai le temps de le programmer, je posterai la version "plus evoluee" ulterieurement ;)
 

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Mettre une image de type BMP ou PCX dans une matrice?? (Newbies)utilisation de var et boucle for en sens inverse
[C++Builder] Matrice de structuresDeterminant d'une matrice[n][n]???
[C++] Comment accèder à la fonction inverse de cosinus[c] probleme initialisation matrice
[C] Matrice Dynamique URGENT svp ...[MPEG2] PTS inversé ???
[openGL] Que contient une matrice de visualisation-modelisation ?Comment charger et recuperer une image sous forme de matrice ?
Plus de sujets relatifs à : Inverse d'une matrice


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR