【发布时间】:2017-04-07 21:26:12
【问题描述】:
我正在建模黎曼θ函数:
import numpy as np
def theta(s, n=100):
a_range = np.arange(2, n + 1)
return 1 + sum(1/(a_range ** s))
对负数s无效;例如theta(-2) 导致这个错误:
1 def theta(s, n=100):
2 a_range = np.arange(1)
----> 3 return 1 + sum(1/(a_range ** s))
4
5 theta(-2)
ValueError: Integers to negative integer powers are not allowed.
这是为什么呢? x^-1 应该只是 1/x 如果我没记错我的数学。
【问题讨论】:
-
既然,错误信息明确指出:“整数的负整数幂是不允许的。”,为什么不试试:
a_range = np.arange(2, n+1, dtype=np.float)? -
或者只是
a_range = np.arange(1.0)就足够了。 -
就是这样!谢谢。
-
@Evert --
numpy.arange在浮点值方面存在一些问题,尽管这可能是由浮点精度错误等 (IIRC) 引起的。