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 :

Algorithme de Newton


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Algorithme de Newton
    Bonsoir a tous

    Voila j'ai un petit problème pour code ma classe Newton dérivée de Algorithme qui code
    l’algorithme de Newton pour la recherche d’un zéro d’une fonction (réelle) i.e.
    xn+1 = xn −f(xn)/f'(xn) (ex: f(x)=(a*x+b)^3 , f'(x)=3*a*(a*x+b)^2)

    voici ma fonction Algorithme (j'espere que il y a pas d'erreur )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    struct FctR { // Qui permet de manipuler les fonctions réelles
           virtual double operator()(double) const = 0;
           virtual double derivee(double) const = 0;
    };
     
     
    class AlgorithmeR { //Permet une implantation des algorithme numérique i.e : x(n+1)=g(n,x(n))
        public:
               AlgorithmeR(double valeur_init, FctR & f):x_n(valeur_init),n_iter(0),fct(f){};
               AlgorithmeR & operator++(){
                           calcul_iter();
                           ++n_iter;
                           return (*this);
               }
     
       private:
        virtual void calcul_iter() = 0;
        double x_n;
        int n_iter;
        FctR & fct;
    };
     
    class Cubique : public FctR { //Qui code les fonctions : f(x)=(a*x+b)^3
        public:
        Cubique(int a,int b):a(a),b(b){};
        ~Cubique(){};
        int operator()(int x)const{return (a*x+b)*(a*x+b)*(a*x+b)};
        int derivee(int x)const{return 3*a*(a*x+b)*(a*x+b)}
        private:
        int a,b;
    }
    Voici mon algorithme de Newton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class Newton : public AlgorithmeR { 
        public:
        Newton(int x0,Cubique &c):debut(x0),cube(c){};
     
        ostream& operator<<(ostream& out, Newton const& d );
     
        Newton& operator++(int x){
        double x_N;
        x_N=x-(F(x)/derivee(x));
        } 
     
     
        private:
        int debut;
        Cubique &cube;
    };
     
     
    ostream& operator<<(ostream& out, Newton const& d )
        {
        out << d.cube <<endl;
        return out;
        }
    voici ma fonction main():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(){
    Cubique F(-3.5, 5.5); // ie a = -3.5 et b = 5.5
    Newton N(5.1, F); // ie x_0 = 5.1
    for (int i = 0; i <= 30; ++i) {
        cout << N << endl ;
        ++N;
        }
        return 0;
    };
    Comment faire pour que cela marche svp ?
    Merci de votre aide !

  2. #2
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 394
    Points : 591
    Points
    591
    Par défaut
    Salut,
    J'ai juste survolé ton code, j'ai l'impression que des double sont devenue des int

    1 exemple mais il y en a plein d'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Cubique : public FctR { //Qui code les fonctions : f(x)=(a*x+b)^3
        public:
        Cubique(int a,int b):a(a),b(b){};
        ~Cubique(){};
        int operator()(int x)const{return (a*x+b)*(a*x+b)*(a*x+b);} <== ICI par exemple
        int derivee(int x)const{return 3*a*(a*x+b)*(a*x+b);}
        private:
        int a,b;
    }
    Et les ';' !!!

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci je refais mes class :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    #include <time.h>
    using namespace std;
     
     
     
    struct FctR { // Qui permet de manipuler les fonctions réelles
           virtual double operator()(double) const = 0;
           virtual double derivee(double) const = 0;
    };
     
     
    class AlgorithmeR { //Permet une implantation des algorithme numérique i.e : x(n+1)=g(n,x(n))
        public:
               AlgorithmeR(double valeur_init, FctR & f):x_n(valeur_init),n_iter(0),fct(f){};
               AlgorithmeR & operator++(){
                           calcul_iter();
                           ++n_iter;
                           return (*this);
               }
     
       private:
        virtual void calcul_iter() = 0;
        double x_n;
        int n_iter;
        FctR & fct;
    };
     
    class Cubique : public FctR { //Qui code les fonctions : f(x)=(a*x+b)^3
        public:
        Cubique(double a,double b):a(a),b(b){};
        ~Cubique(){};
        double operator()(double x) const { return (a*x+b)* (a*x+b)* (a*x+b); };
        double derivee(double x) const{return 3*a*(a*x+b)*(a*x+b);};
        private:
        double a,b;
    };
     
    class Newton : public AlgorithmeR {
        public:
        Newton(double x0,Cubique & c):debut(x0),cube(c){};
     
        friend ostream& operator<<(ostream&,const Newton &);
     
        Newton& operator++(int x){
        double x_N;
        Cubique F;
        x_N=x-(F(x)/derivee(x));
        }
     
     
        private:
        double debut;
        Cubique & cube;
    };
     
     
    ostream& operator<<(ostream& out,const Newton &d ){
        return out << d.cube <<endl;
        };

    J'ai des gros erreur dans ma fonction Newton ...
    J'arrive pas a jongle avec 3 class

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Le debugger est ton ami

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Je sais pas comment remplir la class Newton, c'est mon problème

Discussions similaires

  1. Algorithme de Newton-Raphson
    Par Invité dans le forum R
    Réponses: 0
    Dernier message: 05/02/2014, 19h41
  2. Algorithme Gauss Newton
    Par Robert Sojic dans le forum Mathématiques
    Réponses: 0
    Dernier message: 09/08/2009, 14h34
  3. Réponses: 2
    Dernier message: 24/05/2008, 22h54

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