假设要求的函数是二次函数,三分必须符合极值点的情况
double f(double x) {
// 定义需要求解的函数
return x * x;
}
double ternary_search(double l, double r) {
double eps = 1e-8; // 精度控制
while (r - l > eps) {
double m1 = l + (r - l) / 3;
double m2 = r - (r - l) / 3;
if (f(m1) < f(m2)) {
l = m1;
} else {
r = m2;
}
}
return (l + r) / 2;
}