辛普森积分
Posted cute-hzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了辛普森积分相关的知识,希望对你有一定的参考价值。
引例
计算积分:[int_{L}^{R} frac{cx+d}{ax+b} dx]
题解
其实可以直接求导然后做,然而太弱根本推不出来.
于是就可以使用自适应辛普森积分。
辛普森(Simpson)公式是牛顿-科特斯公式当n=2时的情形。
[int_{L}^{R} f(x) dxapproxfrac{(R-L)[f(L)+f(R)+4f(mid)]}{6}],其中(mid = frac{L+R}{2})
这样每次求一个区间的积分,先求左右两段积分,如果不满足精度就递归下去,满足就直接返回.
本题代码:
#include <cstdio>
#include <cmath>
const double EPS = 1e-11;
double a, b, c, d, L, R;
double F(double x) {
return (c * x + d) / (a * x + b);
}
double Simpson(double a, double b) {
double c = (a + b) / 2;
return (b - a) * (F(a) + F(b) + 4 * (F(c))) / 6;
}
double integral(double L, double R) {
double mid = (L + R) / 2;
double S = Simpson(L, R), Sl = Simpson(L, mid), Sr = Simpson(mid, R);
if(fabs(Sl + Sr - S) < EPS) return Sl + Sr;
return integral(L, mid) + integral(mid, R);
}
int main() {
scanf("%lf%lf%lf%lf%lf%lf", &a, &b, &c, &d, &L, &R);
printf("%.6f
", integral(L, R));
return 0;
}
练习
HDU 1724 求椭圆部分面积
辛普森还可以骗一些计算几何题的分.
以上是关于辛普森积分的主要内容,如果未能解决你的问题,请参考以下文章