问题描述
我在三个维度的球体上有一组值。我想对它们进行数值积分,我听说 quadpy 提供了良好的速度和功能。但是,我没有功能
def func(x,y,z):
do something
return f
我可以传递给quadpy。我可以以某种方式使用它的积分将我的一组点与他们的一个方案进行数值积分吗?否则,如果有人知道一个好的、快速的 numpy 或 scipy 替代方案,我也可以接受。
解决方法
quadpy 作者在这里。 quadpy 中的所有方法都是高斯积分。这意味着您必须能够在给定点评估函数。 (高斯积分的神奇之处在于如何选择点。)
如果您到处都有数值数据,那么您能做的最好的事情可能是形成 Voronoi 单元,即对于每个点 i
计算最接近该点的区域 V_i
,并且然后
sum(V_i f(x_i))
作为近似值,您可以使用 meshzoo 创建球形网格并将三角形分配给它们最近的 x_i
。