博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三分法查找(学习)
阅读量:627 次
发布时间:2019-03-14

本文共 500 字,大约阅读时间需要 1 分钟。

我们了解下从二分衍生出来的三分法

摘自hihocoder(略改):
当函数是凸形函数时,二分法就无法适用,这时就需要用到三分法。
从三分法的名字中我们可以猜到,三分法是对于需要逼近的区间做三等分:
这里写图片描述

如图这种情况先减后增,适用于求答案的极小值,若lm比rm低(即lm对应的函数值 < rm函数值)则极小点(图中最低点)肯定在[ left, rm ] ,反之在[ lm, right ],剩下就跟二分一样根据大小关系调整区间就行了。

double solve(double l,double r){    while(fabs(r-l) > esp)    {        double lmid = l + (r-l)/3,rmid = r - (r-l)/3;        if(val(lmid) >= val(rmid))  //求极大值        /*if(val(lmid) <= val(rmid))    //求极小值 */            r = rmid;        else            l = lmid;    }    return val(l);}
你可能感兴趣的文章