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)
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
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 ma fonction main():
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; }
Comment faire pour que cela marche svp ?
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; };
Merci de votre aide !
Partager