为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2021-10-19 09:22:50
我正在尝试计算复杂参数的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


查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信