在量子力學中,角動量算符(\( \hat{L} \))的矩陣表示是基於自旋量子數 \( l \) 的。對於給定的自旋量子數 \( l \),角動量算符的本徵態是由 \( |l, m\rangle \) 表示的,其中 \( m \) 的取值範圍為 \( -l, -l+1, \ldots, l \)。
角動量算符的三個分量 \( \hat{L}_x \)、\( \hat{L}_y \) 和 \( \hat{L}_z \) 的矩陣表示可以通過以下方式構造:
對於不同的自旋量子數,角動量算符的矩陣表示如下:
基底為 \( | \frac{1}{2}, \frac{1}{2} \rangle \) 和 \( | \frac{1}{2}, -\frac{1}{2} \rangle \)。
\[ \hat{L}_z = \hbar \begin{pmatrix} \frac{1}{2} & 0 \\ 0 & -\frac{1}{2} \end{pmatrix} \]
\[ \hat{L}_x = \frac{\hbar}{2} \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \]
\[ \hat{L}_y = \frac{\hbar}{2} \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \]
\[ \hat{L}_z = \hbar \begin{pmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & -1 \end{pmatrix} \]
\[ \hat{L}_x = \frac{\hbar}{\sqrt{2}} \begin{pmatrix} 0 & 1 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \end{pmatrix} \]
\[ \hat{L}_y = \frac{\hbar}{\sqrt{2}} \begin{pmatrix} 0 & -i & 0 \\ i & 0 & -i \\ 0 & i & 0 \end{pmatrix} \]
基底為 \( | \frac{3}{2}, \frac{3}{2} \rangle \)、\( | \frac{3}{2}, \frac{1}{2} \rangle \)、\( | \frac{3}{2}, -\frac{1}{2} \rangle \)、\( | \frac{3}{2}, -\frac{3}{2} \rangle \)。
\[ \hat{L}_z = \hbar \begin{pmatrix} \frac{3}{2} & 0 & 0 & 0 \\ 0 & \frac{1}{2} & 0 & 0 \\ 0 & 0 & -\frac{1}{2} & 0 \\ 0 & 0 & 0 & -\frac{3}{2} \end{pmatrix} \]
\[ \hat{L}_x = \frac{\hbar}{2\sqrt{3}} \begin{pmatrix} 0 & \sqrt{3} & 0 & 0 \\ \sqrt{3} & 0 & \sqrt{3} & 0 \\ 0 & \sqrt{3} & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix} \]
\[ \hat{L}_y = \frac{\hbar}{2\sqrt{3}} \begin{pmatrix} 0 & -i\sqrt{3} & 0 & 0 \\ i\sqrt{3} & 0 & -i\sqrt{3} & 0 \\ 0 & i\sqrt{3} & 0 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix} \]
在海森堡模型中,兩個自旋之間的交互作用可以用以下形式表達:
\[ \hat{H} = -J \hat{\mathbf{S}}_1 \cdot \hat{\mathbf{S}}_2 \]
這裡 \( J \) 是交互作用強度,\( \hat{\mathbf{S}}_1 \) 和 \( \hat{\mathbf{S}}_2 \) 是兩個自旋算符的總和。對於兩個自旋 \( \frac{1}{2} \)、\( 1 \) 和 \( \frac{3}{2} \) 的情況,我們需要考慮各自的合併自旋態。
對於兩個自旋 \( \frac{1}{2} \),總自旋可以是 \( S = 1 \) 或 \( S = 0 \)。
總的基底為 \( |1, 1\rangle \)、\( |1, 0\rangle \)、\( |1, -1\rangle \)、\( |0, 0\rangle \)。
哈密頓量矩陣表示:
\[ \hat{H} = -J \begin{pmatrix} \frac{3}{4} & 0 & 0 & 0 \\ 0 & \frac{1}{4} & 0 & 0 \\ 0 & 0 & \frac{1}{4} & 0 \\ 0 & 0 & 0 & -\frac{1}{4} \end{pmatrix} \]
對於兩個自旋 \( 1 \),總自旋可以是 \( S = 2 \)、\( S = 1 \) 或 \( S = 0 \)。
總的基底為 \( |2, 2\rangle \)、\( |2, 1\rangle \)、\( |2, 0\rangle \)、\( |2, -1\rangle \)、\( |2, -2\rangle \)、\( |1, 1\rangle \)、\( |1, 0\rangle \)、\( |1, -1\rangle \)、\( |0, 0\rangle \)。
哈密頓量矩陣表示(wrong):
\[ \hat{H} = -J \begin{pmatrix} 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & \frac{3}{4} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & \frac{1}{2} & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 2 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & \frac{3}{4} & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & \frac{1}{2} & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -2 \end{pmatrix} \]
對於兩個自旋 \( \frac{3}{2} \),總自旋可以是 \( S = 3 \) 或 \( S = 1 \)。
總的基底為 \( |3, 3\rangle \)、\( |3, 2\rangle \)、\( |3, 1\rangle \)、\( |3, 0\rangle \)、\( |3, -1\rangle \)、\( |3, -2\rangle \)、\( |3, -3\rangle \)。
哈密頓量矩陣表示(wrong):
\[ \hat{H} = -J \begin{pmatrix} 3 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & \frac{9}{4} & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & \frac{3}{4} & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & \frac{9}{4} & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 3 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & -3 \end{pmatrix} \]
Haf:m= 0 km= [2, 2] [1, 1] icp= 1 [0] [1.0] Haf:m= 1 km= [2, 1] [1, 0] icp= 2 [2, 1] [1.0, 0.0] Haf:m= 2 km= [1, 2] [0, 1] icp= 2 [1, 2] [1.0, 0.0] Haf:m= 3 km= [2, 0] [1, -1] icp= 2 [5, 3] [1.0, -1.0] Haf:m= 4 km= [1, 1] [0, 0] icp= 1 [4] [0.0] Haf:m= 5 km= [0, 2] [-1, 1] icp= 2 [3, 5] [1.0, -1.0] Haf:m= 6 km= [1, 0] [0, -1] icp= 2 [7, 6] [1.0, 0.0] Haf:m= 7 km= [0, 1] [-1, 0] icp= 2 [6, 7] [1.0, 0.0] Haf:m= 8 km= [0, 0] [-1, -1] icp= 1 [8] [1.0] 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1
import numpy as np ################################### def code(ns,nt,list1,list2): nspin=3 ns=2; nt=nspin**2 if(nspin==3): mzss=[2,1,0,-1,-2] ic=0; km=[0 for i in range(ns)]; kk=[0 for i in range(ns)]; for msz in mzss: print('msz=',msz,ic) for jc in range(nt): mz=0; nu=0; nd=0 for i in range(0,ns): ki=(jc//(nspin**i))%nspin kk[i]=ki si=ki-1 if(si==1): nu+=1 elif(si==-1): nd+=1 km[i]=si mz+=si if(mz==msz): print(msz,ic,jc,km,kk) list1[ic]=jc list2[jc]=ic ic+=1 kmax=ic print('code_final_ns,nt=',ns,nt,'code_kmax=',kmax) return ################################### S=1 Hamilton def Hafhm(m): listm=list1[m] km=[0 for i in range(ns)]; ks=[0 for i in range(ns)] for i in range(ns): km[i]=int(listm/nspin**i)%nspin ks[0]=km[0]-1; ks[1]=km[1]-1; #print(m,km) icp=0; delm1=0.0; cp=[]; dmp=[]; ist1=0; ist2=1 if(nspin==3): ic1=km[ist1]; sz1=ic1-1 ic2=km[ist2]; sz2=ic2-1 delm1+=sz1*sz2 # ic=(1,0) or (0,1); (2,1) or (1,2) // (0,-)/(-,0); (+,0)/(0,+) if((ic1+ic2==1) or (ic1+ic2==3)): listmp=listm+(ic2-ic1)*3**(ist1-0)+(ic1-ic2)*3**(ist2-0) icp+=1 cp.append(list2[listmp]) dmp.append(1.0) if((ic1+ic2==2) and (ic1 != ic2)): listmp=listm+(ic2-ic1)*3**(ist1-0)+(ic1-ic2)*3**(ist2-0) icp+=1 cp.append(list2[listmp]) dmp.append(1.0) icp+=1; cp.append(m); dmp.append(delm1); print('Haf:m=',m,' km=',km,ks,' icp=',icp,cp,dmp) return icp,cp,dmp ################################### def hmtx(): H=np.zeros((kmax,kmax),dtype=float) for m in range(kmax): icp,cp,dmp=Hafhm(m) #print(m,icp,cp,dmp) for i in range(icp): H[cp[i]][m]+=dmp[i] return H def checklist(): for m in range(kmax): listm=list1[m] im=list2[listm] if(im != m): print(m,im); input('list2 error') print('list1-list2 is checked, OK') ############################################# def printH(H): for i in range(kmax): for j in range(kmax): #print('%5.1f' %(H[j][i]), end='') print('%4d' %(H[j][i]), end='') print(' ') #============================== main =================== FW=open('LZS_AFHM_J2.dat','a') nspin=3 if(nspin==3): ns=2; nt=nspin**ns kmax=nt print('main_ns,nt,kmax=',ns,nt,kmax) list1=np.zeros(kmax,dtype=int) list2=np.zeros(nt,dtype=int) code(ns,nt,list1,list2) print(ns,nt,'kmax=', kmax,list1.shape,list2.shape) H=hmtx(); printH(H);