2024-03-29 05:53:02 发布
网友
我对scipy的超几何合流函数有一个问题。 代码是
from scipy import special print special.hyp1f1(-0.5, 0.5, -705) print special.hyp1f1(-0.5, 0.5, -706)
然后我得到输出
我不明白为什么函数发散。对于大x,超几何合流函数有一个渐近展开式,并且这些参数值不应该有任何极点。是我错了,还是这是个虫子?提前感谢您的帮助!在
仅供参考:您可以使用优秀的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的超几何函数只有负整数的极点,因此很好地定义了您的用例。在
仅供参考:您可以使用优秀的mpmath library来获得一个没有这个问题的hyp1f1函数。如果没有安装GMP/MPIR+gmpy2,这个库将比scipy函数慢一点,但是您可以使用任意精度。在
mpmath示例:
重要提示
当这个scipy函数不能处理返回值的大小时,它不会总是返回inf。值(-0.5,0.5706)只是返回一个不正确的答案。在
一个(已知)错误:scipy.special.hyp1f1(0.5, 1.5, -1000) fails.
另请参阅拉请求hyp1f1: better handling of large negative arguments,了解原因(即指数溢出)。在
Kummer的超几何函数只有负整数的极点,因此很好地定义了您的用例。在
相关问题 更多 >
编程相关推荐