Calcul de determinant d'une matrice

Contenu du snippet

Algorithme qui calcul le determinant d'une matrice carrée.

Notation: une matrice A(i,j) de dimension dim*dim s'ecrit :
A[i+j*dim]

La fonction det est la fonction qui renoive la determinant d'une matrice. elle utilise la fonction lmatrice qui calcul le cofacteur de la matrice pour la ligne n et la colone l. la fonction det utilise le principe de recursivité

Source / Exemple :


#include <iostream>
#include <cmath>
using namespace std;

void lmatrice(double mat[],double lmat[], int n, int l);
double det(double mat[], int n);

int main()
{
//exemple d'utilisation pour une matrice 2x2
 int dim=2;
 double *M=new double[dim*dim];
//remplissage de la matrice M
 M[0+0*dim]=2.;
 M[0+1*dim]=4.8;
 M[1+0*dim]=6.2;
 M[1+1*dim]=5.1;
//determinant de la matrice M
 double resultat;
 resultat=det(M,dim);
//affichage du resultat
 cout<<resultat<<endl;
}

void lmatrice(double mat[],double lmat[], int n, int l)
{
 int ld=0;
 int k=n-1;
 for(int i=0;i<n;i++)
 {
  if(i!=l)
  {
   for(int j=1;j<n;j++)
   {
    lmat[ld+(j-1)*k]=mat[i+j*n];
   }
    ld++;
  }
 }
}

double det(double mat[], int n)
{
 double resultat;
 resultat=0.;
 int k=n-1;
 double signe;
 signe=1.;
 double *lmat=new double[k*k];
 if(n==1)
 {
  return mat[0];
 }
 for(int i=0;i<n;i++)
 {
  lmatrice(mat,lmat,n,i);
  resultat=resultat+signe*mat[i]*det(lmat,k);
  signe=-signe;
 }
 return resultat;
 delete(lmat);
}

Conclusion :


// Karim Hasnaoui
// GRAND ACCELERATEUR NATIONAL D'IONS LOURDS,
// Boulevard Henri Becquerel,
// B.P. 55027, 14076 CAEN Cedex, France
// bureau 282
// E-mail: Hasnaoui@ganil.fr
// tel: 0033 (0)2 31 45 49 25

A voir également

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.

Du même auteur (hasnaoui_karim)