[笔记] 辛普森积分

辛普森积分

建议对微积分有一些了解QAQ

求定积分近似值:

  • 矩形法
  • 梯形法
  • 抛物线法,又称辛普森法

抛物线法原理是将曲线 \(y=f(x)\) 上的两个弧 \(\widehat{A_{i-1}A_i}\)\(\widehat{A_iA_{i+1}}\) 用 过\(A_{i-1},A_i,A_{i+1}\) 的抛物线 \(y=ax^2+bx+c\) 代替。

辛普森公式 \(\int_a^bf(x)dx\approx\frac{(b-a)(f(a)+f(b)+4f(\frac{a+b}{2}))}{6}\)

\(\int_a^bf(x)dx\)
\(\approx\int_a^bAx^2+Bx+C\)
\(=\frac{A}{3}(b^3-a^3)+\frac{B}{2}(b^2-a^2)+C(a-b)\)
\(=\frac{(b-a)}{6}(2A(b^2+ab+a^2)+3B(b+a)+6C)\)
\(=\frac{(b-a)}{6}(Aa^2+Ba+C+Ab^2+Bb+C+4A(\frac{a+b}{2})^2+4B(\frac{a+b}{2})+4C)\)
\(=\frac{(b-a)}{6}(f(a)+f(b)+4f(\frac{a+b}{2}))\)

然后就得到了 辛普森公式 \(\int_a^bf(x)dx\approx\frac{(b-a)(f(a)+f(b)+4f(\frac{a+b}{2}))}{6}\)

但是如果我们直接套式子,or 控制区间长度进行分治,精度会有问题。所以有了 \(\downarrow\)

自适应辛普森法

想一想,发现如果我们单纯的向下分治,在曲线上十分平坦的部分就会浪费时间,但是在曲线变化陡峭的部分又无法保证精度。

自适应辛普森法的思路:如果在当前区间计算积分时,继续分治与不继续分治的计算结果差别不大,那就没必要继续了;否则就继续分治。

inline double f(double x) {}
inline double simpson(double l,double r) 
	{return (f(l)+4*f((l+r)/2)+f(r))*(r-l)/6;}
inline double integral(double l,double r,double ans) {
	register double md=(l+r)/2;
	register double LL=simpson(l,md),RR=simpson(md,r);
	if(fabs(LL+RR-ans)<=15*eps) return LL+RR-(LL+RR-ans)/15;
	return integral(l,md,LL)+integral(md,r,RR);
}

integral(l,r,simpson(l,r));

模板(雾我只会模板

P4525 【模板】自适应辛普森法1

P4526 【模板】自适应辛普森法2


2019.12.23

posted @ 2020-01-23 11:26  LuitaryiJack  阅读(1013)  评论(0编辑  收藏  举报