# Exercise 1: 电子自旋的布洛赫球模型
建立电子自旋在空间旋转角度和其态在布洛赫球上转角定量的数学联系模型。
自旋空间的转动算符可以写成
R^(n,φ)=exp(−iφ2σ^⋅n)(1)
它代表着绕 n轴旋转 φ 角度。为了将其展开,我们先来看看(σ^⋅n)2 的结果是什么,如下
(σ^⋅n)2===(σ^xnx+σ^yny+σ^znz)2σ^x2nx2+σ^y2ny2+σ^z2nz2+nxny{σ^x,σ^y}+nxnz{σ^x,σ^z}+nynz{σ^y,σ^z}I^(nx2+ny2+nz2)=I^(2)
由此,我们可以推导得
(σ^⋅n)N={1σ^⋅n对于偶数的N对于奇数的N(3)
我们再对 (1) 式使用欧拉公式,泰勒展开并利用 (3) 式,可得:
exp(−iφ2σ^⋅n)===cos(φ2σ^⋅n)−isin(φ2σ^⋅n)[1−2!(σ^⋅n)2(2φ)2+4!(σ^⋅n)4(2φ)4−⋯]−i[(σ^⋅n)2φ−3!(σ^⋅n)3(2φ)3+⋯]I^cos(2φ)−i(σ^⋅n)sin(2φ)(4)
最后,我们再将上式写开,写成矩阵的形式,最终得
exp(−iφ2σ^⋅n)===I^cos(2φ)−isin(2φ)(σ^xnx+σ^yny+σ^znz)cos(2φ)(1001)−isin(2φ)[nx(0110)+ny(0i−i0)+nz(100−1)]⎝⎛cos(2φ)−inzsin(2φ)(−inx+ny)sin(2φ)(−inx−ny)sin(2φ)cos(2φ)+inzsin(2φ)⎠⎞(5)
至此,我们把在自旋 1/2 空间中的转动算符写成了一个2×2 的幺正矩阵。自旋空间的布洛赫球函数表示为 ∣ψ⟩=cos2θ∣+⟩+eiϕsin2θ∣−⟩,那么写成矩阵表示则为:
∣ψ⟩=⎝⎛cos2θeiϕsin2θ⎠⎞(6)
那么对于任意一个转动算符作用的结果为:
exp(−iφ2σ^⋅n)∣ψ⟩=⎝⎛cos(2φ)−inzsin(2φ)(−inx+ny)sin(2φ)(−inx−ny)sin(2φ)cos(2φ)+inzsin(2φ)⎠⎞⎝⎛cos2θeiϕsin2θ⎠⎞=⎝⎛cos2φcos2θ−inzsin2φcos2θ−(ny+inx)sin2φcos2θ(ny−inx)sin2φcos2θ+eiϕcos2φsin2θ+ieiϕnzsin2φsin2θ⎠⎞(7)
例如,当绕绕着 x 轴旋转 2π 时,将 nx=1,ny=nz=0,φ=2π 代入上式可以得到旋转后的态 ∣ψ⟩′ 为:
∣ψ⟩′=⎝⎛−cos2θ−eiϕsin2θ⎠⎞=−∣ψ⟩(8)
也就是说旋转 2π 后,态多了一个 −1 的因子。
# Exercise 2: 三能级体系的几何表示
仿照布洛赫球建立的方法,对三能级系统建立一个几何表示。
对于三能级体系,一个不失一般性的态能够被写为
∣Ψ⟩=α∣0⟩+β∣1⟩+γ∣2⟩
利用归一化条件,可得
∣α∣2+∣β∣2+∣γ∣2=1
我们可以将这个态用极坐标表示为
∣Ψ⟩=rαeiϕα∣0⟩+rβeiϕβ∣1⟩+rγeiϕγ∣2⟩
但如果不去与其他体系进行比较,ϕα,ϕβ,ϕγ 的绝对值是没有意义的,因此可以引入一个相对相位 ϕ1,ϕ2 将上式改写为:
∣Ψ⟩=rα∣0⟩+rβeiϕ1∣1⟩+rγeiϕ2∣2⟩
为了构建几何表示,引入两个角度参数 0≤θ1,θ2≤π,将上式改写为:
∣Ψ⟩=cosθ1∣0⟩+eiϕ1sinθ1cosθ2∣1⟩+eiϕ2sinθ1sinθ2∣2⟩=cosθ1∣0⟩+eiϕ1sinθ1(cosθ2∣1⟩+ei(ϕ2−ϕ1)sinθ2∣2⟩)
对上式相继作如下的变换:
ϕ2−ϕ1⟶ϕ2
cosθ2∣1⟩+eiϕ2sinθ2∣2⟩⟶∣ψ⟩
于是就有了:
{∣Ψ⟩=cosθ1∣0⟩+eiϕ1sinθ1∣ψ⟩∣ψ⟩=cosθ2∣1⟩+eiϕ2sinθ2∣2⟩
通过上式,我们就可以看出,对于三能级体系,我们可以构建两个布洛赫球来表示。但对于第一个布洛赫球,上半球面和下半球面是反对称相关对应的,这样的布洛赫球是 “过余的”,于是做一个变换 θ1⟶2θ1,因此
{∣Ψ⟩=cos2θ1∣0⟩+eiϕ1sin2θ1∣ψ⟩∣ψ⟩=cosθ2∣1⟩+eiϕ2sinθ2∣2⟩
用上式表示的两个布洛赫球,就可以表示出一个三能级体系的态。
# Exercise 3: 我们无法区分拥有相同密度矩阵的不同态
具有相同密度矩阵的态在操作上是不可区分的。在两量子比特体系下展示这一点。
假设有个混态,其有 P 的概率在 ∣00⟩ 态,有 21−P 的概率在 21∣01⟩+21∣10⟩ 态上,有 21−P 的概率在 21∣01⟩−21∣10⟩ 态上。这个混态的密度矩阵为:
ρ=P∣00⟩⟨00∣+21−P(21∣01⟩+21∣10⟩)(21⟨01∣+21⟨10∣)+21−P(21∣01⟩−21∣10⟩)(21⟨01∣−21⟨10∣)=⎣⎢⎢⎢⎡1000000000000000⎦⎥⎥⎥⎤+41−P⎣⎢⎢⎢⎡0000011001100000⎦⎥⎥⎥⎤+41−P⎣⎢⎢⎢⎡000001−100−1100000⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡1000021−P000021−P00000⎦⎥⎥⎥⎤
假设另一个混态,其有 P 的概率在 ∣00⟩ 态,有 21−P 的概率在 21∣01⟩ 态上,有 21−P 的概率在 21∣10⟩ 态上。这个混态的密度矩阵为:
ρ=P∣00⟩⟨00∣+21−P∣01⟩⟨01∣+21−P∣10⟩⟨10∣=⎣⎢⎢⎢⎡1000000000000000⎦⎥⎥⎥⎤+21−P⎣⎢⎢⎢⎡0000010000000000⎦⎥⎥⎥⎤+21−P⎣⎢⎢⎢⎡0000000000100000⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡1000021−P000021−P00000⎦⎥⎥⎥⎤
可见两种不同的混态其密度矩阵是相同的。在相同的密度矩阵下,用作测量其结果是相同的。因此无法通过测量区分这两种混态。
# Exercise 4: 两量子比特的奇偶性测量
找出 Z^⊗Z^ 的谱分解。并检验 Z^⊗Z^ 算符的测量对应于测量两个量子比特的奇偶性,其中结果 +1 对应于偶校验,结果 −1 对应于奇校验。
Z^ 的本征态是 ∣0⟩,∣1⟩,其本征值分别为 +1 和 −1。因此 Z^ 可以写为:
Z^=∣0⟩⟨0∣−∣1⟩⟨1∣
那么 Z^⊗Z^ 则可以写为:
Z^⊗Z^=(∣0⟩⟨0∣−∣1⟩⟨1∣)⊗(∣0⟩⟨0∣−∣1⟩⟨1∣)=(∣0⟩⟨0∣)⊗(∣0⟩⟨0∣)−(∣0⟩⟨0∣)⊗(∣1⟩⟨1∣)−(∣1⟩⟨1∣)⊗(∣0⟩⟨0∣)+(∣1⟩⟨1∣)⊗(∣1⟩⟨1∣)=∣00⟩⟨00∣−∣01⟩⟨01∣−∣10⟩⟨10∣+∣11⟩⟨11∣
对于两量子比特体系来说,由上式可以看出 Z^⊗Z^ 的本征态分别有:∣00⟩,∣11⟩,其本征值为 +1;∣01⟩,∣10⟩,其本征值为 −1。所以可以使用 Z^⊗Z^ 对两个量子位进行奇偶性测量 (parity-measurement),若特征值被测量为 + 1,这表明无错误位,是偶校验;如果特征值被测量为 -1,则这表示具有错误位,是奇偶校验。
# Exercise 5: 测量对演化的影响
对于一个如下图所示的 Rabi 振荡。在演化中的 4T,2T,T,2T 进行四次投影测量,每次测量的结果是什么?以及演化到 3T 的密度矩阵是什么?
<div align=center><img alt="欢迎来访呀朋友" src="https://pic.imgdb.cn/item/657839f5c458853aefd9f16a.jpg"/></div>
采用 ∣↑⟩ 和 ∣↓⟩ 记 Rabi 振荡的上下态。若 ∣↑⟩ 的几率随时间变化的周期为 T,在没有任何扰动(测量)下,体系的态变化可以写作如下:
∣ψ⟩=sin(Tπt)∣↑⟩+cos(Tπt)∣↓⟩
在 t=4T 时刻,体系的态为 ∣ψ⟩=22∣↑⟩+22∣↓⟩。此时用 ∣↑⟩、∣↓⟩ 的基底做测量,有
p↑=⟨ψ∣P^↑∣ψ⟩=⟨ψ∣↑⟩⟨↑∣ψ⟩=21
的几率使得测量后体系进入
⟨ψ∣P^↑∣ψ⟩P^↑∣ψ⟩=∣↑⟩
态上。同理有 p↓=21 的几率使得测量后体系进入 ∣↓⟩ 的态上。
在 t=T/4 时刻的测量,测量后无论是进入 ∣↑⟩ 态还是 ∣↓⟩ 态,再经过 T/4 的时间到了 t=T/2 的时刻,体系的态都会演化到 ∣ψ⟩=22∣↑⟩+22∣↓⟩。此时再进行测量,同样会分别有 21 的概率进入到 ∣↓⟩ 态或∣↑⟩ 态上。
若在 t=2T 时刻的测量使得系统的态进入 ∣↑⟩,那么演化到 t=T 时刻,体系的态演化为 ∣ψ⟩=∣↓⟩,那么此时的测量一定会是 ↓,且测量不会改变体系的态;而到了 t=2T 时刻,体系的态又仍恰好演化到 ∣ψ⟩=∣↓⟩,因此此时的测量结果仍然为 ↓;同理,若在 t=2T 时刻的测量使得系统的态进入 ∣↓⟩,则 t=T、2T 的测量结果均为 ↑。
总结来说,4 次测量可能会出现如下的情况
- 测量结果分别为:↑、↑、↓、↓,该种测量结果序列出现的几率为 25%;
- 测量结果分别为:↑、↓、↑、↑,该种测量结果序列出现的几率为 25%;
- 测量结果分别为:↓、↑、↓、↓,该种测量结果序列出现的几率为 25%;
- 测量结果分别为:↓、↓、↑、↑,该种测量结果序列出现的几率为 25%。
对面上面四种情况,第 1 和第 3 种情况在 t=3T 时刻系统的态会演化到 ∣ψ⟩=∣↓⟩; 第 2 和第 4 种情况则会会演化到 ∣ψ⟩=∣↑⟩。因此,3T 时刻体系可认为是处于一种混态:50% 的概率在 ∣↑⟩,50% 的概率在 ∣↓⟩,所以密度矩阵为:
ρ=21∣↑⟩⟨↑∣+21∣↓⟩⟨↓∣=⎣⎢⎡1/2001/2⎦⎥⎤
但准确点来说,这个密度矩阵是对于 t=T/2 之前,即在做第二次测量之前的观测者来说的。当做完第二次测量后,对于观察者来说以及可以 “明确地知道” t=3T 时刻的态究竟是什么,因此对于它(作为已经完成第二次测量的观测者)来说,3T 时刻的密度矩阵是 [1000] 或 [0001]。
# Exercise 6: Jaynes-Cummings 模型
利用 JC 模型,推导出原子处于激发态概率的变化。并讨论如果限定光子数量为无穷或 1 时,两种情况下的物理图像。
选择能量的零点使得激发态的能量为 ℏωe=21ℏω0,而基态的能量为 ℏωg=−21ℏω0。这样的 JC 哈密顿量可以写为
H^=21ℏω0σ^z+ℏωca^†a^+ℏλ(σ^†+σ^)(a^†+a^)
哈密顿量的三项依次分别为:原子的哈密顿量、光场的哈密顿量、原子与光场相互作用的哈密顿量。其中泡利算符 σ^z=∣e⟩⟨e∣−∣g⟩⟨g∣;而算符 σ^†=∣e⟩⟨g∣,算符 σ^=∣g⟩⟨e∣;a^† 与 a^ 分别是光子的产生与湮灭算符;λ 是光场与电偶极矩作用相关的量。
转换的相互作用绘景下,并利用旋转波近似,考虑无失谐的情况,哈密顿量变为:
H^I=ℏλ(σ^†a^+a^†σ^)
设初始原子处于上能态 ∣e⟩,光场处于光子数态的某种叠加态 ∑ncn∣n⟩,且这种叠加态是相干态,满足
∣cn∣2=pn=e−∣α∣2∣α∣2n/n!
我们记 ∣e⟩⊗∣n⟩=∣e,n⟩,这样,系统的初态可以写为:
∣ψ(0)⟩=n∑cn∣e,n⟩
则 t 时刻系统的状态为:
∣ψ(t)⟩=n∑ce,n∣e,n⟩+n∑cg,n∣g,n⟩
将上式代入(相互作用绘景下的)薛定谔方程 iℏ∂t∂∣ψ(t)⟩=H^I∣ψ(t)⟩。该式的左边为:
iℏ∂t∂∣ψ(t)⟩=iℏ(n∑∂t∂ce,n∣e,n⟩+n∑∂t∂cg,n∣g,n⟩)
右边为:
H^I∣ψ(t)⟩=ℏλ(σ^†a^+a^†σ^)(n∑ce,n∣e,n⟩+n∑cg,n∣g,n⟩)=ℏλ(n∑ce,nn+1 ∣g,n+1⟩+n∑cg,n′n ∣e,n−1⟩)
比较上两式的各个系数,最终可以得到:
⎩⎪⎪⎨⎪⎪⎧∂t∂ce,n=−iλn+1 cg,n+1∂t∂cg,n+1=−iλn+1 ce,n
该解为:
⎩⎪⎪⎨⎪⎪⎧ce,n(t)=ce,n(0)cos(λn+1 t)−icg,n+1(0)sin(λn+1 t)cg,n+1(t)=cg,n+1(0)cos(λn+1 t)−ice,n(0)sin(λn+1 t)
代入初值条件 ce,n(0)=cn, ce,n+1=0,则有:
ce,n(t)=cncos(λn+1 t);cg,n+1=−icnsin(λn+1 t)
所以 t 时刻体系的状态为:
∣ψ(t)⟩=n∑(cncos(λn+1 t)∣e,n⟩−icnsin(λn+1 t)∣g,n+1⟩)
由此可以求得 t 时刻原子处于上能态的概率为:
Pe(t)=n∑∣cn∣2cos2(λn+1 t)=n∑21pn(1+cos(2λn+1 t))=21[1+n∑n!∣α∣2ne−∣α∣2cos(λn+1t)]
上式的推导运用到了 ∑npn=1。
当光子数限定为 m 个时,∣cn∣2=δnm,上式变为 Pe(t)=cos2(αm+1t)。这与经典的单模场情况下对应的公式 Pe=cos2(2ΩRt) 很相似。其中 ΩR=−μ⋅E0/ℏ 是 Rabi 频率。光子数与经典的电场强度是相关的,即与电场振幅是正相关的。当光子数恒定时,就对应了经典场处理下的一个 Rabi 频率。当光子数越多,即对应着光场振幅越大,Rabi 频率越大,布局数翻转越快。这样,则光子数限定为 1 或无穷,则对应着 Rabi 频率,或布局数翻转最慢与最快的情况。
# Project : 计算跃迁矩阵元
计算 6Li/7Li;168Yb/170Yb/171Yb/172Yb/173Yb/174Yb/176Yb 的跃迁矩阵元。
注:约化矩阵元的定义不统一,会导致 Wigner-Eckart 定理的表达式不一致。本文主要参考了曾谨严《量子力学》第五版的写法。
对于电偶极跃迁,其跃迁相关的算符写成一个秩为 1 的球张量算符 T^q(1)。我们有 Wigner-Eckart 定理:
⟨α′;j′m′∣T^q(k)∣α;jm⟩=⟨jk;mq∣jk;j′m′⟩2j′+1⟨α′;j′∣T^(k)∣α;j⟩(1)
其中 α 是一些其他的量子数,如径向量子数,为了方便,下面不再把它写出来。利用此定理,可以计算不同能级之间跃迁的矩阵元:
⟨F′mF′∣T^q(1)∣FmF⟩=⟨F1;mFq∣F1;F′mF′⟩2F′+1⟨F′∣∣T^(1)∣∣F⟩(2)
利用 CG 系数的归一化条件
q∑mF∑⟨F1;mFq∣F1;F′mF′⟩⟨F1;mFq∣F1;F′mF′⟩=1(3)
将 (2) 式两边都乘以 ∑q∑mF⟨F1;mFq∣F1;F′mF′⟩,可以化简得到
⟨F′∣∣T^(1)∣∣F⟩=2F′+1q∑mF∑⟨F1;mFq∣F1;F′mF′⟩⟨F′mF′∣T^q(1)∣FmF⟩(4)
为了进一步对上式右边的 ⟨F′mF′∣T^q(1)∣FmF⟩ 使用 Wigner-Eckart 定理,我们考虑 F 是由 J 和 I 耦合成的:
∣FmF⟩=∣JI;FmF⟩=mJ∑mI∑∣JI;mJmI⟩⟨JI;mJmI∣JI;FmF⟩(5a)
∣F′mF′⟩=∣J′I′;F′mF′⟩=mJ′∑mI′∑∣J′I′;mJ′mI′⟩⟨J′I′;mJ′mI′∣J′I′;F′mF′⟩(5b)
由此可对 ⟨F′mF′∣T^q(1)∣FmF⟩ 作进一步计算:
⟨F′mF′∣T^q(1)∣FmF⟩=mJ∑mJ′∑mI∑mI′∑⟨JI;mJmI∣JI;FmF⟩⟨J′I′;mJ′mI′∣J′I′;F′mF′⟩⟨J′I′;mJ′mI′∣T^q(1)∣JI;mJmI⟩=mJ∑mJ′∑mI∑mI′∑⟨JI;mJmI∣JI;FmF⟩⟨J′I′;mJ′mI′∣J′I′;F′mF′⟩⟨J′mJ′∣T^q(1)∣JmJ⟩⟨I′mI′∣ImI⟩=mJ∑mJ′∑mI∑mI′∑⟨JI;mJmI∣JI;FmF⟩⟨J′I′;mJ′mI′∣J′I′;F′mF′⟩⟨J′mJ′∣T^q(1)∣JmJ⟩δII′δmImI′(6)
上式的推导中注意到,∣JI;mJmI⟩ 其实是可以写成两个空间的直积 ∣JmJ⟩⊗∣ImI⟩;而与电偶极的球张量算符 T^q(1) 真正相互作用的是轨道角动量,在这里也就是 ∣JmJ⟩ 才与它作用,换句话说这个球张量算符可以写成这样的形式 T^q(1)⊗I^。因此才有 ⟨J′I′;mJ′mI′∣T^q(1)∣JI;mJmI⟩=⟨J′mJ′∣T^q(1)∣JmJ⟩⟨I′mI′∣ImI⟩。
将 (6) 式代入 (4) 式中得到:
⟨F′∣∣T^(1)∣∣F⟩=2F′+1q∑mF∑mJ∑mJ′∑mI∑⟨F1;mFq∣F1;F′mF′⟩⟨JI;mJmI∣JI;FmF⟩⟨J′I;mJ′mI∣J′I;F′mF′⟩⟨J′mJ′∣T^q(1)∣JmJ⟩(7)
再将 (7) 式代入 (2) 式得:
⟨F′mF′∣T^q(1)∣FmF⟩=⟨F1;mFq∣F1;F′mF′⟩q′∑mF′′∑mJ∑mJ′∑mI∑⟨F1;mF′′q′∣F1;F′mF′⟩⟨JI;mJmI∣JI;FmF′′⟩⟨J′I;mJ′mI∣J′I;F′mF′⟩⟨J′mJ′∣T^q′(1)∣JmJ⟩(8)
对于上式出现的 ⟨J′mJ′∣T^q′(1)∣JmJ⟩ 作相同的处理可得:
⟨J′mJ′∣T^q′(1)∣JmJ⟩=⟨J1;mJq′∣J1;J′mJ′⟩q′′∑mJ′′∑mL∑mL′∑mS∑⟨J1;mJ′′q′′∣J1;J′mJ′⟩⟨LS;mLmS∣LS;JmJ′′⟩⟨L′S;mL′mS∣L′S;J′mJ′⟩⟨L′mL′∣T^q′′(1)∣LmL⟩(9)
再对 ⟨L′mL′∣T^q′′(1)∣LmL⟩ 使用 Wigner-Eckart 定理:
⟨L′mL′∣T^q′′(1)∣LmL⟩=⟨L1;mLq′′∣L1;L′mL′⟩2L′+1⟨L′∣T^(k)∣L⟩(10)
结合 (8)(9)(10) 式可以得到最终的表达式为:
⟨F′mF′∣T^q(1)∣FmF⟩=q′∑mF′′∑mJ∑mJ′∑mI∑q′′∑mJ′′∑mL∑mL′∑mS∑⟨F1;mFq∣F1;F′mF′⟩⟨F1;mF′′q′∣F1;F′mF′⟩⟨JI;mJmI∣JI;FmF′′⟩⟨J′I;mJ′mI∣J′I;F′mF′⟩⟨J1;mJq′∣J1;J′mJ′⟩⟨J1;mJ′′q′′∣J1;J′mJ′⟩⟨LS;mLmS∣LS;JmJ′′⟩⟨L′S;mL′mS∣L′S;J′mJ′⟩⟨L1;mLq′′∣L1;L′mL′⟩2L′+1⟨L′∣T^(k)∣L⟩(11)
考虑电偶极跃迁,原子与电场的相互作用为 H′=−er⋅E。我们把电偶极方向相关的矢量 r写成:
r=r(sinθcosφex+sinθsinφey+cosθez)(12)
利用球谐函数
sinθcosφsinθsinφcosθ=32π(Y1−1−Y11)=i32π(Y1−1+Y11)=34πY10(13)
可得
r∝Y1−12ex+iey+Y10ez+Y112−ex+iey(14)
对于电场同样也可以写为:
E∝Aσ−2ex+iey+Aπez+Aσ+2−ex+iey(15)
于是电偶极能量正比于:
r⋅E∝Aσ−Y1−1+AπY10+Aσ+Y11(16)
将球谐函数写成球张量算法的形式,我们可以将相互作用的哈密顿量写为:
H^′∝Aσ−T^−1(1)+AπT^0(1)+Aσ+T^+1(1)(17)
因此,计算跃迁矩阵元的问题,即为计算:
⟨F′mF′∣(Aσ−T^−1(1)+AπT^0(1)+Aσ+T^+1(1))∣FmF⟩=?(18)
结合 (11)(18) 式,利用 python 编程,可以计算跃迁矩阵元。式中出现的各种 CG 系数可利用 sympy.physics.quantum.cg 包进行查询。
对于 6Li 原子,核自旋数 I=1。我们计算它 2 2S1/2→2 2P1/2 的 D1 跃迁矩阵元,以及 2 2S1/2→2 2P3/2 的 D2 跃迁矩阵元,结果如下表(表中空白部分为零):
对于 7Li 原子,核自旋数 I=3/2。我们计算它 2 2S1/2→2 2P1/2 的 D1 跃迁矩阵元,结果如下表(表中空白部分为零):
计算代码:
| from sympy.physics.quantum.cg import CG |
| from sympy import S, sqrt |
| from fractions import Fraction |
| from sympy import * |
| |
| |
| def calculate_cg_coefficient(j1, m1, j2, m2, j3, m3): |
| cg_value = CG(j1, m1, j2, m2, j3, m3).doit() |
| return cg_value |
| |
| |
| def generate_m_values(j): |
| m_values = [] |
| for i in range(0, int(2*j+1)): |
| m_values.append(-j+i) |
| return m_values |
| |
| |
| def calculate_wigner_3j(J1, mJ1, J2, mJ2, q1, L1, L2, S): |
| a = 0 |
| for q2 in [-1, 0, 1]: |
| for mJ3 in generate_m_values(J1): |
| for mL1 in generate_m_values(L1): |
| for mL2 in generate_m_values(L2): |
| for mS in generate_m_values(S): |
| a += calculate_cg_coefficient(J1, mJ3, 1, q2, J2, mJ2) * calculate_cg_coefficient(L1, mL1, S, mS, J1, mJ3) |
| * calculate_cg_coefficient(L2, mL2, S, mS, J2, mJ2) * calculate_cg_coefficient(L1, mL1, 1, q2, L2, mL2) |
| return calculate_cg_coefficient(J1, mJ1, 1, q1, J2, mJ2) * a / sqrt((2*L2+1)) |
| |
| |
| def calculate_wigner_6j(F1, mF1, F2, mF2, J1, J2, I): |
| a = 0 |
| for q1 in [-1, 0, 1]: |
| for mF3 in generate_m_values(F1): |
| for mJ1 in generate_m_values(J1): |
| for mJ2 in generate_m_values(J2): |
| for mI in generate_m_values(I): |
| a += calculate_cg_coefficient(F1, mF3, 1, q1, F2, mF2) * calculate_cg_coefficient(J1, mJ1, I, mI, F1, mF3) |
| * calculate_cg_coefficient(J2, mJ2, I, mI, F2, mF2) * calculate_wigner_3j(J1, mJ1, J2, mJ2, q1, 0, 1, S) * 1 |
| return calculate_cg_coefficient(F1, mF1, 1, mF2-mF1, F2, mF2) * a |
| |
| |
| L1 = 0 |
| L2 = 1 |
| S = Fraction(1, 2) |
| J1 = Fraction(1, 2) |
| J2 = Fraction(3, 2) |
| I = 1 |
| |
| |
| result_list = [] |
| for F2 in [Fraction(5, 2), Fraction(3, 2), Fraction(1, 2)]: |
| for m2 in generate_m_values(F2): |
| print("\n") |
| for F1 in [Fraction(3, 2), Fraction(1, 2)]: |
| for m1 in generate_m_values(F1): |
| result = calculate_wigner_6j(F1, m1, F2, m2, J1, J2, I) |
| result_list.append(result) |
| print(m2-m1, end=':') |
| print(result, end=' ') |