一、积分的概念

积分(integral)的几何意义是函数的曲线上 xxx 的一段区间与 x" role="presentation" style="position: relative;">xxx 轴围成的曲边梯形的面积:

xxx 的区间为 [a,b]" role="presentation" style="position: relative;">[a,b][a,b][a,b] ,那么上图阴影面积为:

∫baf(x)dx∫abf(x)dx

\int_a^bf(x)\text{d}x
计算方法一:分割成无穷多个小区间。

∫baf(x)dx=limn→∞∑i=1nb−anf(a+b−ani)∫abf(x)dx=limn→∞∑i=1nb−anf(a+b−ani)

\int_a^bf(x)\text{d}x=\lim_{n\rightarrow\infty}\sum_{i=1}^n\frac{b-a}nf(a+\frac{b-a}ni)
计算方法二:牛顿-莱布尼茨公式。
若 F′(x)=f(x)F′(x)=f(x)F'(x)=f(x) ,那么

∫baf(x)dx=F(b)−F(a)∫abf(x)dx=F(b)−F(a)

\int_a^bf(x)\text{d}x=F(b)-F(a)
如果容易求出 nnn 趋近于无穷大时 f" role="presentation" style="position: relative;">fff 的和,可以使用方法一,如 f(x)=x2f(x)=x2f(x)=x^2。
而这时 f(x)=1xf(x)=1xf(x)=\frac1x 就不适用。
如果容易求得 FFF ,可以使用方法二,如 f(x)=1x" role="presentation" style="position: relative;">f(x)=1xf(x)=1xf(x)=\frac 1x 。
但如果两个特点都不满足,那么两种方法都无法使用。
于是,我们引入了 数值积分
最常用的就是自适应辛普森积分。

二、辛普森公式

基本思想就是把复杂的函数 fff 近似成二次函数。

∫abf(x)dx≈∫ab(Ax2+Bx+C)dx" role="presentation" style="text-align: center; position: relative;">∫baf(x)dx≈∫ba(Ax2+Bx+C)dx∫abf(x)dx≈∫ab(Ax2+Bx+C)dx

\int_a^bf(x)\text{d}x\approx\int_a^b(Ax^2+Bx+C)\text{d}x

=A3(b3−a3)+B2(b2−a2)+C(b−a)=A3(b3−a3)+B2(b2−a2)+C(b−a)

=\frac A3(b^3-a^3)+\frac B2(b^2-a^2)+C(b-a)

=2A(b3−a3)+3B(b2−a2)+6C(b−a)6=2A(b3−a3)+3B(b2−a2)+6C(b−a)6

=\frac{2A(b^3-a^3)+3B(b^2-a^2)+6C(b-a)}6

=2A(b−a)(b2+ab+a2)+3B(b+a)(b−a)+6C(b−a)6=2A(b−a)(b2+ab+a2)+3B(b+a)(b−a)+6C(b−a)6

=\frac{2A(b-a)(b^2+ab+a^2)+3B(b+a)(b-a)+6C(b-a)}6

=(b−a)(2Ab2+2Aab+2Aa2+3Bb+3Ba+6C)6=(b−a)(2Ab2+2Aab+2Aa2+3Bb+3Ba+6C)6

=\frac{(b-a)(2Ab^2+2Aab+2Aa^2+3Bb+3Ba+6C)}6

=(b−a)(Aa2+Ba+C+Ab2+Bb+C+Aa2+2Aab+Ab2+2Bb+2Ba+4C)6=(b−a)(Aa2+Ba+C+Ab2+Bb+C+Aa2+2Aab+Ab2+2Bb+2Ba+4C)6

=\frac{(b-a)(Aa^2+Ba+C+Ab^2+Bb+C+Aa^2+2Aab+Ab^2+2Bb+2Ba+4C)}6

=(b−a)(f(a)+f(b)+A(a+b)2+2B(a+b)+4C)6=(b−a)(f(a)+f(b)+A(a+b)2+2B(a+b)+4C)6

=\frac{(b-a)(f(a)+f(b)+A(a+b)^2+2B(a+b)+4C)}6

=(b−a)(f(a)+f(b)+4(A(a+b2)2+B(a+b2)+C))6=(b−a)(f(a)+f(b)+4(A(a+b2)2+B(a+b2)+C))6

=\frac{(b-a)(f(a)+f(b)+4(A(\frac{a+b}2)^2+B(\frac{a+b}2)+C))}6

=(b−a)(f(a)+f(b)+4f(a+b2))6=(b−a)(f(a)+f(b)+4f(a+b2))6

=\frac{(b-a)(f(a)+f(b)+4f(\frac{a+b}2))}6
我们得到辛普森公式:

∫baf(x)dx≈(b−a)(f(a)+f(b)+4f(a+b2))6∫abf(x)dx≈(b−a)(f(a)+f(b)+4f(a+b2))6

\int_a^bf(x)\text{d}x\approx\frac{(b-a)(f(a)+f(b)+4f(\frac{a+b}2))}6
b−ab−ab-a 的值越小,上式两边越接近。

三、处理精度问题

有了 Simpson 公式,一个自然的想法是把积分区间拆成多个小区间后求和。
但是分成区间的个数和长度因积分区间和精度要求甚至被积函数而异。
换句话说,分的区间数太少不满足精度要求,太多了会 TLE 。
「自适应」就是求积分时能够自动控制切割的区间大小和长度,使精度能满足要求。
具体地: solve(l,r,f)solve(l,r,f)solve(l,r,f) 表示求 ∫rlf(x)dx∫lrf(x)dx\int_l^rf(x)\text{d}x 。
(1)取 mid=l+r2mid=l+r2mid=\frac{l+r}2 。
(2)用 Simpson 公式近似计算 f(x)f(x)f(x) 在区间 [l,mid][l,mid][l,mid] 和区间 [mid,r][mid,r][mid,r] 内的积分,分别为 lslsls 和 rsrsrs ,及 [l,r][l,r][l,r] 的近似积分 sumsumsum 。
(3)如果 ls+rsls+rsls+rs 与 sumsumsum 的误差允许,则返回 sumsumsum 。
(4)否则递归 solve(l,mid)solve(l,mid)solve(l,mid) 和 solve(mid,r)solve(mid,r)solve(mid,r) ,返回这两个递归计算结果的和。

