小编Den*_*kov的帖子

scipy.integrate.quad 大数精度

我尝试通过以下方式计算这样的积分(实际上是指数分布的 cdf 及其 pdf)scipy.integrate.quad()

import numpy as np
from scipy.integrate import quad

def g(x):
    return .5 * np.exp(-.5 * x)

print quad(g, a=0., b=np.inf)
print quad(g, a=0., b=10**6)
print quad(g, a=0., b=10**5)
print quad(g, a=0., b=10**4)
Run Code Online (Sandbox Code Playgroud)

结果如下:

(1.0, 3.5807346295637055e-11)
(0.0, 0.0)
(3.881683817604194e-22, 7.717972744764185e-22)
(1.0, 1.6059202674761255e-14)
Run Code Online (Sandbox Code Playgroud)

尽管使用np.inf解决了问题,但所有尝试使用大的积分上限都会产生错误的答案。

GitHub 上的 scipy issue #5428 中讨论了类似的情况。

我应该怎么做才能避免在集成其他密度函数时出现这种错误?

python numpy scipy calculus

3
推荐指数
1
解决办法
4052
查看次数

标签 统计

calculus ×1

numpy ×1

python ×1

scipy ×1