IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

système d'equation c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut système d'equation c++
    Bonjour,
    Je suis débutant en c++ et je cherche à résoudre un système d'équation en utilisant la méthode de Gauss décrite ici: http://fr.wikiversity.org/wiki/Syst%...Pivot_de_Gauss
    J'ai pensé à une structure du genre une list qui pointe sur une liste qui elle même pointe sur des doubles(coefficients)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class gauss
    {
          public :
                     gauss();
                      resoudre();
     
         private:
    list<list*<double>>systeme;
     
    };



    Qu'en pensez vous? et si quelqu'un peux me donner quelques idées sur l'algorithme de la résolution de ce système

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par défaut
    Bonjour,
    Première chose qui me saute aux yeux est le fait que tu n'as pas d'accesseurs pour entrer les informations de ta variable "systeme".
    Ensuite, je pense qu'il serait préférable que tu es d'autres objets tels que Ligne qui contiendrait la ligne d'équation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Ligne
    {
    private:
       double* _coefficients;
       double _egalite;
     
    public:
       Ligne(int nbInconnues, double egalite, double coefficient, ...); //les '...' permettent de ne pas limiter le nombre de coefficients.
       ~Ligne();
       double* coefficients() const;
       double egalite() const;
       int nbCoefficients() const;
    };
    Ta classe Gauss deviendrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Gauss
    {
    private:
       list<Ligne*> _systeme;
       Resultat _resultat; //Classe contenant autant de double que d'inconnues à trouver
     
    public:
       Gauss();
       ~Gauss();
     
      void ajoutLigne(const Ligne& ligne); //Ajoute un ligne du système à la liste du système
      const Resultat& resoudre(); //Résolution de ton système
    };
    Tu l'utiliserais de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int nbInconnues = 3;
    Ligne ligne1(nbInconnues, 5, 1, -1, 2); //x - y + 2z = 5
    Ligne ligne2(nbInconnues, 10, 3, 2, 1); //3x + 2y + 1z = 10
    Ligne ligne3(nbInconnues, -10, 2, -3, -2); //2x - 3y - 2z = -10
    Gauss gauss;
    gauss.ajoutLigne(ligne1);
    gauss.ajoutLigne(ligne2);
    gauss.ajoutLigne(ligne3);
    Resulat resultat = gauss.resoudre();
    cout << resultat << endl;
    Pour ce qui est de l'algo, le lien que tu as fourni le décrit plutôt bien je trouve (l'encadré jaune).

    Bon courage!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Citation Envoyé par darkman19320 Voir le message
    Bonjour,
    Première chose qui me saute aux yeux est le fait que tu n'as pas d'accesseurs pour entrer les informations de ta variable "systeme".
    Ensuite, je pense qu'il serait préférable que tu es d'autres objets tels que Ligne qui contiendrait la ligne d'équation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Ligne
    {
    private:
       double* _coefficients;
       double _egalite;
     
    public:
       Ligne(int nbInconnues, double egalite, double coefficient, ...); //les '...' permettent de ne pas limiter le nombre de coefficients.
       ~Ligne();
       double* coefficients() const;
       double egalite() const;
       int nbCoefficients() const;
    };
    Ta classe Gauss deviendrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Gauss
    {
    private:
       list<Ligne*> _systeme;
       Resultat _resultat; //Classe contenant autant de double que d'inconnues à trouver
     
    public:
       Gauss();
       ~Gauss();
     
      void ajoutLigne(const Ligne& ligne); //Ajoute un ligne du système à la liste du système
      const Resultat& resoudre(); //Résolution de ton système
    };
    Tu l'utiliserais de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int nbInconnues = 3;
    Ligne ligne1(nbInconnues, 5, 1, -1, 2); //x - y + 2z = 5
    Ligne ligne2(nbInconnues, 10, 3, 2, 1); //3x + 2y + 1z = 10
    Ligne ligne3(nbInconnues, -10, 2, -3, -2); //2x - 3y - 2z = -10
    Gauss gauss;
    gauss.ajoutLigne(ligne1);
    gauss.ajoutLigne(ligne2);
    gauss.ajoutLigne(ligne3);
    Resulat resultat = gauss.resoudre();
    cout << resultat << endl;
    Pour ce qui est de l'algo, le lien que tu as fourni le décrit plutôt bien je trouve (l'encadré jaune).

    Bon courage!
    Merci beaucoup pour ton aide, mais au fait le prof il veut absolument qu'on le fait avec la structure que j'ai faite dans mon premier message
    une liste qui pointe sur des listes qui pointent sur les doubles

    (liste 2 2 3 5)
    list (liste 2 5 12 10)
    (liste 4 1 −2 2)

  4. #4
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonsoir,

    dans ton premier message tu écris que c'est toi qui as eu l'idée (très mauvaise au passage) d'utiliser des listes de listes... Peut-on avoir l'énoncé exact de ton enseignant?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonsoir,

    dans ton premier message tu écris que c'est toi qui as eu l'idée (très mauvaise au passage) d'utiliser des listes de listes... Peut-on avoir l'énoncé exact de ton enseignant?
    Oé je sais pas pourquoi j'ai dis ça au début, mais non c'est le prof qui nous a demandé de faire une liste de listes

  6. #6
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    d'accord, mais quelle est ta question?

Discussions similaires

  1. Système d'Equations Différentielles Ordinaires
    Par mathewman dans le forum MATLAB
    Réponses: 4
    Dernier message: 12/12/2014, 00h34
  2. Systéme d'equation avec maple
    Par soltania dans le forum Maple
    Réponses: 1
    Dernier message: 11/03/2014, 11h49
  3. Résolution de système d'equations differentielles RK4 avec scilab
    Par by.hugo82 dans le forum Mathématiques
    Réponses: 2
    Dernier message: 05/07/2013, 15h56
  4. Système d'equations nécéssitant de la symbolique ?
    Par Zaltymbunk dans le forum MATLAB
    Réponses: 4
    Dernier message: 02/03/2009, 19h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo