Mathematica Asked on March 11, 2021
According to theory of angular momentum here, this must equal one. What’s wrong?
Timing[Sum[
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`
Notation[ParsedBoxWrapper[
SubsuperscriptBox["C",
RowBox[{"j1_", ",",
RowBox[{"m1_", ";", "j2_"}], ",", "m2_"}],
RowBox[{"j3_", ",", "m3_"}]]] [DoubleLongLeftRightArrow]
ParsedBoxWrapper[
RowBox[{"ClebschGordan", "[",
RowBox[{
RowBox[{"{",
RowBox[{"j1_", ",", "m1_"}], "}"}], ",",
RowBox[{"{",
RowBox[{"j2_", ",", "m2_"}], "}"}], ",",
RowBox[{"{",
RowBox[{"j3_", ",", "m3_"}], "}"}]}], "]"}]]]
AddInputAlias[{"3j" -> ParsedBoxWrapper[
SubscriptBox[
RowBox[{"(",
GridBox[{{"[Placeholder]", "[Placeholder]", "[Placeholder]"}, {
"[Placeholder]", "[Placeholder]", "[Placeholder]"}}],
")"}],
RowBox[{"3", "j"}]]], "Cl" -> ParsedBoxWrapper[
SubsuperscriptBox["C",
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]
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},
Sum[
If[-5 <= (m1 + m2) <= 5,
ClebschGordan[{3, m1}, {4, m2}, {5, m}] ClebschGordan[{3, m1}, {4, m2}, {5, mp}]
,
0
],
{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).
Correct answer by Leonid Shifrin on March 11, 2021
In addition to what Leonid wrote, here is the orthogonality relation that you may be looking for:
Off[ClebschGordan::phy];
With[
{l = 4,
s = 3},
U = Flatten[Table[
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)]
]
True
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).
Answered by Jens on March 11, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP