三分

发布时间 2023-10-05 19:23:54作者: VxiaohuanV
double f(double x){
    //something
}

const double eps=1e-8;
double sanfen(double l, double r){
    double mid,midr,ans;
    while (fabs(r-l)>eps) {
        mid=(l+r)/2;
        midr=(mid+r)/2;
        if(f(mid) < f(midr)) l=mid; else r=midr;   //求最大值
    } 
    ans=f(l);
    return ans;
}
double
int SanFen(int l,int r) {//找凸点
    while(l < r-1) {
        int mid  = (l+r)/2;
        int mmid = (mid+r)/2;
        if( f(mid) > f(mmid) )
            r = mmid;
        else
            l = mid;
    }
    return f(l) > f(r) ? l : r;
}
int
const double EPS = 1e-6;//0.000001
while (l + EPS < r) {
    ml = l + (r-l) / 3;
    mr = r - (r-l) / 3;
    if (calc(ml) < calc(mr)) l = ml;
    else r = mr;
}
double

 

用于解决  一元二次函数问题