我正在寻找一个 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/