Determinant matriciel

Ash -  
 Alter Ego -
je souhaite faire un programme qui calcul le déterminant
matriciel à l'ordre n sur c++..........mais j'y arrive pas !!!

mon probleme se situe au niveau de c++ !!!! si il y a
quelqu'un qui peut m'aider ce serait sympas.

voici un exemple de programme qui calcul seulement le déterminant a l'ordre inférieure a 10..........mais il y a un probleme au niveau du programme principal!!

si quelqu'un peut m'aider se serait sympas et les nouvelles idées sont les biens venues!!!

merci
ASh

/****liste des fichiers d'entete****/

#include<iostream.h>
#include<iomanip.h>
#include<iso646.h>
#include<fstream.h>
#include<math.h>

/****déclarations globales****/

//sous programme 1
/*Cette fonction nous est utile dans le calcul du determinant, elle supprime dans
la matrice ma les lignes l et c puis enregistre les resultats dans mb*/

void det_aux(float ma[10][10],float mb[10][10],int l,int c)
{
int i,j,d,e=0;

for(i=0;i<10;i++)
{
d=0;
if(i!=l)
{
for(j=0;j<10;j++)
if(j!=c)
{
mb[e][d]=ma[j];
d++;
}
e++;
}
}
}

//sous programme 2
/*Cette fonction teste si un entier est multiple de 2,
cette fonction nous sert dans le calcul du determinant*/

float expo(int n)
{
if(!(n%2)){return (1);}
return (-1);
}

//sous programme 3
/* Cette fonction calcul le determinant d'une matrice de maniere recursive*/

float determinant(float m[10][10],int l)
{
int i;
float m2[10][10],x=0;

if(l==1){return (m[0][0]);}

for(i=0;i<l;i++)
{
det_aux(m,m2,i,0);
x=x+(expo(i)*m[0]*determinant(m2,(l-1)));
}

return (x);
}

//programme principal

void main(void)
{
float mat[10][10],i,j,det;
int ligne;

for(i=0; i<10; i++)
{
for(j=0; j<10; j++)

{
det = determinant(mat[10][10],ligne);
cout<<"det=";
}
}

}

4 réponses

Pitu Messages postés 1460 Statut Contributeur 125
 
Salut Ash.

Je ne suis pas sûr, mais peut-être que ta définition en "float" est un peu juste pour ce calcul (au delà de 10).

a+

 
   (:•Þ  Pitu
0
ash
 
salut pitu
merci pur ton message, mais g pas bien bien compris ce ke tu ma dis a propos du float..un peu juste comment please..
Effectivment le problem il vient du float mais j'arrive pas a le résoudre..t'en pense koi du programme?
Voila...a bientot pitu
ash
0
ash
 
salut pitu
merci pur ton message, mais g pas bien bien compris ce ke tu ma dis a propos du float..un peu juste comment please..
Effectivment le problem il vient du float mais j'arrive pas a le résoudre..t'en pense koi du programme?
Voila...a bientot pitu
ash
0
Pitu Messages postés 1460 Statut Contributeur 125
 
Les calculs effectués doivent dépasser le cadre des nombres pouvant être décrits en float.
Je ne me souviens plus exactement, mais par exemple, la valeur maximale pouvant être stockée dans une variable définie en tant qu'entier est 32768.
Si tu essayes d'y stocker une valeur plus grande, ça plante, ou bien ton résultat est faut ...
Et là, c'est pas avec des entiers que tu travailes, mais avec une variable définie en float. Et pour ce genre de variables, il y a une limite également.
Pour savoir laquelle et avoir plus de précisions, je te renvoie aux bouquins. Là, j'arrive à la limite de mes souvenirs ...
Sinon, pour ce qui est du programme, je n'ai pas pris le temps de le regarder de près, mais je te fais confiance ;o)

 
   (:•Þ  Pitu
0
Alter Ego
 
Le calcul matriciel me facine toujours bien que j'aies terminé mes études depuis fort longtemps.

Maintenant, je prends plaisir à programmer le calcul matriciel non pas à l'aide de logiciels de haute gamme, mais bien à partir de ce qu'il y a de plus basic: QuickBASIC. Récemment, j'ai programmé pour résoudre une matrice avec nombres réels et imaginaires et le déterminant bien sûr.

Pour plus de détails, ce serait sympa de votre part, visiter

http://www3.sympatico.ca/nova.celesta/

et de me communiquer vos impressions.

Merci de votre visite.
0
Alter Ego
 
Je viens de mettre à jour ma page WEB :

http://www3.sympatico.ca/nova.celesta/

J'ai ajouté des images des principales fonctions du programme avec une cooredtion du texte !

merci de votre visite
0
Alter Ego
 
Test
0