According to theory of angular momentum here, this must equal one. What's wrong?

If[-5 <= (m1 + m2) <= 5, 
ClebschGordan[{3, m1}, {4, m2}, {5, m1 + m2}] ClebschGordan[{3, 
m1}, {4, m2}, {5, m1 + m2}], 0], {m1, -3, 3}, {m2, -4, 4}]] 

Or one more example. It should coincide with null after after launching. I am exhausted to rack my brains what's gonna wrong?!

    << Notation`

RowBox[{"j1_", ",", 
RowBox[{"m1_", ";", "j2_"}], ",", "m2_"}], 
RowBox[{"j3_", ",", "m3_"}]]] \[DoubleLongLeftRightArrow] 
RowBox[{"ClebschGordan", "[", 
RowBox[{"j1_", ",", "m1_"}], "}"}], ",", 
RowBox[{"j2_", ",", "m2_"}], "}"}], ",", 
RowBox[{"j3_", ",", "m3_"}], "}"}]}], "]"}]]]

AddInputAlias[{"3j" -> ParsedBoxWrapper[
GridBox[{{"\[Placeholder]", "\[Placeholder]", "\[Placeholder]"}, {
"\[Placeholder]", "\[Placeholder]", "\[Placeholder]"}}], 
RowBox[{"3", "j"}]]], "Cl" -> ParsedBoxWrapper[
RowBox[{"j1", ",", 
RowBox[{"m1", ";", "j2"}], ",", "m2"}], 
RowBox[{"j3", ",", "m3"}]]]}]

sumf[j1_, j2_, M1_, M2_, m1_, m2_] := 
Assuming[{j1 >= 0, j1 >= m1 >= -j1, j2 >= 0, j2 >= m2 >= -j2}, 
Sum[If[j3 >= Abs[m1 + m2] && j3 >= Abs[M1 + M2], \!\(
\*SubsuperscriptBox[\(C\), \(j1, m1; j2, m2\), \(j3, m1 + m2\)] 
\*SubsuperscriptBox[\(C\), \(j1, M1; j2, M2\), \(j3, M1 + M2\)]\), 
0], {j3, Abs[j1 - j2], j1 + j2}]]

Timing[sumf[8, 4, 3, 2, 2, 1] // N]
  • $\begingroup$ You can increase the readability by getting rid of the SubscriptBox & RowBoxs $\endgroup$ – Sektor Mar 30 '14 at 15:57

You are not using the right formula, Mathematica has nothing to do with this. When you do the summation, you have to keep the z-projection of the angular momentum fixed for the total momenta (of both initial and final state). The meaning of getting one is that you have both the angular momentum conserved, and the decomposition of unity, when you sum over all possible ways of how the state of the system of two non-interacting sub-systems can be decomposed. So, this is basically just a completeness and orthogonality relation for a particular change of basis.

So, this works all right:

Quiet @ Outer[
    Function[{m, mp}, 
         If[-5 <= (m1 + m2) <= 5, 
            ClebschGordan[{3, m1}, {4, m2}, {5, m}] ClebschGordan[{3, m1}, {4, m2}, {5, mp}]
         {m1, -3, 3}, {m2, -4, 4}
    Range[-5, 5], Range[-5, 5]
] == IdentityMatrix[11]

(* True *)

In your case, you get 11 instead of 1, because you effectively contract the Kroneker delta - effectively you compute something like Trace[IdentityMatrix[11]]. Or at least so this looks to me upon a rather superficial look at it (has been almost 20 years since I've done anything with Clebsh - Gordan).


In addition to what Leonid wrote, here is the orthogonality relation that you may be looking for:

 {l = 4,
  s = 3},
 U = Flatten[Table[
      ClebschGordan[{l, ml}, {s, ms}, {j, m}],
      {ml, l, -l, -1}, {ms, s, -s, -1}]],
    {j, l + s, l - s, -1}, {m, j, -j, -1}], 1];
 Transpose[U].U == U.Transpose[U] == 
  IdentityMatrix[(2 l + 1) (2 s + 1)]


Here I defined angular momenta of the product states to be l and s with $l \ge s$, and calculate the matrix U that implements the basis transformation from the product states to the total-angular momentum states. To suppress the warnings about z components not adding up, I used the first line above instead of Quiet. This turns the warnings off for all subsequent calculations.

The result True says that the matrix U is unitary. In fact, it is real and therefore orthogonal.

In the Table, I went in descending order of the z quantum numbers (not required, just a common convention).

  • $\begingroup$ Thank you, guys. You are absolutely right. $\endgroup$ – David Mar 31 '14 at 13:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.