【发布时间】:2019-01-23 21:18:03
【问题描述】:
我正在尝试计算复杂参数的 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中提供的方法,它会返回-0j for
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)。
有人可以帮我解决这个问题吗?提前致谢!
【问题讨论】:
标签: python scipy gamma-function