自适应辛普森公式求积分
来源:互联网 发布:sap logon是什么软件 编辑:程序博客网 时间:2024/04/28 01:23
自适应辛普森公式求积分
假设我们求以下积分:
∫baf(x)dx
比较特殊的情况,就是可以推导出来最后的形式。但是比较一般的情况是,我们只能大致得到一个
因此我们有自适应辛普森公式,他会根据实际情况来自动的调整精度。
它的大致过程就是,给定一个要求达到的精度eps,算法就会根据实际情况递归的划分区间。容易近似的地方少划分,不容易近似的地方多划分几份。
具体来讲,我们在以下情况下直接返回结果,否则递归划分区间:
|S(a,c)+S(c,b)−S(a,b)|<15∗eps
代码如下:
@Frosero#include <cstdio>#include <iostream>#include <cmath>#include <algorithm>using namespace std;double F(double x){ //这里自定义函数 return x * x + x;}double simpson(double a,double b){ //返回区间[a,b]的三点辛普森值 double c = a + (b - a) / 2.0; return (F(a) + 4 * F(c) + F(b)) * (b - a) / 6.0;}double asr(double a,double b,double eps,double A){ //自适应辛普森递归过程 double c = a + (b - a) / 2.0; //A为区间[a,b]的三点辛普森值 double L = simpson(a,c), R = simpson(c,b); if(fabs(L + R - A) <= 15 * eps) return L + R + (L + R - A) / 15.0; return asr(a,c,eps/2.0,L) + asr(c,b,eps/2.0,R);}double asr(double a,double b,double eps){ //自适应辛普森主过程 return asr(a,b,eps,simpson(a,b));}int main(){ cout<<asr(0,1,0.000001)<<endl; //测试 cout<<5.0/6<<endl; //对比 return 0;}
它的证明比较复杂,本着为广大读者减小压力的目标,我就不在这里啰嗦啦! (其实我也不会)
0 0
- 自适应辛普森公式求积分
- 自适应辛普森公式求积分模板
- 辛普森积分(自适应辛普森公式求积分)
- La3485 利用自适应辛普森公式 求积分的和
- hdu 1724 辛普森公式求积分
- hdu 1724数学题 辛普森公式求积分
- LA 3485 辛普森公式求积分
- HDU1724[辛普森公式求积分]Ellipse
- 自适应辛普森(近似求积分)
- 自适应辛普森(近似求积分模板)
- 数值积分 (辛普森公式 辛普森自适应法则) UVA
- 自适应Simpson积分(近似求积分)
- HDU1724-辛普森积分公式法求椭圆面积
- 自适应simpson公式解定积分
- 数值问题专题小结:自适应辛普森算法求定积分
- 自适应辛普森积分
- 自适应辛普森积分算法
- 自适应辛普森积分
- 基于AJAX的长轮询(long-polling)方式实现简单的聊天室程序
- 新型的大型bbs架构(squid+nginx)
- 心态
- android开发中防止刚进入activity时edittext获取焦点,自动弹出软键盘
- 《Java程序设计》第二次作业:MySQL数据库及Java操作MySQL数据库
- 自适应辛普森公式求积分
- CodeForces 450B Jzzhu and Sequences
- 【我就看看不说话】常用函数
- 多线程学习
- 5.3
- 表表111
- Linux中修改ip地址的方法
- X240S 装Win7 Bios 设置
- DuiVision开发教程(6)-控件的唯一标识和控件查找