辛普森积分学习笔记
16沈阳的阴影还在orz,来学习一下辛普森积分。
参考资料:梯形多步法和辛普森积分
辛普森积分是一种数值积分方法(然后现在只记得教计算方法的是一个小姐姐,并不记得当时学了什么orz
下面放代码:
double f(double x){return sin(x)*x;}//这是被积函数
double simpson(double l,double r){return (r-l)*(f(l)+f(r)+4*f((l+r)/2))/6;}
double di(double l,double r){//越二分以得到更精确的结果
double m=(l+r)/2;
double ans=simpson(l,r);
if(sgn(ans-simpson(l,m)-simpson(m,r))==0)return ans; //在误差之内
return di(l,m)+di(m,r); //不再误差之内就继续将区间缩小
}
切了个练手题,慢慢补充总结。
需要注意的是,simpson对精度要求比较高。。。eps开到1E-10才过。。
所以问题就在于写出积分公式(如果是多重积分要变成累次积分?orz)