弦截法的原理是以直代曲即用弦(直线)代替曲线求方程的近似解,也就是利用对应的弦 与 轴的交点横坐标来作为曲线弧 与 轴的交点横坐标 的近似值。
弦截法_百度百科
代码改编自:
c数值分析C++实现用弦截法求f(x)= 0的根_陌意随影的博客-CSDN博客
#include<iostream> #include<cmath> using namespace std; //x :获取自变量 x,y对应的函数值 //x0 :开始迭代求根的初始值 //e :精确度 double fun1(double x); double fun2(double x0,double x1, double e); int main() { double answer = fun2(1.5, 2.0, 1e-8); cout << "x^3-x-1的近似根为:" << answer << endl; return 0; } double fun1(double x) { return x*x*x - x - 1.0; } double fun2(double x0,double x1, double e) { while (true) { //获取x1的迭代值 double x2 = x1 - (x1 - x0)*fun1(x1)/(fun1(x1)- fun1(x0)); //获取x1-x0的绝对值 double tol = abs(x2 - x1); //获取x1对应的函数的绝对值 double funtionValue = abs(fun1(x2)); //判断是否满足条件的近似解 if (tol < e || funtionValue < e) { return x2; } //重新赋值迭代 x0 = x1; x1 = x2; } return 0; }