超几何汇合函数散度与scipy

2024-03-29 05:53:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我对scipy的超几何合流函数有一个问题。 代码是

from scipy import special

print special.hyp1f1(-0.5, 0.5, -705)
print special.hyp1f1(-0.5, 0.5, -706)

然后我得到输出

^{pr2}$

我不明白为什么函数发散。对于大x,超几何合流函数有一个渐近展开式,并且这些参数值不应该有任何极点。是我错了,还是这是个虫子?提前感谢您的帮助!在


Tags: 函数代码fromimportscipyspecialprint合流
2条回答

仅供参考:您可以使用优秀的mpmath library来获得一个没有这个问题的hyp1f1函数。如果没有安装GMP/MPIR+gmpy2,这个库将比scipy函数慢一点,但是您可以使用任意精度。在

mpmath示例:

In [19]: hyp1f1(-0.5, 0.5, -706)
Out[19]: mpf('47.1')

In [20]: mp.dps = 25

In [21]: hyp1f1(-0.5, 0.5, -706)
Out[21]: mpf('47.09526954413143632617966605')

重要提示

当这个scipy函数不能处理返回值的大小时,它不会总是返回inf。值(-0.5,0.5706)只是返回一个不正确的答案。在

一个(已知)错误:scipy.special.hyp1f1(0.5, 1.5, -1000) fails.

另请参阅拉请求hyp1f1: better handling of large negative arguments,了解原因(即指数溢出)。在

Kummer的超几何函数只有负整数的极点,因此很好地定义了您的用例。在

相关问题 更多 >