辛普森积分学习笔记

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才过。。

hdu1724题目链接

hdu1724解题报告

所以问题就在于写出积分公式(如果是多重积分要变成累次积分?orz)