Оценка интеграла с очень маленькими (но ненулевыми) числами - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу оценить следующий интеграл: enter image description here

Я попытался вычислить интеграл, используя python, со следующим кодом:

def findint(k, x, g, n, q, s):
    f = lambda t, m: ((m*gamma(k)*gamma(t-k)*gamma(n)*gamma(t-n))/(gamma(m)*gamma(k-m)*gamma(n-m)*gamma(t-k-n+m)*gamma(t)*math.sqrt(2*math.pi)*x*s))*math.exp(-0.5*((t-x*q)/(x*s))**2)
    i=integrate.dblquad(f, 0, k, lambda m: n, lambda m: np.inf)
    return i

x = 80
g = 250
n = g*x
q = 300
s = 7
k=250

print(findint(k, x, g, n, q, s))

Нокогда я пытаюсь запустить код, я получаю следующую ошибку:

invalid value encountered in double_scalars
  f = lambda t, m: ((m*gamma(k)*gamma(t-k)*gamma(n)*gamma(t-n))/(gamma(m)*gamma(k-m)*gamma(n-m)*gamma(t-k-n+m)*gamma(t)*math.sqrt(2*math.pi)*x*s))*math.exp(-0.5*((t-x*q)/(x*s))**2)
(nan, 0)

Кажется, что числа в знаменателе функции очень малы, и система считает, что я пытаюсь разделитьна 0 (поправьте меня, если вы думаете, что есть какое-то другое объяснение ошибки). Как мне избежать этого и вычислить интеграл?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...