如何同时获取正负平方根

-2 投票
1 回答
2299 浏览
提问于 2025-04-18 14:56

我想用Python找到一个数字的两个平方根。我的简单代码是:

#!/usr/bin/env python
import numpy as np
x = 4.0
print 'Square roots of',x,'are:',np.sqrt(x)

这段代码给我的输出是:

Square roots of 4.0 are: 2.0

但是我也想看到 -2.0 这个结果,也就是说,4的平方根应该是正负2,而不仅仅是正2。

在更广泛的问题中,我想绘制一个函数 f(x)=sqrt(x)。我想一次性捕捉到抛物线的两个分支。现在的代码是:

#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0.0, 16.0, 0.2)
f = np.sqrt(x)
plt.plot(x, f)
plt.show()

但是这段代码没有在负y轴上绘制值。有没有办法做到这一点,而不需要使用什么技巧(比如第二次绘制时加个负号)?而且我不一定要用 numpy

1 个回答

3

我觉得提问者有点困惑:4的平方根是正负2,为什么numpy.sqrt只给出正的那个呢?

其实这个在函数的说明中已经说得很清楚了:

Returns
-------
y : ndarray
    An array of the same shape as `x`, containing the positive
    square-root of each element in `x`.  ...

你可以在Python命令行中使用numpy.info(numpy.sqrt)来查看这个信息。

因为每个正数都有一对平方根,如果你想打印出所有的平方根,只需要把你的print语句改成:

print 'Square roots of',x,'are: +/-',np.sqrt(x)

撰写回答