弦截法 解高次方程 C语言/C++

弦截法的原理

弦截法的原理是以直代曲即用弦(直线)代替曲线求方程的近似解,也就是利用对应的弦 与 轴的交点横坐标来作为曲线弧 与 轴的交点横坐标 的近似值。

弦截法_百度百科

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

上一篇:一周见闻


下一篇:32k的数数记录