在Python中绘制复数值函数的实部

时间:2019-11-03 05:09:28

标签: python numpy matplotlib complex-numbers real-number

我正在尝试绘制以下功能...

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),但不能显示复杂的结果。我可以通过其他方式吗?

1 个答案:

答案 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()

我正在得到这个情节 enter image description here

有了你的代码,我得到了 enter image description here