nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

三準位系の間接相互作用(プロット)

前回、三準位系について考察した。
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()は辞書であり、値には縮退度が入っている。

f:id:koideforest:20190806215414p:plain
破線は相互作用が無いときのエネルギー準位を表す。
一点鎖線は二準位だけを考えたときの分裂幅を表す。

 v_{12}は固定し、 v_{23}を変化させている訳だが、1のエネルギー準位が v_{23}の影響受けて多少曲がっていることがわかる。
ただし、(1の準位だけに注目した時に)その変化は然程大きくはなく、間接的な効果であることが伺える。

 |v_{23} / v_{12}| = 1 \, (|v_{23}| = |v_{12}|)の時に注目すると、一点鎖線に挟まれた内側に1と3の準位が来ていることがわかる。
この分裂は、準位2から見た時に、二準位だけを考えた時の分裂幅よりも小さくなっていることを表す。
個人的には、両側から押したらもっと反発して分裂幅が大きくなると思っていたが、そうではないらしい。

三準位についてあまり掘り下げたことがなかったので、弄ったらまだまだ面白いことが眠っていそうな気がする。