猿问

如何在 Python 中获取大型复杂参数的 gamma 函数值?

我正在尝试计算复杂参数的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将返回A并且显然该值太小而无法打印。


不过,虽然Gamma函数的值超小,但对应的Beta函数的值并不完全。所以做计算还是有意义的。但我想不出办法。


我试过了math.gamma,但它不会接受复杂的论点。我想在此提供的方法的答案,它会返回-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) 的地方。


有人可以帮我解决这个问题吗?提前致谢!


千万里不及你
浏览 248回答 1
1回答

largeQ

我不了解 scipy,但您可以使用sympy来评估 beta 函数。它支持复杂的参数。本文档可能会对此有所帮助。因此,如果我理解正确,您的代码大致如下所示:from sympy.functions.special.beta_functions import betaimport numpyradius = 165phi = (3.0 * numpy.pi) / 4.0n = 1.9 + numpy.exp(phi * 1j) * radiusprint(beta(n, 0.5))>>> 0.0534468376932947 - 0.127743871500741*I
随时随地看视频慕课网APP

相关分类

Python
我要回答