scipy.integrate.quad を使用して、非常に広い範囲 (0..10,000) で関数を統合しようとしています。関数はその範囲のほとんどでゼロですが、非常に狭い範囲 (1,602..1,618 など) でスパイクがあります。
統合すると、出力が正であると予想されますが、どういうわけかクワッドの推測アルゴリズムが混乱してゼロを出力していると思います。私が知りたいのは、これを克服する方法はありますか (たとえば、別のアルゴリズムや他のパラメーターを使用するなど)? 通常、どこでスパイクが発生するかはわかりません。そのため、積分範囲を分割して部分を合計することはできません (誰かがそれを行う方法について良いアイデアを持っていない限り)。
ありがとう!
出力例:
>>>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)