弦截法的原理
弦截法的原理是以直代曲即用弦(直线)代替曲线求方程的近似解,也就是利用对应的弦 与 轴的交点横坐标来作为曲线弧 与 轴的交点横坐标 的近似值。
C++语言代码
代码改编自:
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;
}