Python中的数值积分与向量化函数的自适应求积法

Kee*_*per 7 python numpy vectorization scipy numerical-integration

我正在寻找一个超级数字正交函数.它应该具有以下三个属性:

  • 自适应 - 它会自动调整采样点的密度以适应被积函数.这是绝对必要的,因为我的被积函数非常不均匀且计算成本很高.
  • 矢量化 - 为了提高效率,它会在采样点列表上调用被积函数,而不是一次调用一个点.
  • 能够处理向量值函数 - 向量值被积函数的所有组件都是同时计算的,无需额外成本,因此将所有组件分别集成是没有意义的.

另外,它应该是:

  • 2D - 我想要计算的积分是平面区域上的双积分,我希望能够指定整个积分的整体(相对)容差,并让它适当地管理误差预算.

有人知道有这样一个函数的库吗?即使四个属性中的两个或三个也不会好.

我正在使用Python和SciPy,所以如果它已经与Python一起使用,那就是奖励.(但是我也可以编写胶水代码,让它在必要时调用我的被积函数.)

Nic*_*mer 5

我刚刚在quadpy 中为一维和二维域实现了矢量化自适应正交。您需要提供的只是您的域和您想要集成的功能的三角测量。它可能是向量值的。

安装 quadpy

pip3 install quadpy
Run Code Online (Sandbox Code Playgroud)

并运行

pip3 install quadpy
Run Code Online (Sandbox Code Playgroud)

这给

[ 0.45969769  1.71828183]
[  7.10494337e-12   3.68776277e-11]
Run Code Online (Sandbox Code Playgroud)


mhe*_*her 1

我使用了这个库,它可以做你想要的一切,除了它是用 C 编写的。但它还有一个 R 接口,所以也许你可以从 Python 调用 R(这是可能的)。

http://ab-initio.mit.edu/wiki/index.php/Cubature_(多维_集成)

或者,您可以使用 ctypes 调用该库(这不是直接的,但它是可行的)。