前回、三準位系について考察した。
koideforest.hatenadiary.com
今回は、実際にエネルギー準位が相互作用によってどう変化するかをプロットする。
import numpy as np import sympy as sy from matplotlib import pyplot as plt # eigenvalues e, v12, v23 = sy.symbols( "e, v12, v23" ) M = sy.Matrix( [ [ -e, v12, 0], [ v12, 0, v23 ], [ 0, v23, e ] ] ) Me = list( M.eigenvals().keys() ) # type( Me ) -> class 'dict' # numerical data N = 1000 v23_v12 = np.linspace( -2, 2, N ) e_ = 1 v12_ = 1 data = [] for me_ in Me: data_e = [] for v_ in v23_v12: data_e.append( complex( me_.subs( [ ( e, e_ ), ( v12, v12_ ), ( v23, v_ * v12_ ) ] ) ) ) data.append( data_e ) # plot for d_ in data: plt.plot( v23_v12, np.real( d_ ) ) plt.hlines( y = -e_, xmin = v23_v12[0], xmax = v23_v12[-1], linestyle = "dashed" ) plt.hlines( y = 0, xmin = v23_v12[0], xmax = v23_v12[-1], linestyle = "dashed" ) plt.hlines( y = e_, xmin = v23_v12[0], xmax = v23_v12[-1], linestyle = "dashed" ) delta_2 = np.sqrt( e_**2 + 4 * v12_**2 ) plt.hlines( y = -delta_2, xmin = v23_v12[0], xmax = v23_v12[-1], linestyle = "dashdot" ) plt.hlines( y = delta_2, xmin = v23_v12[0], xmax = v23_v12[-1], linestyle = "dashdot" ) plt.xlim( [ -2, 2 ] ) plt.xlabel( "v23 / v12" ) plt.show()
注意として、*.eigenvals()は辞書であり、値には縮退度が入っている。
破線は相互作用が無いときのエネルギー準位を表す。
一点鎖線は二準位だけを考えたときの分裂幅を表す。
は固定し、
を変化させている訳だが、1のエネルギー準位が
の影響受けて多少曲がっていることがわかる。
ただし、(1の準位だけに注目した時に)その変化は然程大きくはなく、間接的な効果であることが伺える。
の時に注目すると、一点鎖線に挟まれた内側に1と3の準位が来ていることがわかる。
この分裂は、準位2から見た時に、二準位だけを考えた時の分裂幅よりも小さくなっていることを表す。
個人的には、両側から押したらもっと反発して分裂幅が大きくなると思っていたが、そうではないらしい。
三準位についてあまり掘り下げたことがなかったので、弄ったらまだまだ面白いことが眠っていそうな気がする。