题目要求计算函数在指定区间的零点。
总时间限制: 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。