python - 在 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)
但没有。我可以通过其他方式做到这一点吗?
解决方案
您必须告诉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()
推荐阅读
- visual-studio-code - 如何在 VS 代码编辑器中转到行尾?
- javascript - 如何获取 Ethers.js 响应数据
- css - SBAdmin 2 导航栏颜色变化
- reactjs - Google Map API 能够在用户缩放或移动时检测地图视口位置
- excel - Excel - 在关键字列表中查找匹配的公式?
- mongodb - 更新 MongoDB 中的递归文档
- php - 文件写入脚本只是创建一个名为“0”的空文件
- swift - 苹果文档中 max(by:) 运算符的示例不能按描述工作?
- c++ - “正在初始化”:无法从“T []”转换为“T []”
- data-modeling - 数据仓库的维度模型(递归/分层)