我正在尝试为复杂参数计算 Beta 函数的值。方法scipy.special.beta
不接受复杂的参数,因此我定义了
beta = lambda a, b: (gamma(a) * gamma(b)) / gamma(a + b)
对于较小的值,它很好用,但是对于较大的值,它将返回nan
。所以我研究了 Gamma 函数
from scipy.special import gamma
import numpy
radius = 165
phi = (3.0 * numpy.pi) / 4.0
n = 1.9 + numpy.exp(phi * 1j) * radius
print gamma(n)
将返回0j
,并且显然该值太小而无法打印。
但是,尽管 Gamma 函数的值非常小,但相应的 Beta 函数的值却不大。因此进行计算仍然有意义。但是我找不到办法。
我尝试了math.gamma
,但是它不接受复杂的参数。我尝试了此answer中提供的方法,它将为{p>返回-0j
n = 1.9 + numpy.exp(phi * 1j) * radius
numpy.exp(numpy.log(gamma(n)) + numpy.log(gamma(0.5)) - numpy.log(gamma(n + 0.5)))
我试图计算 beta(n,0.5)的地方。
有人可以帮我解决这个问题吗?预先感谢!
答案 0 :(得分:1)