gpt4 book ai didi

python - scipy 中正常值的数值积分

转载 作者:行者123 更新时间:2023-11-28 21:53:31 24 4
gpt4 key购买 nike

在集成普通 pdf 时,我从 scipy integrate.quad 函数中得到了一些奇怪的输出。这是我尝试使用的代码:

inpdf = lambda c: norm.pdf(50, loc=c, scale = 1)
result = integrate.quad(inpdf, -np.inf, np.inf)
print result

返回 (3.281718223506531e-99, 0.0) 这显然是错误的。当我将 x 值更改为 0 时,在下面的代码片段中,我得到了适当的输出:

inpdf = lambda c: norm.pdf(0, loc=c, scale = 1)
result = integrate.quad(inpdf, -np.inf, np.inf)
print result

返回 (0.9999999999999998, 1.0178191320905743e-08)非常接近 1,这是应该的。使用 R 的积分函数会发生完全相同的事情,所以也许这只是正交算法的一个已知属性?有谁知道为什么会这样?

最佳答案

至少在 R 中,并且可能在 scipy 中,这个问题相当简单。

您要求程序做的是在整条实际线路上集成一个功能。正交算法试图找到函数非零的位置,在正常 pdf 的情况下到处都是,但很难找到重要的部分。

在 R 的情况下,集成函数在多个点上进行计算,默认情况下为 100,并且它们很可能不会出现在您的函数相当大的小区间内。相反,如果你尝试类似的东西

> integrate(dnorm,lower=45,upper=55,mean=50)
0.9999994 with absolute error < 8.7e-10

您得到正确的结果或足够接近。如果你移得更远,正交算法再次开始失败

> integrate(dnorm,lower=-1000,upper=1000,mean=50)
0 with absolute error < 0

关于python - scipy 中正常值的数值积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26168954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com