Skip to content

Latest commit

 

History

History
59 lines (44 loc) · 1.6 KB

4142.md

File metadata and controls

59 lines (44 loc) · 1.6 KB

二分法 4142: 二分法求函数的零点

题目要求计算函数在指定区间的零点。

题目来源

4142: 二分法求函数的零点

总时间限制: 1000ms 内存限制: 65536kB

描述

有函数:

f(x) = x5 - 15 * x4+ 85 * x3- 225 * x2+ 274 * x - 121

已知 f(1.5) > 0 , f(2.4) < 0 且方程 f(x) = 0 在区间 [1.5,2.4] 有且只有一个根,请用二分法求出该根。

输入

无。

输出

该方程在区间[1.5,2.4]中的根。要求四舍五入到小数点后6位。

样例输入

样例输出

不提供

函数的零点附近左右两侧的点一定是一个大于零一个小于零,通过不断逼近左右两点可以达到零点要求的精度。二分法通过不断取左右两点的中点,看函数值来更新左右两点。

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
	double a = 1.5, b = 2.4, c;
	while (b - a > 1e-7) {
		c = (a + b) / 2;
		if (((((c - 15) * c + 85) * c - 225) * c + 274) * c > 121) {
			a = c;
		}
		else {
			b = c;
		}
	}
	cout << setprecision(6) << fixed << (a + b) / 2 << endl;
	return 0;
}

4142.cpp 代码长度:319B 内存:128kB 时间:1ms 通过率:91% 最小内存:128kB 最短时间:0ms

题目已经给出了函数表达式,当要求精度达到小数点后6位,可以以左右两点相差小于1e-7次作为循环跳出的条件,最后输出使用setprecision和fixed标志。

有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。