三分法,一学妹问我什么是三分法,为什么要有三分法

//在单调函数中,我们经常用二分法来快速搜索可行解。在单峰函数中,我们则要用三分法来搜索函数的极值。 一般来说,三分法可以平均分,也可以第一个点分在左右端点的中点,第二个点分在中点和右端点的中点。 

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <cmath>
using namespace std;
double
h,v;
double
f(double a)
{

    double
g=9.8,vx=v*cos(a),vy=v*sin(a);
    return
vx*(vy/g+sqrt((2*h*g+vy*vy)/(g*g)));
}

int
main()
{

    int
T;
    scanf("%d",&T);
    while
(T--)
    {

        scanf("%lf%lf",&h,&v);
        double
l=0,r=90.00;
        while
((r-l)>=1e-10)
        {

           double
ll,rr;
           ll=(l+r)/2;
           rr=(ll+r)/2;
           if
(f(ll)<f(rr))
               l=ll;
           else

               r=rr;
        }
        printf("%.2lf ",f(l));
    }

    return
0;
}

原文地址:https://www.cnblogs.com/ACWQYYY/p/4313801.html