题目让我们求:
∫LRax+bcx+ddx
我记得OJ里TR发过有关自适应辛普森法的帖子,但我没看懂。于是我试着推了一下,就推出了
这样的式子
定义
Fx(x)=ax×c+(ad−a2c×b×ln∣x×a+b∣)
Fy(x)=2bx2×c+bd×x
有
∫LRax+bcx+ddx={Fx(R)−Fx(L),a=0Fy(R)−Fy(L),a=0
代码(极短):
#include <cstdio>
#include <cmath>
#define fx(x) (x * c / a + (d / a - c * b / (a * a)) * log(fabs(x * a + b)))
#define fy(x) (x * x * c / b / 2 + d * x / b)
signed main() {
long double l, r, a, b, c, d;
scanf("%Lf %Lf %Lf %Lf %Lf %Lf", &a, &b, &c, &d, &l, &r);
if (a == 0.0) printf("%.6Lf\n", fy(r) - fy(l));
else printf("%.6Lf", fx(r) - fx(l));
}