【问题标题】:optimize integral f(x)exp(-x) from x=0,infinity从 x=0,infinity 优化积分 f(x)exp(-x)
【发布时间】: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


【解决方案1】:

设置t=1-exp(-x),然后dt = exp(-x) dx,积分值等于

integral[ f(-log(1-t)) , t=0..1 ]

您可以使用标准的辛普森公式进行评估,并希望得到好的结果。

请注意,分段线性插值总是会导致积分的 2 阶误差,因为即使方法是 Simpson,结果也相当于梯形公式。为了在 Simpson 方法中获得更好的误差,您将需要更高的插值度,最好是三次样条。使用估计导数来计算控制点的三次 Bezier 多项式可能是一种快速的折衷方案。

【讨论】:

  • 谢谢,我实际上最终使用了t=exp(-x),然后集成了f(t) dt。我根据分析值检查了结果,得到的错误可以忽略不计。即使使用 trapz 算法,这也更快。
  • 是的,这也有效。不同之处在于一个参数化正在增长,另一个正在下降。
猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 2018-09-13
  • 2021-09-25
  • 2020-11-04
  • 2021-05-18
  • 2017-10-28
相关资源
最近更新 更多