2010-09-24 17 views
2

J'ai un problème d'école mais je ne comprends pas ce qu'il demande réellement. L'un d'entre vous a-t-il une idée de ce que cela demande vraiment? Je n'ai pas besoin de code, j'ai juste besoin de le comprendre.C++ Utiliser la méthode sécante pour résoudre la fonction

Tel est le problème: construire un programme d'ordinateur qui utilise la méthode de la sécante pour résoudre le problème: f (x) = (1 + x) cos (sin (x) 3) - 1,4 = 0 partir de les conjectures initiales de x = 2.0 et x = 2.1, obtiennent une approximation de x telle que | f (x) | < 0,0000001.

Ceci est mon code d'après ce que je comprends, mais je pense que je ne comprends pas la question correctement.

#include <iostream> 
#include <cmath> 

double secant(double x); 

using namespace std; 

int main() 
{ 
    double x = 2.0; 
    double r = 0.0; 
    int counter = 0; 

    while(r < 0 && counter <= 40) 
    { 
     r =secant(x); 
     cout << "x: " << x << ", f(x): " << r << endl; 
     counter++; 
     x += 0.1; 
    } 



    return 0; 
} 

double secant(double x) 
{ 
    double r; 
    r = (1+x) * cos(pow(sin(x), 3.0)) - 1.4; 
    return r; 
} 

Répondre

5

Vous êtes censé utiliser la sécante Méthode: http://en.wikipedia.org/wiki/Secant_method

Suivez la méthode décrite dans l'article. C'est une méthode itérative comme la méthode de Netwon. Vous devrez faire une fonction pour évaluer x (n + 1) donné x (n) et l'itérer jusqu'à ce que votre marge d'erreur soit inférieure à celle spécifiée. Le côté codage de ceci peut s'avérer assez simple tant que vous savez ce qu'est la méthode sécante. En outre, cette page a un exemple de code. Cela devrait s'avérer très utile. :)