四、代码

很短。

double solve(double L, double R, double ans) {double mid = (L + R) / 2, l = simpson(L, mid), r = simpson(mid, R);if (fabs(l + r - ans) <= eps) return ans;return solve(L, mid, l) + solve(mid, R, r);
}

五、应用

  • 求平面几何图形的面积并
  • 求正态分布概率
  • etc.

[学习笔记]自适应辛普森(Simpson)积分相关推荐

  1. 贝塞尔函数积分用matlab_MATLAB 学习笔记-10微分与积分

    多项式微分 多项式微分求解方法-ployder() 对于多项式: 其微分为: 在matlab中用行向量表示多项式,例如: 多项式 可表示为: p 多项式微分:polyder() 其微分表达式为: &g ...

  2. matlab无穷积分求解_从零开始的matlab学习笔记——(8)积分

    上节说了说求导,这节就顺带着说一说求积分,凑个完整. 不定积分: 定积分的代码和极限求导都差不多: syms x f; f=(3-x^2)^3; ans1=int(f,x) pretty(ans1) ...

  3. 【算法讲10:自适应辛普森法】求平滑曲线积分近似 | 洛谷 P4526 | HDU1724 | QLU Youmu with Master spark

    自适应辛普森法 参考 引入 ⌈ \lceil ⌈辛普森法求积分 ⌋ \rfloor ⌋ 原理 思考 ⌈ \lceil ⌈自适应辛普森法求积分 ⌋ \rfloor ⌋ 原理 优点 缺点 代码 例题 模板 ...

  4. OpenCV for Ios 学习笔记(4)-标记检测1

    本文原始地址:OpenCV for Ios 学习笔记(4)-标记检测1 简单的标记经常是以白色块和黑色块构成的规则图形.因为我们预先知道这些因素,所以我们可以很容易检测标记. 如图: 首先,我们需要找 ...

  5. 「学习笔记」自适应辛普森法

    引例 计算积分: ∫RLcx+dax+bdx∫LRcx+dax+bdx \int_{L}^{R} \frac{cx+d}{ax+b} dx 题解 其实可以直接求导然后做,然而太弱根本推不出来. 于是就 ...

  6. CSU 1806 Toll 自适应simpson积分+最短路

    分析:根据这个题学了一发自适应simpson积分(原来积分还可以这么求),然后就是套模板了 学习自适应simpson积分:http://blog.csdn.net/greatwall1995/arti ...

  7. [BZOJ1502]月下柠檬树(自适应辛普森积分)

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1387  Solved: 739 [Submit][Statu ...

  8. 数值分析——自适应辛普森积分

    数值分析--自适应辛普森积分 自适应辛普森积分法是利用二次函数对被积函数进行插值的一种模拟积分法,常用于估计积分的数值,利用递归自动适应所需精度. 公式推导 基本思想公式: ∫abf(x)dx≈∫ab ...

  9. [NOI2005] 月下柠檬树 (自适应辛普森积分)

    题目 原题链接:点这里 总体思路–>问题转化 先将原本的柠檬树分解成为多个圆台,再单独看圆台的投影 一个圆在地面的投影,是等比例的,而一条竖线的投影长度d=htan⁡αd=\cfrac{h}{\ ...

最新文章

  1. Version 1.3.1_01 of the JVM is not suitable for this product.Version:1.4.1 or greater is required。
  2. 图的数组(邻接矩阵)存储结构
  3. 与姬十三探讨如何42天搞定2500万美金投资,创业秘密都在这里
  4. [蓝桥杯][2013年第四届真题]买不到的数目(动态规划)
  5. mysql出现core dumped_mysql-为什么我遇到分段错误(核心已转储)?
  6. UML部署图和构件图
  7. 02024_自定义异常的练习
  8. 三星Galaxy S22系列发布会准确时间曝光:2月9日正式揭晓
  9. windows下mysql-8.0.11的安装
  10. Oracle Cluster verification utility failed 的解决方法
  11. [试题]Python大赛部分答案
  12. 格而知之8:我所理解的Runtime(3)
  13. 完全免费的在线遥感影像下载器-转载
  14. PS去除图片和PDF中的水印
  15. 15款超实用学习APP安利
  16. github代理地址
  17. 边界路由linux,路由表构成简介(Destination/Gateway/Genmask/Iface)
  18. java程序员生日祝福语_给程序员的一句话祝福语
  19. 微信小程序利用腾讯云IM发送语音 + 图片
  20. 用计算机解决问题时 为什么要用计算思维,在亲历计算机解决问题的全过程中发展计算思维...

热门文章

  1. ALEXA中国网站排名真相调查[内幕调查:出卖Alexa]
  2. 【python】电商批量打标logo,超快速超简单!!!
  3. [学习]BES蓝牙芯片开发
  4. 我们什么时候需要函数隐藏
  5. 【lc3】汇编实现I/O中断
  6. 强化学习常用算法总结
  7. 计算机组成原理随堂作业,2019-华南理工-计算机组成原理-随堂作业
  8. 计算机学院运动会通讯稿,大学运动会通讯稿300字汇总七篇
  9. [msyql]实战:关于回表的一次查询优化实战
  10. android实现一键锁屏