为什么integrate.quad(lambda x:x * exp(-x ** 2/2)/ sqrt(2 * pi),0.0,100000)给出0?

时间:2017-11-09 02:43:30

标签: numpy scipy integrate

此函数从0到inf为正,为什么给大于1000会产生0,不合理。

import scipy.integrate as integrate
from math import *

integrate.quad(lambda x: x*exp(-x**2/2)/sqrt(2*pi), 0.0, 1000)
Out[52]: 
(0.3989422804014328, 1.6471510195390376e-11)
integrate.quad(lambda x: x*exp(-x**2/2)/sqrt(2*pi), 0.0, 100000)
Out[54]: 
(0.0, 0.0)

1 个答案:

答案 0 :(得分:3)

对于大于约的x 39,exp(-x**2/2)给出0.0。当积分的上限为100000时,函数非零的积分间隔的分数很小,以至于quad算法永远不会看到它。就quad而言,函数同样为0。