自适应辛普森法

自适应辛普森法

double a, b, c, d, l, r;
const double eps = 1e-8;
double F(double x) {
//需要积分的公式
return (c * x + d) / (a * x + b);
}
double simpson(double l, double r) {
double mid = (l + r) / 2;
return (F(l) + 4 * F(mid) + F(r)) * (r - l) / 6;
}
double asr(double l, double r, double A) {
double mid = (l + r) / 2;
double L = simpson(l, mid), R = simpson(mid, r);
if (fabs(L + R - A) <= 15 * eps)
return L + R + (L + R - A) / 15.0;
return asr(l, mid, L) + asr(mid, r, R);
}
double asr(double l, double r) {
return asr(l, r, simpson(l, r));
}

本文作者:Ke_scholar

本文链接:https://www.cnblogs.com/Kescholar/p/18444561

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Ke_scholar  阅读(11)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起