就是本题让我又翻出了半年未动的数学分析讲义,把曲线积分以及不定积分又复习了一遍。
如果已知函数值想求自变量而反函数又难以解出的话,可以利用函数的一些性质,比如单调性,然后二分自变量求解。
如果是单峰函数的话,可以先三分求出极值点,然后转化成两个单调函数。
其他就是纯数学问题了。
然后书上还给出了一个适应性更广的解法,那就是自适应辛普森法,当函数积不出来时,只好用数值积分来计算答案。
关于自适应辛普森法的详解:
http://blog.csdn.net/xl2015190026/article/details/53518077
代码
#include<bits/stdc++.h>
using namespace std;
const double eps=1e-3;
int D,H,B,L;
double w;
double f(double x,double a)
{
return 4*a*(x/2*sqrt(1/a/a/4+x*x)+1/a/a/8*log(x+sqrt(1/a/a/4+x*x)));
}
double len(double h)
{
double a=4*h/w/w;
return f(w/2,a)-f(0,a);
}
int main()
{
int T;
scanf("%d",&T);