Точность scipy.integrate.quad на больших числах
Я пытаюсь вычислить такой интеграл (на самом деле cdf экспоненциального распределения с его pdf) черезscipy.integrate.quad()
:
import numpy as np
from scipy.integrate import quad
def g(x):
return .5 * np.exp(-.5 * x)
print quad(g, a=0., b=np.inf)
print quad(g, a=0., b=10**6)
print quad(g, a=0., b=10**5)
print quad(g, a=0., b=10**4)
И результат таков:
(1.0, 3.5807346295637055e-11)
(0.0, 0.0)
(3.881683817604194e-22, 7.717972744764185e-22)
(1.0, 1.6059202674761255e-14)
Все попытки использовать большой верхний предел интеграции дают неправильный ответ, хотя использованиеnp.inf
решает проблему.
Подобный случай обсуждается вбестолковый вопрос # 5428 на GitHub.
Что я должен сделать, чтобы избежать такой ошибки при интеграции других функций плотности?