begin process at 2012 05 27 14:02:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CALCUL DE DETERMINANT D'UNE MATRICE

CALCUL DE DETERMINANT D'UNE MATRICE


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :determinant, matrice, algebre, lineaire Niveau :Débutant Date de création :20/02/2006 Date de mise à jour :20/02/2006 17:21:05 Vu :51 064

Auteur : hasnaoui_karim

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

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

  • #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);
  • }
#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


 Historique

20 février 2006 17:21:06 :
modification du titre

 Sources du même auteur

ALGORITHME DE GAUSS-JORDAN

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture CLASS MATRICE C++ par elkasimi2007
Source avec Zip Source avec une capture POLYNOME CARACTERISTIQUE par JCDjcd
ALGORITHME DE GAUSS-JORDAN par hasnaoui_karim

Commentaires et avis

Commentaire de le_duche le 21/02/2006 19:12:43

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

Commentaire de le_duche le 21/02/2006 19:14:24

C'est issu de ma source sur les matrices qui est sur ce site

Commentaire de souidina le 15/07/2008 13:57:15

merci le code a bien marché

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème pour dériver une classe [ par arc59 ] J'ai créé une classe Matrice comportant des fonctions get_ele, set_ele (toutes les 2 sont "virtual") et la redéfinition de l'opérateur +.Dans ma class fichier.h [ par bidules ] Bonjour,j'aimerais savoir s'il est possible de mettre des structures dans un fichier d'entete.Car j'ai fais l'essai mais lors de la compilation pour c PB de matrice [ par limax84 ] J'ai un probleme d'allocation dynamique de memoire pour une matrice.pour un tableau, je procede comme ceci:int * t;t = new int [30];mais pour une matr matrice carréé [ par justeroland ] j'ai besoin de l'aide au sujet de l'exercice suivant: une matrice carré est dite balancée si les sommes des elements de ses quatre triangles sont égal Besoin d'aide en C - Fonction [ par bugs2600 ] Voici mon programme quelqu'un pourrait-il m'aider je dois faire une fonction et je ne vois pas comment la faire le non de ma fonction doit etre PRODMA une matrice de taille quelconque [ par anaisa ] salut tt le monde saurez vous m'aidez à résoudre un petit probleme: je dois programmé la somme, produit de matrices de taille quelconque en langage C Coord 2D to 3D [ par bat67000 ] Comment optenir d'un point 2D sur l'app les coordonnees du point 3D associé avec la matrice de projection ?(je pige pas bien comment fonctionne la mat Matrice constante. [ par nsoualem ] j'ai crée une classe matrice avec un constructeurdu type:matrice(int nbligne,int nbcolonne)...elle marche a merveille!!!Lors de la création d'un code, inverse de matrice dynamique [ par anaisa ] Aidez nous please c pr programmer en langage Votre texte ICIC l inverse de la matrice dynamique merci bcp !!!!!! matrice calcul [ par altay ] L'analyste programmeur a 3 dimensionmercredi je passe un oral de math pendant lequel je doit presenter un programme de calcul matriciel et je n'ai eu


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales