辛普森积分

  

  这种积分法很暴力:只要求你实现出函数求值\(f(x)\)。

  

  使用辛普森积分,我们可以求出函数一段区间\([l,r]\)的近似积分。记\(mid=\frac{l+r}2\),有:

\[\int_l^rf(x)\;dx\approx\ simpson(l,r)=\frac{f(l)+4f(mid)+f(r)}6*(r-l)
\]

  

  

  其中1,4,1称作科特斯系数。

  

​  如果

\[simpson(l,r)\approx simpson(l,mid)+simpson(mid,r)
\]

  那么我们认为函数在\([l,r]\)的近似积分已经足够精确,可以直接返回\(simpson(l,r)\)。

  

  否则,我们需要递归计算\([l,mid]\)和\([mid,r]\)的积分,相加并返回。

  

  伪代码如下:

  

double simpson(double l,double r){
double mid=(l+r)*0.5;
return (f(l)+4*f(mid)+f(r))*(r-l)/6;
}
double solve(double l,double r){
double mid=(l+r)*0.5,midl=(l+mid)*0.5,midr=(mid+r)*0.5;
if(fabs(simpson(l,r)-simpson(l,mid)+simpson(mid,r))<EPS)
return simpson(l,r);
return solve(l,mid)+solve(mid+1,r);
}

  

  整体算法的耗时,一在于\(f(x)\)的求值,应实现得尽量够快;二在于\(EPS\)的设置,这决定了程序递归的深度,因为\(EPS\)是程序判断当前计算精度是否足够高的决策标准。\(EPS\)越小,精度越大,但耗时也相应越高。

  

  总体的时间复杂度是非常玄学。辛普森积分在应用到某一些十分平滑的函数上时效率一般非常高,可是不排除有丧心病狂出题人专门卡哦。

【Learning】辛普森积分的更多相关文章

  1. uva 1356 Bridge ( 辛普森积分 )

    uva 1356 Bridge ( 辛普森积分 ) 不要问我辛普森怎么来的,其实我也不知道... #include<stdio.h> #include<math.h> #inc ...

  2. BZOJ 2178: 圆的面积并 [辛普森积分 区间并]

    2178: 圆的面积并 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1740  Solved: 450[Submit][Status][Discus ...

  3. 【自适应辛普森积分】hdu1724 Ellipse

    Ellipse Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  4. BZOJ2178 圆的面积并 计算几何 辛普森积分

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2178.html 题目传送门 - BZOJ2178 题意 给出 $n(n\leq 1000)$ 个圆,求 ...

  5. 【BZOJ2178】圆的面积并(辛普森积分)

    [BZOJ2178]圆的面积并(辛普森积分) 题面 BZOJ 权限题 题解 把\(f(x)\)设为\(x\)和所有圆交的线段的并的和. 然后直接上自适应辛普森积分. 我精度死活一个点过不去,不要在意我 ...

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

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

  7. bzoj 2178 圆的面积并 —— 辛普森积分

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2178 先看到这篇博客:https://www.cnblogs.com/heisenberg- ...

  8. hdu 1724 Ellipse —— 自适应辛普森积分

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1724 函数都给出来了,可以用辛普森积分: 一开始 eps = 1e-8 TLE了,答案只要三位小数,那么 ...

  9. 洛谷 P4525 & P4526 [模板] 自适应辛普森积分

    题目:https://www.luogu.org/problemnew/show/P4525 https://www.luogu.org/problemnew/show/P4526 学习辛普森积分:h ...

随机推荐

  1. 在linux环境下为eclipse配置jdk以及Tomcat服务(附图解详细步骤)

    环境:jdk8,Tomcat7,eclipse 需要先在linux上安装好对应的软件及java环境,如果还没有安装的,可以先去看我之前写的两篇博客:ubuntu/linux中安装Tomcat(附图解详 ...

  2. [Lua] try catch实现

    参考了https://blog.csdn.net/waruqi/article/details/53649634这里的代码,但实际使用时还有些问题,修改后在此记录一下. -- 异常捕获 functio ...

  3. 【Go】累加器的测试问题记录

    关于GoLang学习过程中的一个问题mark,教程上说两个累加器的地址应该是不一样的,但是实际测试出来结果一样 package main import( "fmt" ) func ...

  4. 基于神念TGAM的脑波小车(2)

    将数据处理移植到STM32上,采用串口的DMA接收模式,注意的是DMA_MODE采用Circular,DMA_BufferSize>(8*512+36=4132)(小包8个字节,每秒512个,完 ...

  5. GlusterFS分布式存储集群-2. 使用

    参考文档: Quick Start Guide:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/ Instal ...

  6. EF多个上下文迁移

    步骤: 1. Enable-Migrations 2. add-migration Initial -ConfigurationTypeName ModelOneDbConfig 3. update- ...

  7. 工程能力之C4模型

    概述 刚在InfoQ上看到一篇介绍C4Model的文章,觉得这个模型设计的很赞,很有指导意义,做个简单的记录. Why,为什么需要架构图? ThoughtWorks中国 文章中有几句话我觉得很有道理, ...

  8. 【一】,python简单爬虫实现

    一: 1.获取当前页的课程名称,地址:https://www.ichunqiu.com/courses/webaq 2.选取其中一门课程名称查看源代码: 代码如下: <p class=" ...

  9. Java未赋值变量的默认初始值

    在 Java 程序中,任何变量都必须经初始化后才能被使用.当一个对象被创建时,实例变量在分配内存空间时按程序员指定的初始化值赋值,否则系统将按下列默认值进行初始化: 数据类型 初始值 byte 0 s ...

  10. 作业45//Calculator::3.0

    计算器 github 我的天我到底要写什么 一,2.0及2.6的改动 做了计算部分 加入了判断输入是否合法 合法的定义是算式符合`数字+运算符+数字+运算符+数字`的格式 其中`"-&quo ...