【模板】三分法

【模板】三分法

话说我是直接按lyd的书上直接学的,感觉很直观,那些奇奇怪怪的二分求导之类的,黄金比例分割之类的,感觉有点麻烦

能用就可以了,也不算慢

Code:

#include <cstdio>
const double eps=1e-7;
double a[15];
int n;
double f(double x)
{
    double s=0,p=1;
    for(int i=n+1;i;i--)
    {
        s+=a[i]*p;
        p*=x;
    }
    return s;
}
int main()
{
    double l,r;
    scanf("%d%lf%lf",&n,&l,&r);
    for(int i=1;i<=n+1;i++) scanf("%lf",a+i);
    while(l+eps<r)
    {
        double ll=l+(r-l)/3.0,rr=r-(r-l)/3.0;
        if(f(ll)<f(rr)) l=ll;
        else r=rr;
    }
    printf("%.5lf
",l);
    return 0;
}

2018.9.6

原文地址:https://www.cnblogs.com/butterflydew/p/9596233.html