三分

在区间内,先单调递增再单调递减(或先单调递减再单调递增)。

 1 double Trisection(double dLeft, double dRight, ...)
 2 {
 3     double dMid = dLeft, dMidMid = dRight;
 4 
 5     while (dMidMid - dMid > 1e-6)
 6     {
 7         dMid = (dLeft + dRight) / 2;
 8         dMidMid = (dMid + dRight) / 2;
 9         if (Calc(dMid, ...) > Calc(dMidMid, ...))
10             dRight = dMidMid;
11         else
12             dLeft = dMid;
13     }
14 
15     return dMid;
16 }

对于单调区间怎用二分


/**************************************************************************
                  原文来自博客园——Submarinex的博客: www.cnblogs.com/submarinex/               
  *************************************************************************/

原文地址:https://www.cnblogs.com/submarinex/p/2596534.html