使用Python的黎曼曲面图[重复]

2024-03-02

我有一个复杂的矩阵,看起来像

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

产生以下输出。

有什么办法可以修改并得到想要的结果吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python的黎曼曲面图[重复] 的相关文章

随机推荐