Inverse d'une matrice [Résolu]

Signaler
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
16 novembre 2008
-
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
16 novembre 2008
-
bonjour,
  je voudrai faire un programme ki calcul l'inverse d'une matrice (matx[5][5]) en visual C++ 2008, j'arrive pa à faire, si klkun peut m'aider ça sera jentil, j'en ai besoin pour mon stage,
 merci d'avance
A voir également:

10 réponses

Messages postés
41
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
16 novembre 2008

ok, buno,


voila la solution ke jé trouvé( en fait moi j'ai travaillé sur une matrice 5x5)


et je pense ke cette methode est valable pr n'importe kelle matrice carrée).


void mat_inver(
double Mat[5][5],
double matinver[5][5]) {



int
i,j;




for
(i=0;i<5;i++){







for
( j=0;j<5;j++){



matinver[i][j]=0;


} }



for
(i=0;i<5;i++){







for
(

int
j=0;j<5;j++){



matinver[i][i]=1/Mat[i][i];



if
(j!=i)



{


matinver[i][j]=-Mat[i][j]/Mat[i][i];


}



for
(

int
k=0;k<5;k++){




if
(k!=i)



{


matinver[k][i]=Mat[k][i]/Mat[i][i];


}



if
(j!=i &&k!=i)



{


matinver[k][j]=Mat[k][j]-Mat[i][j]*Mat[k][i]/Mat[i][i];


} } }



for
(

int
i=0;i<5;i++)



{



for
(

int
j=0;j<5;j++)



{


Mat[i][j]=matinver[i][j];


}





}


}


}
Messages postés
14849
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
13 novembre 2020
93
Salut,
Qu'est-ce qui te bloque? La formule? La structure de données pour représenter une matrice?
Une petite recherche sur le site te donne la page suivante.

Bon courage,

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
16 novembre 2008

salut;
merci buno; en fait  j comprend pa trop le C++, je connu la formul ki pass pa le calcul de determinant et la transposé du comatrice, mé j sai pa traduire ça ds un programme C++,
et merci.
Messages postés
14849
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
13 novembre 2020
93
Regardes alors le 2nd lien que je t'ai passé.
Essaie d'implémenter quelque chose et n'hésites pas à revenir nous voir

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
16 novembre 2008

j vai essayer, merci
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
16 novembre 2008

bonjour, 
 
je suis tjrs a la recherche de cette matrice inverse;  en fait j'ai fait un programme qui calcul la matrice inverse par la methode de pivot de gauss, ça compile mais je pense qu'il ya un probleme dans les boucles, j'espere bien de recevoir une reponse qui peut me faire avancer,
voila mon programme:
#include

"stdafx.h"#include

#include

<math.h>using

namespace std;
void

inverse_matrice(double mat[5][5],double mat1[5][5],double matI[5][5],double matinver[5][5]){

int i,j,k;

for(i=1;i<=5;i++){
for(j=1;j<=5;j++){
if(i!=j){matI[i][j]=0;}

else{matI[i][j]=1;}matinver[i][j]=matI[i][j];

mat1[i][j]=mat[i][j];}}

for(i=1;i<=5;i++){
for(j=1;j<=5;j++){
if(mat[i][i]==0){cout<<

"impossible d'inverser la matrice par pivot de gauss: on peut pas diviser par zero"<<endl;}

else{mat1[i][j]=mat[i][j]/mat[i][i];matinver[i][j]=matI[i][j]/mat[i][i];}}

mat[i][j]=mat1[i][j];

matI[i][j]=matinver[i][j];

for(k=1;k<=5;k++){
if(k!=i){

for(j=1;j<=5;j++){mat1[k][j]=mat[k][j]-mat[i][j]*mat[k][i];

matI[k][j]=matinver[k][j]-matinver[i][j]*mat[k][i];}}}

mat[i][j]=mat1[i][j];

matinver[i][j]=matI[i][j];}}

int

main(){
double

mat[5][5];double mat1[5][5];double I[5][5];double matinver[5][5];mat[1][1]=3; mat[1][2]=2; mat[1][3]=5; mat[1][4]=1 ; mat[1][5]=7;

mat[2][1]=1; mat[2][2]=4; mat[2][3]=0; mat[2][4]=6 ; mat[2][5]=4;

mat[3][1]=9; mat[3][2]=5; mat[3][3]=8; mat[3][4]=2; mat[3][5]=1;

mat[4][1]=6; mat[4][2]=1; mat[4][3]=3; mat[4][4]=4; mat[4][5]=6;

mat[5][1]=8; mat[5][2]=7; mat[5][3]=10; mat[5][4]=0; mat[5][5]=1;

cout<<mat[1][1]<<

" "<<mat[1][2]<<
" "<<mat[1][3]<<
" "<<mat[1][4]<<
" "<<mat[1][5]<<endl;cout<<mat[2][1]<<

" "<<mat[2][2]<<
" "<<mat[2][3]<<
" "<<mat[2][4]<<
" "<<mat[2][5]<<endl;cout<<mat[3][1]<<

" "<<mat[3][2]<<
" "<<mat[3][3]<<
" "<<mat[3][4]<<
" "<<mat[3][5]<<endl;cout<<mat[4][1]<<

" "<<mat[4][2]<<
" "<<mat[4][3]<<
" "<<mat[4][4]<<
" "<<mat[4][5]<<endl;cout<<mat[5][1]<<

" "<<mat[5][2]<<
" "<<mat[5][3]<<
" "<<mat[5][4]<<
" "<<mat[5][5]<<
"\n"<<endl; 

inverse_matrice( mat, mat1,I, matinver);

cout<<mat1[1][1]<<

" "<<mat1[1][2]<<
" "<<mat1[1][3]<<
" "<<mat1[1][4]<<
" "<<mat1[1][5]<<endl;cout<<mat1[2][1]<<

" "<<mat1[2][2]<<
" "<<mat1[2][3]<<
" "<<mat1[2][4]<<
" "<<mat1[2][5]<<endl;cout<<mat1[3][1]<<

" "<<mat1[3][2]<<
" "<<mat1[3][3]<<
" "<<mat1[3][4]<<
" "<<mat1[3][5]<<endl;cout<<mat1[4][1]<<

" "<<mat1[4][2]<<
" "<<mat1[4][3]<<
" "<<mat1[4][4]<<
" "<<mat1[4][5]<<endl;cout<<mat1[5][1]<<

" "<<mat1[5][2]<<
" "<<mat1[5][3]<<
" "<<mat1[5][4]<<
" "<<mat1[5][5]<<
"\n"<<endl; 

cout<<matinver[1][1]<<

" "<<matinver[1][2]<<
" "<<matinver[1][3]<<
" "<<matinver[1][4]<<
" "<<matinver[1][5]<<endl;cout<<matinver[2][1]<<

" "<<matinver[2][2]<<
" "<<matinver[2][3]<<
" "<<matinver[2][4]<<
" "<<matinver[2][5]<<endl;cout<<matinver[3][1]<<

" "<<matinver[3][2]<<
" "<<matinver[3][3]<<
" "<<matinver[3][4]<<
" "<<matinver[3][5]<<endl;cout<<matinver[4][1]<<

" "<<matinver[4][2]<<
" "<<matinver[4][3]<<
" "<<matinver[4][4]<<
" "<<matinver[4][5]<<endl;cout<<matinver[5][1]<<

" "<<matinver[5][2]<<
" "<<matinver[5][3]<<
" "<<matinver[5][4]<<
" "<<matinver[5][5]<<
"\n"<<endl;
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
16 novembre 2008

c un peu long mé vous pouvez regarder just la partie superieure, "void matrice_inverse" merci encore une foi;
Messages postés
14849
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
13 novembre 2020
93
Je veux bien regarder ton code dès que j'ai un moment...
Par contre, tu pourrais me dire à quoi correspondent les matrices que tu passe à la fonction d'inversion?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
16 novembre 2008

merci buno, j'ai trouvé la solution
Messages postés
14849
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
13 novembre 2020
93
Ok, c'est cool.
Tu peux donc fermer le topic ("Réponse Acceptée") avec, si possible,  la solution à ton problème.

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...