自适应辛普森法
来源:互联网 发布:linux时钟同步设置 编辑:程序博客网 时间:2024/05/19 20:37
算法简介以及模板可以在大白书P166~P170页找到,本篇文章主要帮助理解。
首先上一个资料,我就是看这个弄懂的。
http://wenku.baidu.com/link?url=w3VyU2KW8DXFkEgipi-2hjruxvi-XXMXMEWhb8vnuslIQ-ycsa-ESt0S3sIeHQ5l_DUAq7PZ-MOVkwaW815iPsPfqNXfRgRlCJBajtwJR3u
书上例题的解题报告
http://blog.csdn.net/xl2015190026/article/details/53516642
看大白书P169上的图 2-37
上面有一个公式∫f(x)dx=(Δx/3)*(y0+4*y1+y2)+(Δx/3)*(y2+4*y3+y4)+...+(Δx/3)*(yn-2+4*yn-1+yn)
这就是辛普森公式,其中(Δx/3)*(y0+4*y1+y2)算的是[x0,x2]的曲线下面积,其他同理,全部求和以后就是[a,b]的曲线下面积,也就是函数的定积分。这种方法不需要求出原函数,因此可以用来求积不出来的函数的定积分。
那为什么[x0,x2]的曲线下面积可以近似等于(Δx/3)*(y0+4*y1+y2)呢?
其实不过是将[x0,x2]的曲线用一个过(x0,y0),(x1,y1),(x2,y2)的抛物线近似替代,然后再用最基础的定积分求出此抛物线的定积分,并将之当成近似解罢了。
推导:
设近似替代的抛物线方程为f(x)=ax^2+bx+c。
因为此抛物线过三点(x0,y0),(x1,y1),(x2,y2),所以得到方程组:
y1=ax0^2+bx0+c |
y2=ax1^2+bx1+c=a((x0+x2)/2)^2+b(x0+x2)/2+c | ①
y3=ax2^2+bx2+c |
对抛物线f(x)=ax^2+bx+c进行定积分。
∫f(x)dx=(1/3)ax^3+(1/2)bx^2+cx|
=(1/6)(2ax^3+3bx^2+6cx)|
=(1/6)(2ax2^3+3bx2^2+6cx2)-(1/6)(2ax0^3+3bx0^2+6cx0)
=(1/6)[2a(x2^3-x0^3)+3b(x2^2-x0^2)+6c(x2-x0)]
=(1/6)[2a(x2-x0)(x2^2+x2x0+x0^2)+3b(x2-x0)(x2+x0)+6c(x2-x0)]
=(1/6)(x2-x0)[2a(x2^2+x2x0+x0^2)+3b(x2+x0)+6c]
=(1/6)2Δx(2ax2^2+2ax2x0+2ax0^2+3bx2+3bx0+6c)
=(1/3)Δx{(ax0^2+bx0+c)+4[a((x0+x2)/2)^2+b(x0+x2)/2+c]+(ax2^2+bx2+c)}
将方程组①代入上式,得
∫f(x)dx=(1/3)Δx{(ax0^2+bx0+c)+4[a((x0+x2)/2)^2+b(x0+x2)/2+c]+(ax2^2+bx2+c)}
=(Δx/3)*(y0+4*y1+y2)
推导完毕
下面讲一讲自己对模板的理解:
主要讲两个地方。
一、
if(fabs(L+R-A)<=15*eps) return L+R+(L+R-A)/15;首先要说一下那个15是什么鬼,其实我也不知道,但是能明显感觉到是用来修正误差的。
你看,为什么最后返回的是L+R+(L+R-A)/15而不是L+R也不是L+R+(L+R-A)/1呢?可能就是说明需要修正一下而且除以15修正效果最好吧,具体为什么这么修正,为什么15最好,其实我自己也不知道= =。
其实不修正也能AC。
二、
return asr(a,c,eps/2,L)+asr(c,b,eps/2,R);观察代码后发现每递归一层eps就要除以2。
大白书上说“容易近似的地方少划几份,不容易近似的地方多划几份”。
事实上就算我们不除以2,按这个算法跑下去肯定也能做到“容易近似的地方少划几份,不容易近似的地方多划几份”。
因为只要不够近似,我们就会一直递归下去。而递归的越深,划得就越细。
所以我觉得除以2只是为了再次强化这个要求吧。
其实不除以2也能AC。
- 自适应辛普森法
- HDU 1724 自适应辛普森法
- 数值积分-自适应辛普森法
- 自适应
- 自适应
- 数值积分-(自适应辛普森法)
- 数值积分_自适应辛普森法
- 自适应布局---自适应宽度
- iframe自适应
- 图片大小自适应
- 图片自适应
- 图片大小自适应
- 自适应控制
- 图片尺寸自适应
- iframe 自适应
- 自适应按钮
- 自适应iframe
- 自适应窗口
- Java学习路程之StringBuffer
- SQL GROUP BY 语句
- iOS - 页面之间传值的实现 - 代理
- [问题记录]hdfs删除文件提示rmr: Failed to move to trash
- Android 关于文件存储路径的总结
- 自适应辛普森法
- CUIT 2016 新生训练题第一周 D-Text Reverse
- H5知识 -- 表单篇
- 在windows10上使用docker哪些坑
- 邮件营销之模板设计 | 五分钟搞定,秒变编辑达人!
- MySql连接字符串
- 好压(HaoZip)的命令行模式用法介绍-转载
- NAT与NAT穿透(二)
- SQL 快速参考