0

我正在尝试绘制以下函数...

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)但没有。我可以通过其他方式做到这一点吗?

4

1 回答 1

1

您必须告诉np.sqrt您正在使用复数,一种简单的方法是0j在参数末尾添加。在您调用结果的实部之后。你也可以使用这个 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()

我得到这个情节 在此处输入图像描述

有了你的代码,我得到了 在此处输入图像描述

于 2019-11-03T05:27:36.343 回答