Python 3.4 scipy integrate.quad dropoff

时间:2015-08-13 09:07:18

标签: python scipy

我试图在python中计算高斯的积分,如下所示:

WHERE

但是如果你看一下情节,那么在21.0到22之间以及38+之后会有一个零下降到零。 有谁知道它为什么这样做?舍入错误也许?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为理解这个问题的关键是回想一下,数值积分方法计算特定节点处函数值的加权和。

当您偏离平均值时,高斯很快变为零,因此基本上在(-50,50)之间的间隔上,大多数函数值为零。如果积分方法无法从函数非零的小区域中采样点,它将看到整个函数完全平坦,从而为您提供积分0。

那你能做什么?

不是选择(-50,50)的固定间隔,而是选择基于较小sigma值的间隔,以避免在过大的零间隔上进行积分。

如果左侧和右侧只有5,10或20个标准偏差,您将看不到此问题,并且您仍然可以获得非常准确的积分结果。

如果您将10个标准偏差从左侧和右侧进行积分,则会产生这种结果。

plot