我在 Python 中实现一些数学公式,使用时出现以下错误mpmath.nsum()
TypeError: 输入类型不支持 ufunc 'gamma',并且根据转换规则 ''safe'' 无法安全地将输入强制转换为任何支持的类型
主文件
import math
from mpmath import nsum
H_n = - nsum(lambda n: P_n(a,b,c,n)*math.log(P_n(a,b,c,n)), [0, math.inf])
函数文件
import math
from scipy.special import gamma, hyp1f1
def P_n(a,b,c,n):
P = ((gamma(b)*gamma(a+n))/(gamma(a)*gamma(b+n)))*(hyp1f1(a+n,b+n,-c))
return P
当我使用下面的 for 循环时,我得到了我想要的答案。
sum = 0.0
for n in range(100):
sum += rna.P_n(a,b,c,n)*math.log(rna.P_n(a,b,c,n))
请问有什么帮助吗?(注意:我是 Python 的绝对初学者,所以我不知道如何解决这个问题)