用处
函数
double search(double l, double r) {
while (fabs(l - r) >= EXP) {
double midl = (l + r) / 2.0;
double midr = (midl + r) / 2.0;
if (function(midl) > function(midr)) r = midr;
else l = midl;
}
return (l + r) / 2.0;
}
代码演示
#include <stdio.h>
#include <math.h>
#define EXP 1e-6
double function(double x) {
return -(5.504 * x * x + 32.10 * x + 1.0);
}
double search(double l, double r) {
while (fabs(l - r) >= EXP) {
double midl = (l + r) / 2.0;
double midr = (midl + r) / 2.0;
if (function(midl) > function(midr)) r = midr;
else l = midl;
}
return (l + r) / 2.0;
}
int main() {
printf("%lf\n", search(-20, 100));
return 0;
}