我正在尝试使用 scipy.integrate.quad 在非常大的范围内(0..10,000)集成一个函数。该函数在其大部分范围内为零,但在非常小的范围内(例如 1,602..1,618)有一个尖峰。
积分时,我希望输出为正数,但我猜想quad的猜测算法不知何故变得混乱并输出零。我想知道的是,有没有办法克服这个问题(例如,通过使用不同的算法、其他一些参数等)?我通常不知道尖峰会在哪里,所以我不能只拆分积分范围并对各部分求和(除非有人知道如何做到这一点)。
谢谢!
样本输出:
>>>scipy.integrate.quad(weighted_ftag_2, 0, 10000)
(0.0, 0.0)
>>>scipy.integrate.quad(weighted_ftag_2, 0, 1602)
(0.0, 0.0)
>>>scipy.integrate.quad(weighted_ftag_2, 1602, 1618)
(3.2710994652983256, 3.6297354011338712e-014)
>>>scipy.integrate.quad(weighted_ftag_2, 1618, 10000)
(0.0, 0.0)