Python scipy法向量均值上的数值积分

Python scipy法向量均值上的数值积分,python,r,numpy,scipy,numerical-integration,Python,R,Numpy,Scipy,Numerical Integration,在集成普通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 = lamb

在集成普通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.9999999998,1.0178191320905743e-08)
所以非常接近1,这是它应该是的。使用R的积分函数也会发生同样的事情,所以这可能只是求积算法的一个已知特性?有人知道为什么会这样吗?

至少在R中是这样,在scipy中,这个问题可能相当简单

你要求程序做的是在整个实线上集成一个函数。求积算法试图找到函数非零的位置,在正常pdf的情况下,该位置无处不在,但很难找到有效部分

在R的情况下,integrate函数在多个点上求值,默认情况下为100,并且它们很可能不会出现在函数相当大的小间隔内。如果你试过类似的方法

> integrate(dnorm,lower=45,upper=55,mean=50)
0.9999994 with absolute error < 8.7e-10
积分(dnorm,下限=45,上限=55,平均值=50) 0.999994,绝对误差<8.7e-10 你得到了正确的结果或足够接近。如果再往前移动,正交算法将再次失败

> integrate(dnorm,lower=-1000,upper=1000,mean=50)
0 with absolute error < 0
积分(dnorm,下限=-1000,上限=1000,平均值=50) 0,绝对误差<0
两个代码片段完全相同-请编辑。
sum(stats.norm.pdf(50,loc=arange(0100,0.01),scale=1))*0.01