三分算法

求单峰函数的极值点。

推荐使用黄金分割优化的三分 不止可以减少调用次数,进行常数上的优化 还可以避免大跨步的数值改变,减少由于精度导致的问题

typedef long double ld;

const ld eps = 1e-10;
const ld gold = (sqrtl(5) - 1) / 2;

ld f(ld x) {

}

ld find() {
ld l = -1e9, r = 1e9;
while (r - l > eps) {
auto midl = r - (r - l) * gold, midr = l + (r - l) * gold;
if (f(midl) < f(midr)) l = midl;
else r = midr;
}
return l;
}