Я хочу интегрировать гауссову функцию на очень большом интервале.Я выбрал функцию spicy.integrate.quad для интеграции.Кажется, что функция работает только тогда, когда я выбираю достаточно маленький интервал.Когда я использую коды ниже,
from scipy.integrate import quad
from math import pi, exp, sqrt
def func(x, mean, sigma):
return 1/(sqrt(2*pi)*sigma) * exp(-1/2*((x-mean)/sigma)**2)
print(quad(func, 0, 1e+31, args=(1e+29, 1e+28))[0]) # case 1
print(quad(func, 0, 1e+32, args=(1e+29, 1e+28))[0]) # case 2
print(quad(func, 0, 1e+33, args=(1e+29, 1e+28))[0]) # case 3
print(quad(func, 1e+25, 1e+33, args=(1e+29, 1e+28))[0]) # case 4
, то печатаются следующие.
1.0
1.0000000000000004
0.0
0.0
Чтобы получить разумный результат, мне пришлось несколько раз попытаться изменить нижнюю / верхнюю границы интеграла и эмпирически определить его как [0, 1e + 32].Мне это кажется рискованным, так как, когда меняются среднее значение и сигма гауссовой функции, мне всегда приходится пытаться использовать разные границы.
Есть ли четкий способ интегрировать функцию от 0 до 1e + 50, не беспокоясь о границах?Если нет, как вы ожидаете от начала, какие границы дадут ненулевое значение?