CALCUL DE DETERMINANT D'UNE MATRICE

Signaler
Messages postés
159
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
26 février 2009
-
Messages postés
4
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
17 juillet 2008
-
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

Messages postés
4
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
17 juillet 2008

merci le code a bien marché
Messages postés
159
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
26 février 2009

C'est issu de ma source sur les matrices qui est sur ce site
Messages postés
159
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
26 février 2009

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;
}