Algorithm 优化积分f(x)exp(-x)从x=0,无穷远
我需要一个稳健的积分算法,用于x=0和无穷大之间的Algorithm 优化积分f(x)exp(-x)从x=0,无穷远,algorithm,numerical-methods,Algorithm,Numerical Methods,我需要一个稳健的积分算法,用于x=0和无穷大之间的f(x)exp(-x),使用f(x)一个正的可微函数。 我事先不知道数组x(它是我例程的中间输出)。x阵列通常为对数等距,但高度不规则。 目前,我使用的是辛普森算法,我的问题是,域经常被x数组严重采样不足,这会产生不切实际的积分值。 在每次运行我的代码时,我都需要进行数千次这种集成(每个都有一组不同的x值),因此我需要找到一种高效而健壮的方法来集成这个函数 更多详情: x数组可以有2到N个点(N个已知点)。第一个值总是x[0]=0.0。最后一点的
f(x)exp(-x)
,使用f(x)
一个正的可微函数。
我事先不知道数组x
(它是我例程的中间输出)。x
阵列通常为对数等距,但高度不规则。
目前,我使用的是辛普森算法,我的问题是,域经常被x
数组严重采样不足,这会产生不切实际的积分值。
在每次运行我的代码时,我都需要进行数千次这种集成(每个都有一组不同的x值),因此我需要找到一种高效而健壮的方法来集成这个函数
更多详情:
x
数组可以有2到N个点(N个已知点)。第一个值总是x[0]=0.0
。最后一点的值始终大于可调阈值x_max
(因此exp(x_max)约为0
)。我只知道f
在x[I]
点的值(尽管该函数是平滑函数)
我的第一个想法是做拉盖尔-高斯积分。然而,当不使用最佳正交点时,该算法似乎非常不可靠 我目前的想法是添加一组辅助点,插值
f
,以便辛普森算法变得更稳定。如果我这样做,是否存在辅助点的最佳选择
如果有任何建议,我将不胜感激,
谢谢。设置t=1-exp(-x)
,然后dt=exp(-x)dx
,积分值等于
integral[ f(-log(1-t)) , t=0..1 ]
你可以用标准的辛普森公式计算,希望能得到好的结果
请注意,分段线性插值将始终导致积分的二阶误差,因为即使采用辛普森方法,结果也相当于梯形公式。为了在辛普森方法中获得更好的误差,您需要更高的插值次数,最好是三次样条曲线。带估计导数的三次贝塞尔多项式可以快速折衷计算控制点。在f(x)exp(x)或f(x)exp(-x)时,你可能会更幸运?(正x或负x的指数)?您的函数评估的CPU成本有多高?(更多的评估点便宜吗?)。在您了解了这一点之后,您可以查看以了解这一点如何适用于不同的时间间隔。例如,您所述的问题将使用“不使用最佳正交点时高度不可靠”:如果您不使用正确的公式,为什么它会起作用?谢谢,我实际上使用了
t=exp(-x)
,然后集成f(t)dt
。我对照分析值检查了结果,得到的误差可以忽略不计。即使使用trapz算法,这也要快得多。是的,这也行。不同之处在于,一个参数化在增长,另一个在下降。