Inverse d'une matrice [Résolu]

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

10 réponses

Répondre au sujet
rif59 41 Messages postés mercredi 27 février 2008Date d'inscription 16 novembre 2008 Dernière intervention - 20 mars 2008 à 20:15
+3
Utile
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];


}





}


}


}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de rif59
BunoCS 13764 Messages postés lundi 11 juillet 2005Date d'inscription 20 avril 2018 Dernière intervention - 13 mars 2008 à 14:21
0
Utile
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
rif59 41 Messages postés mercredi 27 février 2008Date d'inscription 16 novembre 2008 Dernière intervention - 13 mars 2008 à 18:42
0
Utile
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
BunoCS 13764 Messages postés lundi 11 juillet 2005Date d'inscription 20 avril 2018 Dernière intervention - 13 mars 2008 à 18:55
0
Utile
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
rif59 41 Messages postés mercredi 27 février 2008Date d'inscription 16 novembre 2008 Dernière intervention - 13 mars 2008 à 18:57
0
Utile
j vai essayer, merci
Commenter la réponse de rif59
rif59 41 Messages postés mercredi 27 février 2008Date d'inscription 16 novembre 2008 Dernière intervention - 18 mars 2008 à 16:36
0
Utile
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
rif59 41 Messages postés mercredi 27 février 2008Date d'inscription 16 novembre 2008 Dernière intervention - 18 mars 2008 à 16:40
0
Utile
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
BunoCS 13764 Messages postés lundi 11 juillet 2005Date d'inscription 20 avril 2018 Dernière intervention - 20 mars 2008 à 16:06
0
Utile
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
rif59 41 Messages postés mercredi 27 février 2008Date d'inscription 16 novembre 2008 Dernière intervention - 20 mars 2008 à 16:09
0
Utile
merci buno, j'ai trouvé la solution
Commenter la réponse de rif59
BunoCS 13764 Messages postés lundi 11 juillet 2005Date d'inscription 20 avril 2018 Dernière intervention - 20 mars 2008 à 16:35
0
Utile
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.