python - Python 中的数值积分与矢量化函数的自适应求积

标签 python numpy scipy vectorization numerical-integration

我正在寻找一个 super 骗子数值求积函数。它应该具有以下三个属性:

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

另外,应该是:

  • 2D - 我要计算的积分是平面区域上的二重积分,我希望能够为整个积分指定一个总体(相对)容差,并让它适本地管理误差预算。

有人知道有这样功能的库吗?四个属性中的两个或三个也比没有好。

我正在使用 Python 和 SciPy,所以如果它已经可以与 Python 一起使用,那将是一个额外的好处。 (但我也可以编写胶水代码,让它在必要时调用我的被积函数。)

最佳答案

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

安装 quadpy

pip3 install quadpy

然后运行

import numpy
import quadpy


triangles = numpy.array(
    [[[0.0, 0.0], [1.0, 0.0]], [[1.0, 0.0], [1.0, 1.0]], [[0.0, 1.0], [0.0, 1.0]]]
)

val, error_estimate = quadpy.triangle.integrate_adaptive(
    lambda x: [numpy.sin(x[0]), numpy.exp(x[0])], triangles, 1.0e-10
)

print(val)
print(error_estimate)

这给出了

[ 0.45969769  1.71828183]
[  7.10494337e-12   3.68776277e-11]

关于python - Python 中的数值积分与矢量化函数的自适应求积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886210/

相关文章:

python - 解决一个带有依赖关系的简单打包组合

python - 如何在 Python 3 中动态调用内置方法,例如 __doc__?

python - 值(value)错误、真值错误、模糊错误

python - 我无法整合数学范围错误的原因

python - 使用 scipy.ndimage.map_cooperatives 对 ndarray 中的所有数组进行高效采样

python - 稀疏 CSR 阵列的核外处理

python - 在函数内导入 python 库与全局导入之间的区别?

python - 如何有效地更改第 3 方 Django 应用程序?

python - 将相同的字典顺序分配给二维数组的重复元素

python - 与倒数第二个相比,最后一个索引对 numpy 数组的访问时间的影响更大