CALCUL DE DETERMINANT D'UNE MATRICE

le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009 - 21 févr. 2006 à 19:12
souidina Messages postés 4 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 17 juillet 2008 - 15 juil. 2008 à 13:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36153-calcul-de-determinant-d-une-matrice

souidina Messages postés 4 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 17 juillet 2008
15 juil. 2008 à 13:57
merci le code a bien marché
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
21 févr. 2006 à 19:14
C'est issu de ma source sur les matrices qui est sur ce site
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
21 févr. 2006 à 19:12
essaye plutot ceci:

double MatriceCarree::det()
{
MatriceCarree a(*this);
double prod = 1.0;
for(int i=0;i<nbrL;i++)
{
int max = i;
for(int j=i+1;j<nbrL;j++)
if(fabs(a.p[j*nbrC+i]) > fabs(a.p[max*nbrC+i]))
max = j;
if(fabs(a.p[max*nbrC+i]) < epsilon)
return 0.0;
if(i != max)
prod *= -1;
for(int k=i;k<nbrC;k++)
swap(a.p[i*nbrC+k],a.p[max*nbrC+k]);
for(int j=i+1;j<nbrL;j++)
{
double coef = a.p[j*nbrC+i]/a.p[i*nbrC+i];
for(int k=nbrC-1;k>=i;k--)
a.p[j*nbrC+k] -= coef*a.p[i*nbrC+k];
}
}
for(int i=0;i<nbrL;i++)
prod *= a.p[i*nbrC+i];
if(fabs(prod) < epsilon)
return 0.0;
else
return prod;
}
Rejoignez-nous