【发布时间】:2016-12-05 12:02:26
【问题描述】:
我需要在 x=0 和无穷大之间为 f(x)exp(-x) 提供稳健的积分算法,其中 f(x) 是一个正的、可微分的函数。
我不知道数组x 先验(它是我例程的中间输出)。 x 数组通常是 ~log-equispaced,但非常不规则。
目前,我正在使用辛普森算法,但我的问题是,x 数组经常对域进行高度欠采样,这会产生不切实际的积分值。
在我的代码的每次运行中,我都需要进行数千次这种集成(每次都有一组不同的 x 值),因此我需要找到一种有效且稳健的方法来集成此函数。
更多详情:
x 数组可以有 2 到 N 个点(已知 N 个)。第一个值始终是x[0] = 0.0。最后一点始终是大于可调阈值x_max 的值(例如exp(x_max) approx 0)。我只知道f 在点x[i] 的值(虽然该函数是一个平滑函数)。
我的第一个想法是进行拉盖尔-高斯正交积分。然而,当不使用最佳正交点时,这种算法似乎非常不可靠。
我目前的想法是添加一组辅助点,插值f,这样Simpson算法就变得更稳定了。如果我这样做,是否存在辅助点的最佳选择?
我会很感激任何建议, 谢谢。
【问题讨论】:
-
在math.stackexchange.com你可能会有更多的运气
-
f(x)exp(x) 还是 f(x)exp(-x)? (正 x 或负 x 的指数)?
-
您的函数评估的 CPU 成本是多少? (更多评估点是否便宜?)
-
如果您真的想深入研究,我建议您查看Gaussian Quadrature。在您了解之后,您可以查看this section 以了解这如何适用于不同的时间间隔。例如,您陈述的问题将使用 Gauss-Laguerre Quadrature
-
“不使用最佳正交点时非常不可靠”:如果您不使用正确的公式,为什么它会起作用?
标签: algorithm numerical-methods