我有学校问题,但我不明白它究竟是什么问题。你们中的任何人都知道它真正需要什么?我不需要代码,我只需要理解它。
这是问题所在: 构建一个使用Secant方法解决问题的计算机程序: 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;
}
答案 0 :(得分:5)
您应该使用正割方法:http://en.wikipedia.org/wiki/Secant_method
按照文章中描述的方法进行操作。这是一种与Netwon方法非常相似的迭代方法。您需要创建一个函数来评估给定x(n)的x(n + 1)并迭代它,直到误差范围小于指定值。
只要您知道割线方法是什么,编码方面可能会相当简单。此外,该页面还有一个代码示例。这应该证明非常有用。 :)