Python 用非常小(但非零)的数字计算积分

Python 用非常小(但非零)的数字计算积分,python,numeric,integral,Python,Numeric,Integral,我希望评估以下积分: 我尝试使用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)

我希望评估以下积分:

我尝试使用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(如果您认为有其他错误解释,请纠正我)。如何避免这种情况并计算积分


提前谢谢

你能提供gamma函数吗?这是通常的gamma函数(将阶乘扩展到复数)@azro
,来自math import gamma
?因为当我运行代码时,我从scipy.special import gamma获得了
overflowerrror:math range error
,gamma的一些参数可能是负数,或者K和n上是否存在确保不会发生这种情况的约束?