7.8. SU(2) → SO(3) homomorphism#
The Cornwell theorem from the group theory (see for example Section 3, Chapter 5 of [3]) gives the relation between the rotation of the transition amplitude and the physical vector of polarization sensitivity:
where
SO(3) rotation with SymPy
from sympy import Matrix, cos, sin, symbols
def Rz(α):
return Matrix(
[
[cos(α), -sin(α), 0],
[sin(α), cos(α), 0],
[0, 0, 1],
]
)
def Ry(α):
return Matrix(
[
[cos(α), 0, sin(α)],
[0, 1, 0],
[-sin(α), 0, cos(α)],
]
)
θ, ϕ, χ = symbols("theta phi chi", positive=True)
R_SO3 = Rz(ϕ) @ Ry(θ) @ Rz(χ)
R_SO3
SU(2) rotation with SymPy
from sympy import S, Trace, conjugate, expand, expand_trig, simplify
from sympy.physics.matrices import msigma
from sympy.physics.quantum.dagger import Dagger
from sympy.physics.quantum.spin import WignerD
def R(Dx, i, j):
return Trace(Dx @ msigma(i) @ Dagger(Dx) @ msigma(j)) / 2
h = S(1) / 2
Dx = conjugate(
Matrix([[WignerD(h, i, j, ϕ, θ, χ) for i in [+h, -h]] for j in [+h, -h]])
)
Rij = Matrix([[R(Dx, j, i).doit() for i in range(1, 4)] for j in range(1, 4)])
hangle = {
cos(θ / 2) ** 2: (1 + cos(θ)) / 2,
sin(θ / 2) ** 2: (1 - cos(θ)) / 2,
}
R_SU2 = expand_trig(simplify(expand(Rij, complex=True).subs(hangle)))
R_SU2
assert R_SO3 == R_SU2