首页 > 解决方案 > 在 Python 中绘制复值函数的实部

问题描述

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

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

标签: pythonnumpymatplotlibcomplex-numbersreal-number

解决方案


您必须告诉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()

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

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


推荐阅读