Système de n équations à n inconnues.

sijmab Messages postés 3 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 19 mars 2011 - 15 mars 2011 à 16:41
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 - 21 mars 2011 à 01:01
Bonjour à tous,

J'essaie de faire un programme permettant de résoudre un système de n équations à n inconnues. Pour cela, j'ai utilisé la règle de Cramer. Les déterminants (en récursif) fonctionnent ainsi que la résolution des équation... mais à partir d'une certaine taille (environ 10), le programme plante.

Est-ce que quelqu'un a une idée du problème, car moi je ne suis pas très expérimenté..
Merci

5 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
17 mars 2011 à 01:06
Bonsoir

Avec si peu d'informations, et sans nous montrer une partie de ton code, je ne vois pas comment quelqu'un va pouvoir t'aider...

N.B. Le seul conseil que je puisse te donner et d'executer en pas à pas ton programme pour voir où ça plante.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
sijmab Messages postés 3 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 19 mars 2011
17 mars 2011 à 23:38
Ouais c'est vrai que sans infos ça va pas le faire^^
Voilà ma fonction déterminant. En fait le programme ne plante pas vraiment mais ne fait rien à partir d'une certaine taille..Est-ce que ça peut être du aux appels trop nombreux de la fonction? En tout cas, merci pour le conseil, j'y penserai
Salutations.

double determinant(vector<vector<double> >matrice,int taille)
{
int det(0);
vector<vector<double> >premiere_colonne(taille);
vector<vector<double> >matrice1(taille,vector<double> (taille));

for(int i(0);i<taille;++i)
{
premiere_colonne[i]=matrice[i];
}

//création des cofacteurs

for(int i(0);i<taille;++i)
{
for(int j(0);j<taille-1;++j)
{
for(int k(0);k<taille-1;++k)
{
if(j2)
det+=(pow(-1,i))*premiere_colonne[i][0]*determinant(matrice1,taille-1);
else
det+=(pow(-1,i))*premiere_colonne[i][0]*matrice1[0][0];
}
return det;
}
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
19 mars 2011 à 00:21
Bonsoir

Alors, pour information, si tu regardes en haut de cette page, tu verras que tu as posté ton message dans :
"Accueil > Forum > Delphi > Divers > Aide et documentation > Système de n équations à n inconnues"
Bref, pas où il faut ...

Sinon voici un code, non testé (Je decline donc toutes responsabilités en cas de mauvais fonctionnement ), pour le calcul d'un déterminant en c++. Il n'utilise pas la STL mais il pourra peut être t'aiguiller :

#define TAILLE_MAX 100

int determinant( int matrice[TAILLE_MAX][TAILLE_MAX], int taille )
{
  int i, j, k, l;
  int det = 0;
  int matrice1[TAILLE_MAX][TAILLE_MAX] = {0};

  if (taille == 2)
  { det = matrice[0][0] * matrice[1][1] - matrice[1][0] * matrice[0][1] ; }
  else 
  {
    if ( taille < 0          ) return det ;
    if ( taille > TAILLE_MAX ) return det ;

    for (i = 0 ; i < taille ; i++)
    { for (j = 1 ; j < taille ; j++)
      { l = 0;
        for (k = 0; k < taille; k++)
        { if (k i) continue; matrice1[j-1][l++] matrice[j][k]; }
      }
      det += pow(-1.0, i) * matrice[0][i] * determinant(matrice1, taille-1);
    }
  }
  return det ;
}


Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
sijmab Messages postés 3 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 19 mars 2011
19 mars 2011 à 19:41
Bonsoir, oui c'est vrai que mon post est à la mauvaise place mais je suis nouveau sur ce site et débutant en prog donc je ne savais pas trop ou le mettre .

Sinon merci pour le code, mais j'ai toujours le meme probleme de temps mais je pense que c'est normal vu le nombre d'appel de la fonction pour une matrice 10x10 (environ 2 millions et demi)

bonne soirée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
21 mars 2011 à 01:01
Bonsoir

Ma réponse était uniquement pour t'aider à trouver un éventuel problème dans ton programme.

Si tu veux une méthode plus rapide pour calculer le déterminant, tu peux, par exemple, te tourner vers la décomposition LU.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
Rejoignez-nous