Skip to main content
5 of 12
Different definition with the same properties used. Gives different result.
Jens
  • 97.9k
  • 7
  • 215
  • 510

Below is a temporary answer that does implement all the commutation relations specified in the question but probably is not what the question really is asking for. I hope to get more information to address the more algebraic issues.

Since you're specifically asking about $SU(2)$, we have a convenient representation in the form of the $2\times 2$ Pauli matrices. This makes it seem very beneficial to map your problem onto a matrix multiplication. Here is how you can do it.

First I define the three single spin matrices, then embed them into the product space of the $N$ spin system using the functions sZ, sPlus and sMinus which take the dimension N as the first argument and the site index j as the second argument.

There is an ambiguity here in that we can come up with different ways of defining the larger matrices satisfying the given commutation relations. But I will use some additional physics to assume that we are working in the $2^N$ dimensional space of spins of the sites. This means I will use KroneckerProduct to construct matrices that act like the identity on all but one spin, and there will be an identity of dimension $2^N$ that multiplies the factors $1/4$ in your expression, too. Adding this, I get the following:

{sx, sy, sz} = 1/2 PauliMatrix[{1, 2, 3}];

sP = sx + I sy;

sM = sx - I sy;

sZ[n_, j_] := 
 KroneckerProduct @@ 
  Insert[Table[IdentityMatrix[2], {n - 1}], sz, Mod[j, n, 1]]

sPlus[n_, j_] := 
 KroneckerProduct @@ 
  Insert[Table[IdentityMatrix[2], {n - 1}], sP, Mod[j, n, 1]]

sMinus[n_, j_] := 
 KroneckerProduct @@ 
  Insert[Table[IdentityMatrix[2], {n - 1}], sM, Mod[j, n, 1]]

id[n_] := KroneckerProduct @@ Table[IdentityMatrix[2], {n}]

Now verify for an example (site 1 in a 2-spin system) that the commutation relations hold, including the boundary condition that maps j=3 to j=1:

sZ[2, 3].sPlus[2, 1] - sPlus[2, 1].sZ[2, 1] == sPlus[2, 1]

(* ==> True *)

sZ[2, 1].sMinus[2, 1] - sMinus[2, 1].sZ[2, 1] == -sMinus[2, 1]

(* ==> True *)

sPlus[2, 1].sMinus[2, 1] - sMinus[2, 1].sPlus[2, 1] == 
 2 sZ[2, 1]

(* ==> True *)

Finally, define the commutator and the two operators of interest:

comm[a_, b_] := a.b - b.a

a = With[{n = 3},
   Sum[j (Δ (sZ[n, j].sZ[n, j + 1] - 
          1/4 id[n]) + 
       1/2 (sPlus[n, j].sMinus[n, j + 1] + 
          sMinus[n, j].sPlus[n, j + 1])), {j, 1, n}]];

b = With[{n = 3},
   Sum[Δ (sZ[n, j].sZ[n, j + 1] - 
        1/4 id[n]) + 
     1/2 (sPlus[n, j].sMinus[n, j + 1] + 
        sMinus[n, j].sPlus[n, j + 1]), {j, 1, n}]];

comm[a, b]

(*
==> {{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1/2 - Δ/2, 0,
   1/4 - Δ/4, 0, 0, 0}, {0, -(1/2) + Δ/2, 
  0, 0, -(1/4) + Δ/4, 0, 0, 0}, {0, 0, 0, 0, 0, 
  1/4 - Δ/4, -(1/4) + Δ/4, 
  0}, {0, -(1/4) + Δ/4, 1/4 - Δ/4, 0, 0, 
  0, 0, 0}, {0, 0, 0, -(1/4) + Δ/4, 0, 
  0, -(1/2) + Δ/2, 0}, {0, 0, 0, 
  1/4 - Δ/4, 0, 1/2 - Δ/2, 0, 0}, {0, 0, 
  0, 0, 0, 0, 0, 0}}
*)

This is the result for the commutator.

Jens
  • 97.9k
  • 7
  • 215
  • 510