#define inf (1e6)
#define EPS (1e-8)
double Calc(double a)
{
……
}
double Solve()
{
double Left, Right;
double mid, midmid;
double mid_area, midmid_area;
Left = -inf; Right = inf;
while (Left + EPS < Right)
{
mid = (Left + Right) / 2;
midmid = (mid + Right) / 2;
double mid_area = Calc(mid);
double midmid_area = Calc(midmid);
// 假设求解最小极值.最大极值改为(mid_area >= midmid_area)
if (mid_area <= midmid_area) Right = midmid;
else Left = mid;
}
return Left;
}