我正在尝试绘制以下功能...
f(k) = Re[k - 0.5*(sqrt(1 - 4*k) + 1)]
k = [-2, 2]
,但我能做的最好的就是...
import matplotlib.pyplot as plt
import numpy as np
k = np.linspace(-2, 2, 100)
f = np.real(k - 0.5*(np.sqrt(1 - 4*k) + 1))
plt.plot(k, f)
plt.axis([-2,2,-10,10])
可以很好地绘制k = [-2, 1/4)
,但不能显示复杂的结果。我可以通过其他方式吗?
答案 0 :(得分:1)
您必须告诉np.sqrt
您正在使用复数,一种简单的方法是在参数末尾添加0j
。调用结果的真实部分之后。您也可以使用this numpy.lib.scimath.sqrt
import matplotlib.pyplot as plt
import numpy as np
k = np.linspace(-2, 2, 100)
f = np.array(k - 0.5*(np.sqrt(1 - 4*k+0j) + 1))
plt.plot(k, f.real)
plt.axis([-2,2,-10,10])
plt.show()