1. 程式人生 > >數學一本通 7.3 函數的凹凸性

數學一本通 7.3 函數的凹凸性

查找 image 部分 fin ima style pre () 技術

眾所周知,單調函數可以用二分查找值

而有的函數是單峰(谷)的,這時就可以用三分求極值。

所謂三分,就是將函數分為三部分,每次舍去一部分

最後縮小到答案區間。

如圖:

技術分享圖片

當lmid>rmid時,[rmid,∞)區間內肯定沒有答案

反之,lmid<rmid時,(-∞,lmid]區間內肯定沒有答案

而兩個相等時,極值肯定在中間,任舍一段即可(僅保留中間段也行)

代碼:

double solve(double left,double right)//三分 
{
    if(right-left<eps) return left;
    
double mid=(left+right)/2; double lans=cal(mid-eps),rans=cal(mid+eps); if(lans>rans) return solve(left,mid); if(lans<rans) return solve(mid,right); return mid; }

cal()是所求函數。

數學一本通 7.3 函數的凹凸性