(* ::Package:: *) (* Rechnernutzung in der Physik, WS23/24 Addition von Drehimpulsen Aufgabenstellung: Gegeben seien zwei Drehimpulsoperatoren, J1 und J2, die miteinander kommutieren. Die Eigenwertgleichungen lauten J1^2|j1,m1> = j1(j1+1)|j1,m1>, J1z|j1,m1> = m1|j1,m1> und J2^2|j2,m2> = j2(j2+1)|j2,m2>, J2z|j2,m2> = m2|j2,m2>. Dann gibt es eine gemeinsame Eigenbasis der Operatoren J1^2, J1z, J2^2,J2z, die mit |j1,m1;j2,m2> bezeichnet werden soll. Auf der anderen Seite gibt es den Drehimpulsoperator J = J1 + J2 mit den Eigenvektoren |j,m>. Daher muss es moeglich sein, fuer gegebenes j1 und j2, die Zustaende |j,m> als Linearkombination von |j1,m1; j2,m2> zu waehlen welche dann Eigenzustaende von J^2 und Jz sind. Dieses Problem wird als "Addition von Drehimpulsen" bezeichnet. Vorueberlegungen: - Es gilt: m = m1 + m2, da Jz = J1z + J2z. - Es gibt einen Zustand mit m = j1 + j2, zwei Zustaende mit m = j1 + j2 - 1, etc. - Die Anzahl der Zustaende nimmt zu bis m = |j1 - j2| erreicht ist; danach bleibt die Anzahl konstant bis m = - |j1 - j2|. Danach nimmt die Anzahl der Zustaende ab; bei m = - j1 - j2 gibt es wieder nur einen Zustand. - Der maximale Drehimpuls, den man mit der Addition von J1 und J2 erreichen kann, ist j = j1 + j2. - Betrachten wir nun die zwei Zustaende fuer m = j1 + j2 - 1: Einer davon gehoert zu j = j1 + j2, der andere zur maximalen Projektion (d.h. max. m) fuer den Drehimpuls j = j1 + j2 - 1. - Insgesamt kann der Drehimpuls die Werte j = j1 + j2 bis j = |j1 - j2| mit Schrittweite "1" annehmen. - Notation in der Mathematica-Routine: ket[m1,m2] == |j1,m1; j2,m2> KET[j,m] == |j,m> Jm[] == J- Jm[k_] := Expand[ k /. {ket[m1_,m2_]-> Sqrt[ (j1-m1+1)*(j1+m1) ] * ket[m1-1,m2] + Sqrt[ (j2-m2+1)*(j2+m2) ] * ket[m1,m2-1]}]; Fuer m1 = j1 und m2 = j2 gilt: KET[ j1+j2, j1+j2] = ket[ j1, j2]. Algorithmus: - Startpunkt m = j1 + j2. - Das entspricht dem Zustand | j1,j1; j2,j2> mit j=j1+j2. Damit ist dieser Zustand gleich |j1+j2, j1+j2>: | j1,j1; j2,j2> = |j1+j2, j1+j2> - Wir operieren nun wiederholt mit dem Leiteroperator J- = J1- + J2- und konstruieren somit Schritt fuer Schritt alle Zust\[ADoubleDot]nde mit j=j1+j2. Normierung beachten: J- |j,m+1> = Sqrt[ (j-m)(j+m+1) ] |j,m> - Danach erniedrigen wir j um "1". Waehle den (neuen) Startpunkt |j,j> so, dass er orthogonal zu allen schon konstruierten Zustaenden mit gleichem m ist. Das wird folgendermassen erreicht: 1. Waehle |j,j-j2; j2,j2> = ket[j-j2,j2]. 2. Subtrahiere die Komponenten in die Richtungen aller bisher konstruierten Zustaende. 3. Normiere den Zustand. - Wende im naechsten Schritt wieder J- an, um die Zustaende mit niedrigerem m zu konstruieren. - j wird solange erniedrigt bis | j1 - j2 | erreicht ist. Implementierung: AddJ Input: Drehimpulse j1 und j2 Ausgabe: KET[j,m] == |j,m> als Linearkombination von ket[m1,m2] == |j1,m1; j2,m2> Jm: lokale Funktion. Operator J- sp: Skalarprodukt von zwei ket[m1,m2] == |j1,m1; j2,m2> *) (* ::Input:: *) (*(* Beispiel zu "Graphics" *)*) (*Graphics[ { Line[{{1,1},{2,2}}],*) (* Disk[{1.5,1.5},.1],*) (* Text["Linie mit \"Klecks\"",{1,2}]}]*) (* Zeichne moegliche Zustaende in m2-m-Ebene: *) (Fig[j1_,j2_]:= If[j1j1 := AddJ[j2,j1]; (AddJ[j1_,j2_] := Module[ {KET,j,J,m,Jm,sp}, (* J-: *) Jm[k_] := Expand[ k /. {ket[m1_,m2_]-> Sqrt[ (j1-m1+1)*(j1+m1) ] * ket[m1-1,m2]+ Sqrt[ (j2-m2+1)*(j2+m2) ] * ket[m1,m2-1]}]; (* Skalarprodukt von 2 Zust\[ADoubleDot]nden ket[m1,m2] = |j1,m1; j2,m2>: *) sp[k1_,k2_] := Expand[ k1 * k2 ] /.{ket[m1_,m2_]^2->1,ket[m1_,m2_]*ket[M1_,M2_]->0}; Do[ KET[j,j]=ket[j-j2,j2]; (* Subtrahiere die Komponenten in die Richtungen aller bisher konstruierten Zust\[ADoubleDot]nde. *) Do[ KET[j,j]=KET[j,j] - Expand[sp[KET[j,j],KET[J,j]]*KET[J,j]], {J,j1+j2,j+1,-1}]; (* Gebe (normierten) Zustand aus. Beachte: KET[j,j] ist ausgedr\[UDoubleDot]ckt durch ket[m1,m2] *) Print["KET[",j,",",j,"] = ", KET[j,j] = Expand[KET[j,j] / Sqrt[sp[KET[j,j],KET[j,j]]]]]; (* Wende J- an, um alle Zust\[ADoubleDot]nde KET[j,m] mit m