2010-09-24 3 views
2

У меня проблема в школе, но я не понимаю, что она на самом деле спрашивает. У любого из вас есть идея, о чем он действительно спрашивает? Мне не нужен код, мне просто нужно это понять.C++ Использование секущего метода для решения функции

Это проблема: Построить компьютерную программу, которая использует метод секущих, чтобы решить эту проблему: F (X) = (1 + х) соз (Sin (х) 3) - 1,4 = 0 Начиная с начальные предположения x = 2.0 и x = 2.1, получить приближение к x такое, что | f (x) | < 0,0000001.

Это мой код из того, что я понимаю, но я думаю, что правильно не понимаю вопрос.

#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; 
} 

ответ

5

Вы должны использовать метод секущая: http://en.wikipedia.org/wiki/Secant_method

Следуйте методу, как описано в статье. Это итеративный метод, очень похожий на метод Netwon. Вам нужно будет сделать функцию для оценки x (n + 1), заданной x (n), и повторить ее, пока ваш запас ошибки не станет меньше указанного.

Кодирующая сторона этого может оказаться довольно простой, если вы знаете, что такое секущий метод. Кроме того, на этой странице есть пример кода. Это должно оказаться довольно полезным. :)