如何同时获取正负平方根
我想用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)