我有一个复杂的矩阵,看起来像
H = [[w1-complex(0,g1),k], [k,w2-complex(0,g2)]
正如本文所讨论的paper https://www.nature.com/articles/s41563-019-0304-9#:%7E:text=A%20DP%20differs%20from%20an,be%20orthogonal%20to%20each%20other.,
我想找到特征值并在黎曼曲面上绘制它们的实部和虚部。看来该论文选择了固定的g1和g2值(最初用希腊字母gamma表示)并使用失谐参数delta=(w1-w2)/2并在k-delta平面上绘制特征值。同样,可以选择 w2=0 并改变 w1 来改变 delta。
我附上了讨论绘图的论文部分。
我找不到任何关于使用 Python 绘制黎曼曲面图的讨论。希望问题不是重复的。
我有以下代码。
"""
Riemann plot of a non-Hermitian matrix
"""
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
XR = np.arange(-1, 1, 0.01)
YR = np.arange(-1, 1, 0.01)
delta, kappa = np.meshgrid(XR, YR)
g1 = 0.2; g2 = 0.1
chi = (g1+g2)/2.0
beta = (g1-g2)/2.0
Gamma = delta + 1j*beta
disc = np.sqrt(kappa**2+Gamma**2)
lambda1 = delta-1j*chi+disc
lambda2 = delta-1j*chi-disc
F = plt.figure(1)
A = F.gca(projection='3d')
plt.xlabel('$\delta$')
plt.ylabel('$\kappa$')
A.set_zlabel('Re $\lambda$')
S = A.plot_surface( kappa, delta, lambda1.real, rstride=1, cstride=1, cmap=cm.Reds )
S = A.plot_surface( kappa, delta, lambda2.real, rstride=1, cstride=1, cmap=cm.Greys )
F = plt.figure(2)
A = F.gca(projection='3d')
plt.xlabel('$\delta$')
plt.ylabel('$\kappa$')
A.set_zlabel('Im $\lambda$')
S = A.plot_surface(kappa, delta, lambda1.imag, cmap=cm.Reds)
S = A.plot_surface(kappa, delta, lambda2.imag, cmap=cm.Greys)
plt.show()
产生以下输出。
有什么办法可以修改并得到想要的结果吗?