【笔记】辛普森算法
核心思想是将被积区间分为若干小段,每段套用二次函数的积分公式进行计算。
具体而言,对于一个二次函数
1 普通辛普森
直接分成若干段来计算。
2 自适应辛普森
对于
具体而言,对于一个区间,如果分成左右两半分别计算,和直接计算整个区间的答案是差不多的,那就不在分下去。
double f (double x) {
}
double simpson (double l, double r) {
return (r-l) * (f(l) + 4*f((l+r)/2) + f(r)) / 6;
}
double calc (double l, double r, double eps, double ans, int step) {
double mid = (l + r) / 2;
double fl = simpson(l, mid), fr = simpson(mid, r);
if (abs(fl + fr - ans) <= 15 * eps && step < 0)
return fl + fr + (fl + fr - ans) / 15;
return calc(l, mid, eps / 2, fl, step - 1) + calc(mid, r, eps / 2, fr, step - 1);
}
calc(l, r, eps, simpson(l, r), 12);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?