Skip to main content
 首页 » 编程设计

python之SciPy zeta 函数返回非常大的值

2025年05月04日20lexus

关于 zeta function 的 SciPy 文档状态:

y=zeta(x,q) returns the Riemann zeta function of two arguments: sum((k+q)**(-x),k=0..inf)

给定参数 x=2, q=0 我们应该得到 sum((k)**(-2),k=0..inf) 其中根据wiki entry on Riemann zeta function应该给出大约 1.645

然而 SciPy 给出了以下内容

>>> from scipy.special import zeta 
>>> zeta(2,0) 
1.7976931348623157e+308 

我是不是遗漏了什么或者 scipy zeta 函数坏了?

请您参考如下方法:

scipy.special.zeta 的旧文档字符串说:

y=zeta(x,q) returns the Riemann zeta function of two arguments: 
sum((k+q)**(-x),k=0..inf) 

根据维基百科中的文章,这是 Hurwitz zeta 函数,“当 q = 1(不是 q=0)时,它与黎曼 zeta 函数重合”。确实如此:

In [3]: zeta(1.5, 1) 
Out[3]: 2.6123753486854882 
 
In [4]: zeta(2, 1) 
Out[4]: 1.6449340668482266 
 
In [5]: zeta(3, 1) 
Out[5]: 1.202056903159594 
 
In [6]: zeta(4,1) 
Out[6]: 1.0823232337111381 
 
In [7]: np.pi**4 / 90 
Out[7]: 1.082323233711138 

更新:文档字符串现在明确指出“双参数版本是 Hurwitz zeta 函数”和“黎曼 zeta 函数对应于 q = 1。”