我在生成列表时遇到错误 <string>:149: RuntimeWarning: 在sqrt中遇到无效值
def ellipse(numPoints, genX=np.linspace, HALF_WIDTH=10, HALF_HEIGHT=6.5):
xs = 10.*genX(-1,1,numPoints)
ys = 6.5*np.sqrt(1-(xs**2))
return(xs, ys, "-")
我遇到了一个错误,提示在计算平方根时遇到了无效的值。我看不出是什么问题。
sqrt(0) = 0
6.5*sqrt(1- (-1**2)) = 0
它们应该能正常工作,但y值出现了问题,返回的是“nan”。
1 个回答
7
可能 xs**2
这个表达式返回的数字大于 1,当你对负数取平方根时,会返回 nan(不是一个数字)。
>>> import numpy as np
>>> np.sqrt(-1)
nan
如果我没记错的话,numpy 提供了复数的功能,我觉得这是表示当 x 小于 0 时的平方根的唯一方法。