Calculer l'inverse d'une matrice

cs_leFeu Messages postés 22 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 18 février 2009 - 17 févr. 2009 à 14:33
SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011 - 18 févr. 2009 à 09:48
SVP, j'ai bessoin de votre aide.
je dois trouver un programme qui calcul l'inverse d'une matrice carré, je l'ai fait avec la méthode des cofacteurs mais c'est très lent. j'ai trouvé ici qlq codes sources sur la méthodes de gauss jordan, mais aucun programme ne fonctionne!!
en plus je connais pas le raisonement derière cette méthode, donc suis obligé a trouver un code déja ecrit.

SVP, aidez moi

6 réponses

SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
17 févr. 2009 à 17:07
Scilab

Cordialement,
Sébastien.
0
cs_leFeu Messages postés 22 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 18 février 2009
17 févr. 2009 à 18:08
ok, mais moi suis sous windows (j'utilise visual C++), et je pense que cette bibliothèque est destinée a linux.
non?
0
SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
17 févr. 2009 à 21:20
tu dis : "je dois trouver un programme qui calcul l'inverse d'une matrice carré"
Je te donne le nom d'un programme qui permet de calculer l'inverse d'une matrice carré: Scilab.
C'est en aucun cas une librairie, et de plus Scilab fonctionne sous Windows et sous linux.
Tu dis utiliser Visual studio C++ pour programmer...
alors regarde là: http://www.oonumerics.org/oon/
tu trouveras tous ce qu'il te faut... Et bien plus encore .

Cordialement,
Sébastien.
0
cs_leFeu Messages postés 22 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 18 février 2009
17 févr. 2009 à 22:37
Merci infiniment, c'est vraiment le bonheur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_leFeu Messages postés 22 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 18 février 2009
18 févr. 2009 à 00:51
j'ai beau cherché sur le lien que vous m'avez donné. mais malhereusement la seule librairie qui offre la fonctioninalité d'inverse est newmat, mais elle ne tourna pas sur visual C++. Malgré qu'il donne une documentation assez developpée, mais il me génère tjr des erreurs


en contre partie, je trouve ce code qui calcul l'inverse de gauss jordon

Matrix inverse()
             {
                 if(M!=N) throw "Only Square Matrix can have inverse!";
                   Matrix SI(M,2*M);

                   for(int i=0; i<M;i++)
                   {
                         for(int j=0; j<2*M; j++)
                         {
                               if(j<M)
                               {
                                    SI.data[i*2*M+j] = data[i*M+j];
                               }
                               else
                               {
                                    SI.data[i*2*M+j] = 0;
                               }

                             if(j==i+M) SI.data[i*2*M+j] =1.0;
                         }
                   }

                   for(int ii=0; ii<M-1; ii++)
                   {
                        for(int kk=ii+1; kk < M; kk++)
                        {
                              for(int jj=2*M-1; jj>=ii; jj--)
                              {
                                    SI.data[kk*2*M+jj] -= SI.data[ii*2*M+jj] *
                                                  (SI.data[kk*2*M+ii]/SI.dat<wbr>a[ii*2*M+i<wbr>i]);
                              }
                        }
                   }      
         
                   //------------------------<wbr>----------<wbr>---

                 for(int iii=M-1; iii>0; iii--)
                   {
                        for(int kkk=iii-1; kkk >=0; kkk--)
                        {
                              for(int jjj=2*M-1; jjj>=iii; jjj--)
                              {
                                    SI.data[kkk*2*M+jjj] -= SI.data[iii*2*M+jjj] *
                                                  (SI.data[kkk*2*M+iii]/SI.d<wbr>ata[iii*2*<wbr>M+iii]);
                              }
                        }
                   }      

                   for(int iiii=0; iiii<M; iiii++)
                   {
                        for(int jjjj=2*M-1; jjjj >=0; jjjj--)
                        {
                              SI.data[iiii*2*M+jjjj] =SI.data[iiii*2*M+jjjj]/SI<wbr>.data[iiii<wbr>*2*M+iiii]<wbr>;                     
                        }
                   }      

                   Matrix I(M,M);
                   for(int s = 0; s<M; s++)
                         for(int r=0; r<M; r++)
                         {
                               I.data[s*M+r] = SI.data[s*2*M+r+M];
                         }
                   return I;
                   //------------------------<wbr>---------
             }

ce programme tourne, mais il génère pas tjr une solution correcte!
y a t il qlq qui comprend la méthode de gauss et qui peu m'aider?</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
0
SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
18 févr. 2009 à 09:48
Comprendre la méthode...
Rgarde du côté de Blitz++ la je pense que tu as toutes les billes...

Cordialement,
Sébastien.
0