问题标签 [numerical-integration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - odeint <-> interp1d 相互作用中可能存在的错误?
作为 MATLAB 的转换者,我对 python 和 scipy 比较陌生。我正在对 scipy.integrate 中的 odeint 函数进行快速测试,并遇到了这个潜在的错误。考虑以下代码段:
我制作了一个图表来说明两种结果的差异,请单击此处。
至少对我来说,你如何看待这种毫无根据的结果差异?我在 Python 2.6.6 之上使用 NumPy 版本 1.5.0 和 SciPy 版本 0.8.0
python - 寻找用于在镶嵌域上进行数值积分的 Python 包
我想知道是否有人知道基于 numpy/scipy 的 python 包可以在曲面细分域(在我的特定情况下,一个由 voronoi 单元限制的二维域)上对复杂的数值函数进行数值积分?过去,我使用了 matlab 文件交换中的几个包,但如果可能的话,我想留在我当前的 python 工作流程中。matlab例程是
http://www.mathworks.com/matlabcentral/fileexchange/9435-n-dimensional-simplex-quadrature
对于正交和网格生成,使用:
http://www.mathworks.com/matlabcentral/fileexchange/25555-mesh2d-automatic-mesh-generation
任何关于网格生成以及对该网格进行数值积分的建议都将不胜感激。
numerical-methods - 在由离散点包围的区域上,函数与给定点集(有限和离散)处已知值的数值积分?
令 D 为由一系列点 {x_i,y_i} (1<=i<=N) 界定的区域。(该区域不必是凸的,并且这些点应该沿着边界曲线。)
令 f 是在 D 上定义的函数,但我们只知道它在给定点集(有限和离散)上的值,例如 {x'_i,y'_i,f(x'_i,y'_i)} (1<= i<=N')。(给定的数据集不需要在 D 中“密集”。)
如何进行 f 对 D 的数值积分?
这是我的想法:
1)首先我们应该通过这些点系列之间的线段来近似 D 的边界。
2)然后我们应该对给定的数据集做一些插值。然而,二维插值并不总是可行的。然后我就卡住了。
你能帮忙吗?谢谢你。
python - 在 Cython 的 cdef 语句中使用 scipy.integrate.quad?
我正在尝试通过将其转换为 Cython 来加速我的 Python。它使用函数 scipy.integrate.quad,它需要一个可调用的 Python 作为其参数之一。有什么方法可以在 Cython 的 cdef 语句中定义和传递函数,以便我可以使用它?
谢谢。
python - Python中的数值积分与向量化函数的自适应求积
我正在寻找一个超级数字求积函数。它应该具有以下三个属性:
- 自适应 - 它自动调整采样点的密度以适应被积函数。这是绝对必要的,因为我的被积函数非常不均匀且计算成本很高。
- 向量化 - 为了提高效率,它调用样本点列表上的被积函数,而不是一次调用一个点。
- 能够处理向量值函数 - 向量值被积函数的所有分量同时计算而无需额外成本,因此单独集成所有分量是没有意义的。
此外,它应该是:
- 2D - 我要计算的积分是平面区域上的双积分,我希望能够为整个积分指定整体(相对)容差并让它适当地管理误差预算。
有人知道有这样功能的库吗?即使是四个属性中的两个或三个也总比没有好。
我正在使用 Python 和 SciPy,所以如果它已经可以与 Python 一起使用,那将是一个额外的好处。(但我也可以编写胶水代码让它在必要时调用我的被积函数。)
matlab - Trapz 给出否定结果:为什么?
我正在尝试对Generalized Normal Distribution进行数值积分。我希望它下面的面积是1。我得到的是-1。为什么会这样?
matlab - 求解受限于给出非负解的延迟微分方程 (DDE) 系统
在 MATLAB 中,ode45
有一个名为的参数NonNegative
将解约束为非负数。他们甚至写了一篇关于这种方法如何工作的论文,以及它如何不像将 y_i 设置为 0 那样愚蠢,因为它通常不会起作用。
现在,MATLAB 也有dde23
用于求解延迟微分方程的功能,但NonNegative
该积分器没有等效参数。
不幸的是,我的任务是向现有的 ODE 系统添加延迟,该系统可以使用ode45
with NonNegative
enabled 解决。
任何想法我应该如何进行?
编辑:
我不确定这是否有帮助,但是...
我系统的 DDE 部分基本上如下所示:
其中X
(第三个等式中的大写字母变量)是 的延迟版本x
。然后,我将这个 DDE 系统链接到现有的(和更大的)ODE 系统,方法是在x
和的方程中添加几个项z
,然后将组合系统整合在一起。
matlab - 如何克服数值积分中的奇点(在 Matlab 或 Mathematica 中)
我想在数字上整合以下内容:
在哪里
和a
,b
和β
是常量,为简单起见,都可以设置为1
。
Matlab usingdblquad
和 Mathematica usingNIntegrate
都不能处理分母产生的奇异性。由于它是一个双积分,我无法指定 Mathematica 中的奇点在哪里。
我确信它不是无限的,因为这个积分是基于微扰理论并且没有
以前发现过(只是不是我发现的,所以我不知道它是如何完成的)。
有任何想法吗?
matlab - 这个积分可以在 Matlab 或 Mathematica 中以数值方式完成吗?
我希望能够完全以数字方式进行下面的积分。
其中,和,和是常量,为简单起见,都可以设置为1
。
可以手动或使用 Mathematica 解析地完成积分x
,然后y
可以使用 NIntegrate 数值地完成积分,但这两种方法给出不同的答案。
分析:
数值方法1:
数字 2:
所以这两种数值方法都没有给出-0.0160323
. 我理解为什么——第一种方法对分母造成的无穷大有问题,而第二种方法有效地删除了导致问题的积分部分。但我希望能够整合另一个无法通过分析简化的积分(一个更难x
的积分)。上面的积分为我提供了一种测试任何新方法的方法,因为我知道答案应该是什么。y
z
numerical-integration - 数值积分
一般来说,当您进行数值评估和积分时,比如在 MATLAB 中,我只是选择一个较大的数字作为边界还是有办法告诉 MATLAB “取极限”?
我假设您只使用大数字,因为不同的机器将能够处理不同数量级的数字。
我只是想知道他们是否是改进我的代码的一种方法。我正在通过蒙特卡洛进行大量期望值计算,并且经常使用梯形方法来检查我自己的自由度是否足够小。