我在生成列表时遇到错误 <string>:149: RuntimeWarning: 在sqrt中遇到无效值

8 投票
1 回答
11772 浏览
提问于 2025-04-18 01:56
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 时的平方根的唯一方法。

撰写回答