The Spinor Representation of SO[3]

The Pauli matrices are used to build the generators of the “spinor representation” of SO(3). Let’s define the generators, show that they satisfy the right commutation relations, and then use Mathematica’s built-in matrix exponentiation function to find the actual transformation matrices.

The Pauli matrices are pretty common, so they're already defined in Mathematica. But let's set up some shorthand that looks like the way we write them on paper.

σ1=PauliMatrix[1];
σ2=PauliMatrix[2];
σ3=PauliMatrix[3];

Here they are:

σ1//MatrixForm

σ2//MatrixForm

σ3//MatrixForm

The so(3) generators are defined with a factor of (1/2). This has to be there for the commutation relations to work out the right way. We’ll call the generators (S^( a)), as in class.

S = {(1/2)σ1,(1/2)σ2,(1/2)σ3};

Mathematica likes to work with lists, lists of lists, etc, as opposed to the index notation that we’ve been using for vectors and matrices. But it’s easy to go back and forth between our notation and that of Mathematica: (S^1) is S[[1]], and so on. Now, let’s see if the generators satisfy the correct commutation relations. We wrote them as

[(S^a),(S^b)] = i*(ϵ^abc)(S^c)

Remember, (ϵ^abc) is the alternating symbol (with (ϵ^123)=(ϵ^231)=(ϵ^312)=1, (ϵ^213)=(ϵ^132)=(ϵ^321)=-1, and everything else equal to 0) and there's a sum over the index c in this equation.

Let's start by defining the commutator of two matrices:

Commutator[A_?MatrixQ,B_?MatrixQ] :=A.B-B.A

Now here’s the commutator of (S^1) and (S^2):

Commutator[S[[1]],S[[2]]]//MatrixForm

This is i*(S^3), as we expected.

I*S[[3]]//MatrixForm

Rather than checking the rest by hand, let’s build a 3x3 table that evaluates the following quantity

[(S^a),(S^b)] - i*(ϵ^abc)(S^c)

If all the entries are zero then we know our generators satisfy the correct commutation relations.

Table[Commutator[S[[i]],S[[j]]]-Sum[LeviCivitaTensor[3][[i,j,k]]*I*S[[k]],{k,1,3}],{i,1,3},{j,1,3}]//MatrixForm

While we're at it, let’s also check the Jacobi identity:

[(S^a),[(S^b),(S^c)]]+[(S^c),[(S^a),(S^b)]]+[(S^b),[(S^c),(S^a)]]=0

Table[Commutator[S[[a]],Commutator[S[[b]],S[[c]]]]+Commutator[S[[c]],Commutator[S[[a]],S[[b]]]]+Commutator[S[[b]],Commutator[S[[c]],S[[a]]]],{a,1,3},{b,1,3},{c,1,3}]//MatrixForm

Everything is zero, so it worked!

Now that we’re sure we have the right generators, let’s build the transformation matrices. We can use Mathematica’s MatrixExp function to handle the exponentiation of the matrices for us. We’ll define a function that takes a list of arguments {(Subscript[θ, 1]),(Subscript[θ, 2]),(Subscript[θ, 3])} and gives back the corresponding transformation matrix.

T[θ_?ListQ] := MatrixExp[I*θ.S]//FullSimplify

(Notice that I defined the function so that it only accepts a vector as an argument. It won’t do anything if you evaluate it for anything else.)

Here's the matrix for three arbitrary parameters:

T[{θ1,θ2,θ3}]//MatrixForm

And here's the rotation about the z-axis that we discussed in class:

T[{0,0,θ3}]//MatrixForm

Notice what happens if we rotate by 2π  - we don’t get the identity!

T[{0,0,2π}]//MatrixForm

To get the identity transformation for the spinor representation we need to rotate by 4π:

T[{0,0,4π}]//MatrixForm

This isn’t particular to the z-axis -- the same thing happens for rotations about the other axes:

T[{2π,0,0}]//MatrixForm

T[{4π,0,0}]//MatrixForm

T[{0,2π,0}]//MatrixForm

T[{0,4π,0}]//MatrixForm

Okay, we’ve found the generators and transformation matrices for the spinor representation of SO(3). But what do they act on? That is, what are the spinors? Since we found the N=2 irrep of SO(3), the spinors must be two-component objects that the 2x2 transformation matrices act on. Let’s define one:

χ={a,b};

χ//MatrixForm

You’ve actually seen them before. These two-component objects are the spin part of the wave function for a particle with spin 1/2. If we pick one of the three directions as the axis along which we can measure the spin, then there should be a “spin-up” state and a “spin-down” state that can serve as the basis for our spinors. As it turns out, everything is already set up so that we can use

χ1={1,0};
χ2={0,1};

as our basis. It’s easy to show that the generators (S^a) act on these states as we’d expect. First, these states have spin ±(1/2) along the z-axis.

S[[3]].χ1

S[[3]].χ2

So (Subscript[χ, 1]) is spin-up, and (Subscript[χ, 2]) is spin-down.

Second, the basis states have total spin s=(1/2). Remember, if a state ψ has total spin s then we should get (S^2)ψ = s(s+1)ψ. So, if we act on either of our two basis states with (S^2)=((((S^1)))^2)+((((S^2)))^2)+((((S^3)))^2) we should get back the same state times (1/2)((1/2)+1)=(3/4):

(S[[1]].S[[1]]+S[[2]].S[[2]]+S[[3]].S[[3]]).χ1

(S[[1]].S[[1]]+S[[2]].S[[2]]+S[[3]].S[[3]]).χ2

(Notice that I’m not calling these objects “vectors”. They may look like two-component vectors, but they’re not: they are spinors. This isn’t semantics. When we’re working with representations of SO(3) we reserve the word vector for the three-component representation.)

Third, we can define the raising and lowering operators (S^±)=(S^1)±i (S^2). The raising and lowering operators act on a state (Ket[s,(Subscript[s, z])]) (which is how you’ve seen (Subscript[χ, 1]) and (Subscript[χ, 2]) represented in other contexts) as

(S^±)(Ket[s,(Subscript[s, z])]) = (Sqrt[s(s+1)-(Subscript[s, z])((Subscript[s, z])±1)])(Ket[s,(Subscript[s, z])±1])

Since (Subscript[s, z])= ±(1/2), only a few things can happen. (SuperPlus[S]) should annihilate the spin-up state and (SuperMinus[S]) should annihilate the spin-down state, (SuperPlus[S]) should raise the spin-down state into a spin-up state, and (SuperMinus[S]) should lower the spin-up state into the spin-down state.

(S[[1]]+I*S[[2]]).χ1

(S[[1]]+I*S[[2]]).χ2

(S[[1]]-I*S[[2]]).χ1

(S[[1]]-I*S[[2]]).χ2

It works! What about the full transformation matrices? How do they affect our spinor basis?

FullSimplify[T[{θ1,θ2,θ3}].χ1,Assumptions-> θ1>0&&θ2>0&&θ3>0]//MatrixForm

FullSimplify[T[{θ1,θ2,θ3}].χ2,Assumptions-> θ1>0&&θ2>0&&θ3>0]//MatrixForm

This isn't too illuminating! Play around with these, consider simpler transformations, and see if you can get a feel for how they behave. (For instance, start by setting all but one of the transformation parameters to zero.)