积分
参考资料
辛普森积分法
辛普森法用一段二次抛物线拟合被积函数,得到上面的近似式。自适应辛普森 递归地把区间二分:当左右两半的辛普森值之和与整段足够接近时停止,否则继续细分,从而在保证精度的同时控制计算量。下面的 f 为被积函数,调用 asr(l,r,eps,simpson(l,r)) 即得 上的积分。
double simpson(double l,double r)
{
double mid=(l+r)/2;
return (r-l)*(f(l)+4*f(mid)+f(r))/6;
}
double asr(double l,double r,double eps,double s)
{
double mid=(l+r)/2;
double sl=simpson(l,mid),sr=simpson(mid,r);
if(fabs(sl+sr-s)<=15*eps)return sl+sr+(sl+sr-s)/15;
return asr(l,mid,eps/2,sl)+asr(mid,r,eps/2,sr);
}