对于二分查找答案函数的代码解释
首先,没有必要管函数大致图像的走向
剩下的就好说了,如果说f(l) * f(mid) > 0, 说明答案靠右,
此时更新l 成mid 就好了,否则答案靠左, 更新r 成mid
对于精度的定义,此二分模板,在要求精度上再高两个精度比较好
#include <iostream>
// 头文件调用没得说
using namespace std;
double a, b, c, d;
// 定义四个浮点型变量
const double N = 0.0001;
// 定义一个精度
// 直接写出来这个函数
double f(double x){
return a*x*x*x + b*x*x + c*x + d;
}
// 二分查找答案的函数
void find(double l, double r){
while (r - l > N){
double mid = (l + r) / 2;
if (f(l) * f(mid) > 0) l = mid;
else r = mid;
}
printf("%.2lf ", r);
return;
}
int main(){
// 存入四个变量没得说
cin >> a >> b >> c >> d;
// 数据范围-100 到 100,数据范围较小,直接遍历
for (double i = -100, mark = 0; i <= 100 && mark != 3; i ++)
if (f(i) == 0) printf("%.2lf ", i);
else if (f(i) * f(i + 1) < 0) find(i, i + 1);
return 0;
}