In [1]:
from numpy import sqrt, pi, exp, angle
from qutip import *
Our usual spin operators (spin-1/2)
In [2]:
pz = basis(2,0)
mz = basis(2,1)
px = 1/sqrt(2)*(pz + mz)
mx = 1/sqrt(2)*(pz - mz)
py = 1/sqrt(2)*(pz + 1j*mz)
my = 1/sqrt(2)*(pz - 1j*mz)
Sx = 1/2.0*sigmax()
Sy = 1/2.0*sigmay()
Sz = 1/2.0*sigmaz()
Splus = Sx + 1j*Sy
Sminus = Sx - 1j*Sy
Define the spin-1 operators. We use J just to keep them apart. Could be S instead.
In [8]:
Jx = 1/sqrt(2)*Qobj([[0,1,0],[1,0,1],[0,1,0]])
Jy = 1/sqrt(2)*Qobj([[0,-1j,0],[1j,0,-1j],[0,1j,0]])
Jz = Qobj([[1,0,0],[0,0,0],[0,0,-1]])
Jplus = Jx + 1j*Jy
Jminus = Jx - 1j*Jy
In [11]:
Jz
Out[11]:
In [12]:
Rz90 = (-1j*pi/2*Sz).expm()
In [13]:
Rz90
Out[13]:
In [14]:
Rz90*px
Out[14]:
Doesn't look like example 7.4 because it's not simplified. How to check:
In [15]:
exp(-1j*pi/4)*py
Out[15]:
Yes, this agrees.
Can also use inner product:
In [16]:
py.dag()*Rz90*px
Out[16]:
In [18]:
(py.dag()*Rz90*px).norm()
Out[18]:
In [19]:
angle(0.707 - 0.707j) == -pi/4
Out[19]:
According to the postulates, the allowed values of an observable are the eigenvalues with corresponding eigenstates.
We know the matrix representation of Jx, Jy, Jz in the Z-basis so we can find all 9 states (in the Z basis). Why nine? There are three possible values $\hbar$, 0, $-\hbar$ for each of three directions.
In [19]:
yevals, (yd,y0,yu) = Jy.eigenstates()
zevals, (zd,z0,zu) = Jz.eigenstates()
xevals, (xd,x0,xu) = Jx.eigenstates()
xd = -xd # fix the signs to match book
yu = -yu # fix the signs to match book
In [23]:
y0
Out[23]:
In [25]:
Rz90 = (-1j*pi/2*Jz).expm()
In [26]:
Rz90*x0
Out[26]:
In [29]:
(y0.dag()*Rz90*x0).norm()
Out[29]:
In [56]:
(z0.dag()*yu).norm()**2
Out[56]:
In [30]:
(zu.dag()*yu).norm()**2
Out[30]:
In [31]:
(zd.dag()*yu).norm()**2
Out[31]:
In [32]:
yu
Out[32]:
In [ ]: