我正在尝试计算复杂参数的Beta函数的值。该方法scipy.special.beta不接受复杂参数,所以我定义了beta = lambda a, b: (gamma(a) * gamma(b)) / gamma(a + b)它适用于小值,但是,对于大值,它会返回nan. 所以我深入研究了Gamma函数的行为from scipy.special import gammaimport numpyradius = 165phi = (3.0 * numpy.pi) / 4.0n = 1.9 + numpy.exp(phi * 1j) * radiusprint gamma(n)0j将返回A并且显然该值太小而无法打印。不过,虽然Gamma函数的值超小,但对应的Beta函数的值并不完全。所以做计算还是有意义的。但我想不出办法。我试过了math.gamma,但它不会接受复杂的论点。我想在此提供的方法的答案,它会返回-0j的n = 1.9 + numpy.exp(phi * 1j) * radiusnumpy.exp(numpy.log(gamma(n)) + numpy.log(gamma(0.5)) - numpy.log(gamma(n + 0.5)))我试图计算beta(n, 0.5) 的地方。有人可以帮我解决这个问题吗?提前致谢!
1 回答
largeQ
TA贡献2039条经验 获得超7个赞
我不了解 scipy,但您可以使用sympy来评估 beta 函数。它支持复杂的参数。本文档可能会对此有所帮助。
因此,如果我理解正确,您的代码大致如下所示:
from sympy.functions.special.beta_functions import beta
import numpy
radius = 165
phi = (3.0 * numpy.pi) / 4.0
n = 1.9 + numpy.exp(phi * 1j) * radius
print(beta(n, 0.5))
>>> 0.0534468376932947 - 0.127743871500741*I
添加回答
举报
0/150
提交
取消