自适应积分求法
https://www.acwing.com/solution/content/44410/
https://www.luogu.com.cn/blog/xcxcli/P4526
一,自适应普辛森积分
- 解决一类积分问题,接受一个原函数和误差
- 使用二次函数进行拟合
- 递归处理左右区间并做和,判断误差是否在可接受范围之内
- 若是在范围之内直接合并,其余的递归左右区间
double f(double x)
{
.......
}
double simpson (double l,double r)
{
double mid = l +r;
return (f(l)+f(r)+4*f(mid/2))/6*(r-l);
}
double asr(double l,double r,double s)
{
double mid = (l+r) /2;
double ls = simpson(l,mid);
double rs = simpson(mid,r);
if(fabs(ls+rs-s)<eps) return ls+rs;
return asr(l,mid,ls)+asr(mid,r,rs);
}
int main()
{
asr(l,r,simpson(l,r));
}