Inverse d'une matrice [Résolu]

Messages postés
41
Date d'inscription
mercredi 27 février 2008
Dernière intervention
16 novembre 2008
- - Dernière réponse : rif59
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Dernière intervention
16 novembre 2008
- 20 mars 2008 à 20:15
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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Dernière intervention
16 novembre 2008
3
Merci
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];


}





}


}


}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de rif59
Messages postés
14297
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 décembre 2018
0
Merci
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...
Commenter la réponse de BunoCS
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Dernière intervention
16 novembre 2008
0
Merci
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.
Commenter la réponse de rif59
Messages postés
14297
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 décembre 2018
0
Merci
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...
Commenter la réponse de BunoCS
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Dernière intervention
16 novembre 2008
0
Merci
j vai essayer, merci
Commenter la réponse de rif59
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Dernière intervention
16 novembre 2008
0
Merci
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;
Commenter la réponse de rif59
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Dernière intervention
16 novembre 2008
0
Merci
c un peu long mé vous pouvez regarder just la partie superieure, "void matrice_inverse" merci encore une foi;
Commenter la réponse de rif59
Messages postés
14297
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 décembre 2018
0
Merci
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...
Commenter la réponse de BunoCS
Messages postés
41
Date d'inscription
mercredi 27 février 2008
Dernière intervention
16 novembre 2008
0
Merci
merci buno, j'ai trouvé la solution
Commenter la réponse de rif59
Messages postés
14297
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
17 décembre 2018
0
Merci
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...
Commenter la réponse de BunoCS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.