三分法模板
阿新 • • 發佈:2019-02-15
double solve(double MIN,double MAX) { double Left, Right; double mid, midmid; double mid_value, midmid_value; Left = MIN; Right = MAX; while (Left +eps < Right) { mid = (Left + Right) / 2; midmid = (mid + Right) / 2; mid_value = Calc(mid); midmid_value = Calc(midmid); ///求最大值改成>= 最小值改成<= if (mid_value >= midmid_value) Right = midmid; else Left = mid; } return Left; }
三分法可以求解有在區間內有單峰極值的函式,Calc是要進行三分法的函式,MIN和MAX是區間的左界和右界,也就是範圍了。