C++使用割线方法解决功能

use*_*514 2 c++ math cmath

我有学校问题,但我不明白它究竟是什么问题.你们中的任何人都知道它真正需要什么?我不需要代码,我只需要理解它.

这就是问题:构造一个使用正割方法解决问题的计算机程序:f(x)=(1 + x)cos(sin(x)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;
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*shD 5

您应该使用正割方法:http://en.wikipedia.org/wiki/Secant_method

按照文章中描述的方法.这是一种与Netwon方法非常相似的迭代方法.您需要创建一个函数来评估给定x(n)的x(n + 1)并迭代它,直到您的误差范围小于指定值.

只要您知道割线方法是什么,编码方面可能会相当简单.此外,该页面还有一个代码示例.这应该证明非常有用.:)