我需要一种快速准确的方法来计算 3d 球面体积积分。
我已经预先计算了高精度的数据,在每个集成步骤之前只需要一些简单的操作 - 换句话说,函数调用大多只是数组查找和乘法,因此相对便宜。
数据在球极坐标中均匀分布:θ 和 phi 每度 4 个样本,500 个径向样本。
我需要良好的精度,但我还需要执行几百万次这样的积分,所以速度是一个重要的问题。
什么算法最适合这个问题?
链接到 C++ 中的实现的奖励积分!
我需要一种快速准确的方法来计算 3d 球面体积积分。
我已经预先计算了高精度的数据,在每个集成步骤之前只需要一些简单的操作 - 换句话说,函数调用大多只是数组查找和乘法,因此相对便宜。
数据在球极坐标中均匀分布:θ 和 phi 每度 4 个样本,500 个径向样本。
我需要良好的精度,但我还需要执行几百万次这样的积分,所以速度是一个重要的问题。
什么算法最适合这个问题?
链接到 C++ 中的实现的奖励积分!
所以你想评估
简单的方法就是使用梯形规则(我将省略端点处的一半):
...或者,如果您想要更高阶,请使用另一个 Newton-Cotes 公式。
只需要注意一次。有关其他方法,请参阅评论部分。
编辑:我刚刚注意到你在要求“最好”的方法,所以这对你来说可能会很无聊。
如果子体积均匀分布并且您可以假设函数在其中是恒定的,您可能只需要一个查找表以查找半径中的体积大小并进行加权求和。如果假设不正确,那么它可能不会很准确:)