Lorentztransformation (Boost) - grafische Darstellung

Franz Embacher, Fakultät für Physik der Universität Wien, 2012

Dieses Notebook zeigt die zweidimensionalen Minkowski-Diagramme bezüglich
	◼ Alices Inertialsystem (Raumzeit-Koordinaten x und c t) und
	◼ Bobs Inertialsystem (Raumzeit-Koordinaten x' und c t')
nebeneinander an. Die Relativgeschwindigkeit v (Geschwindigkeit von Bobs Koordinatenursprung in Alices Inertialsystem) kann interaktiv mit einem Schieberegler eingestellt werden.

Ereignisse und Linien (Strecken zwischen Ereignissen) können wahlweise aus Alices oder aus Bobs Sicht angegeben werden und werden (in den angegebenen Farben und Styles) in beiden Diagrammen angezeigt. Bobs Raumzeit-Achsen sind in Alices Diagram in grau dargestellt und umgekehrt.

Gezeigt sind hier die Zeitdilatation, die Lorentzkontraktion, das Hühnerstall-Paradoxon, der relativistische Dopplereffekt und die relativistische Geschwindigkeitsaddition. Um sie anzusehen, führen Sie die entsprechenden Zellen mit  Shift Enter  aus!

Um andere Szenarien einzugeben, kopieren Sie am besten einen ganzen Abschnitt und fügen Ihre eigenen Ereignisse und Linien ein. Ereigniskoordinaten werden am günstigsten zwischen -5 und 5 gewählt.

Zeitdilatation

Module[{ereignisse,linien,ereignis,linie,PointAlice,LineAlice,PointBob,LineBob,diagramm},(ereignisse={}; ereignis[daten_]:=ereignisse=Append[ereignisse,daten];
linien={}; linie[daten_]:=linien=Append[linien,daten];
(* --------------------------------------------------------------------------------------------------- *)
(* Eingabe von Ereignissen und Linien aus Alices bzw. Bobs Sicht *)
ereignis[{PointSize[0.015],Red,PointBob[{0,0}]}]; (* Tick *)
ereignis[{PointSize[0.015],Red,PointBob[{0,4}]}]; (* Tack: 4 Zeiteinheiten nach Tick *)
ereignis[{PointSize[0.015],Blue,PointAlice[{0,4}]}];  (* t=4-Markierung auf Alices t-Achse *)
linie[{Thin,Green,LineBob[{{0,0},{0,4}}]}]; (* Weltlinie der Uhr zwischen Tick und Tack *)
linie[{Thin,Orange,LineAlice[{{0,0},{0,4}}]}]; (* Weltlinie einer Uhr in Alices Ursprung *)
linie[{Thick,Black,Dotted,LineAlice[{{-5,4},{5,4}}]}]; (* für Alice gleichzeitige Ereignisse *)
linie[{Thick,RGBColor[0.5,0,0],Dotted,LineBob[{{-5,4},{5,4}}]}]; (* für Bob gleichzeitige Ereignisse *)
(* Eingabe Ende *)
(* --------------------------------------------------------------------------------------------------- *)
boost[{t_,x_},v_]:={((t-v x)/(Sqrt[1-(v^2)])),((x-v t)/(Sqrt[1-(v^2)]))};
boostListe[punktliste_,v_]:=Table[boost[punktliste[[j]],v],{j,1,Length[punktliste]}];
PointBoost[v_][p_]:=Point[boost[p,v]];
LineBoost[v_][l_]:=Line[boostListe[l,v]];
xAchse={Thin,Black,Arrow[boostListe[{{-6,0},{6,0}},0]]};
tAchse={Thin,Black,Arrow[boostListe[{{0,-6},{0,6}},0]]};
xStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{-6,0},{6,0}},v]]};
tStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{0,-6},{0,6}},v]]};
diagramm[v_]:=GraphicsGrid[{{
Graphics[Join[xStrichAchse[-v],tStrichAchse[-v],xAchse,tAchse,linien,ereignisse]/.{PointAlice->Point,LineAlice->Line,PointBob->PointBoost[-v],LineBob->LineBoost[-v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Alice"],
Graphics[Join[xStrichAchse[v],tStrichAchse[v],xAchse,tAchse,linien,ereignisse]/.{PointBob->Point,LineBob->Line,PointAlice->PointBoost[v],LineAlice->LineBoost[v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Bob"]}},
ImageSize->750];
Manipulate[diagramm[v],{{v,(1/2),"v/c"},-0.9,0.9,Appearance->"Labeled"}])]

Lorentzkontraktion

Module[{ereignisse,linien,ereignis,linie,PointAlice,LineAlice,PointBob,LineBob,diagramm},(ereignisse={}; ereignis[daten_]:=ereignisse=Append[ereignisse,daten];
linien={}; linie[daten_]:=linien=Append[linien,daten];
(* --------------------------------------------------------------------------------------------------- *)
(* Eingabe von Ereignissen und Linien aus Alices bzw. Bobs Sicht *)
ereignis[{PointSize[0.015],Red,PointBob[{0,0}]}]; (* Linke Stabmarkierung bei t'=0 *)
ereignis[{PointSize[0.015],Red,PointBob[{4,0}]}]; (* Rechte Stabmarkierung bei t'=0 *)
ereignis[{PointSize[0.015],Blue,PointAlice[{4,0}]}];  (* x=4-Markierung auf Alices x-Achse *)

linie[{Thick,Black,LineBob[{{0,-4},{0,4}}]}]; (* Weltlinie des linken Stabendes *)
linie[{Thick,Black,LineBob[{{4,-4},{4,4}}]}]; (* Weltlinie des rechten Stabendes *)
linie[{Thin,Orange,LineBob[{{0,0},{4,0}}]}]; (* Bobs Längenmessung *)
linie[{Thick,Black,Dotted,LineAlice[{{-5,0},{5,0}}]}]; (* für Alice gleichzeitige Ereignisse (t=0) *)
linie[{Thick,RGBColor[0.5,0,0],Dotted,LineBob[{{-5,0},{5,0}}]}]; (* für Bob gleichzeitige Ereignisse (t'=0) *)
(* Eingabe Ende *)
(* --------------------------------------------------------------------------------------------------- *)
boost[{t_,x_},v_]:={((t-v x)/(Sqrt[1-(v^2)])),((x-v t)/(Sqrt[1-(v^2)]))};
boostListe[punktliste_,v_]:=Table[boost[punktliste[[j]],v],{j,1,Length[punktliste]}];
PointBoost[v_][p_]:=Point[boost[p,v]];
LineBoost[v_][l_]:=Line[boostListe[l,v]];
xAchse={Thin,Black,Arrow[boostListe[{{-6,0},{6,0}},0]]};
tAchse={Thin,Black,Arrow[boostListe[{{0,-6},{0,6}},0]]};
xStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{-6,0},{6,0}},v]]};
tStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{0,-6},{0,6}},v]]};
diagramm[v_]:=GraphicsGrid[{{
Graphics[Join[xStrichAchse[-v],tStrichAchse[-v],xAchse,tAchse,linien,ereignisse]/.{PointAlice->Point,LineAlice->Line,PointBob->PointBoost[-v],LineBob->LineBoost[-v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Alice"],
Graphics[Join[xStrichAchse[v],tStrichAchse[v],xAchse,tAchse,linien,ereignisse]/.{PointBob->Point,LineBob->Line,PointAlice->PointBoost[v],LineAlice->LineBoost[v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Bob"]}},
ImageSize->750];
Manipulate[diagramm[v],{{v,(1/2),"v/c"},-0.9,0.9,Appearance->"Labeled"}])]

Hühnerstall-Paraxodon

Module[{ereignisse,linien,ereignis,linie,PointAlice,LineAlice,PointBob,LineBob,diagramm},(ereignisse={}; ereignis[daten_]:=ereignisse=Append[ereignisse,daten];
linien={}; linie[daten_]:=linien=Append[linien,daten];
(* --------------------------------------------------------------------------------------------------- *)
(* Eingabe von Ereignissen und Linien aus Alices bzw. Bobs Sicht *)
linie[{Thick,Black,LineBob[{{0,-4.5},{0,4.5}}]}]; (* Linkes Ende des Hühnerstalls *)
linie[{Thick,Black,LineBob[{{4,-4.5},{4,5.5}}]}]; (* Rechtes Ende des Hühnerstalls *)

linie[{Thin,Red,LineAlice[{{0,-4.5},{0,4.5}}]}]; (* Linkes Ende der Leiter *)
linie[{Thin,Red,LineAlice[{{4,-4.5},{4,4.5}}]}]; (* Rechtes Ende der Leiter *)

linie[{Thick,Red,Dotted,LineAlice[{{0,-4},{4,-4}}]}]; (* Leiter für Alice  bei t=-4 *)
linie[{Thick,Red,Dotted,LineAlice[{{0,-3},{4,-3}}]}]; (* Leiter für Alice  bei t=-3 *)
linie[{Thick,Red,Dotted,LineAlice[{{0,-2},{4,-2}}]}]; (* Leiter für Alice  bei t=-2 *)
linie[{Thick,Red,Dotted,LineAlice[{{0,-1},{4,-1}}]}]; (* Leiter für Alice  bei t=-1 *)
linie[{Thick,Red,Dotted,LineAlice[{{0,0},{4,0}}]}]; (* Leiter für Alice  bei t=0 *)
linie[{Thick,Red,Dotted,LineAlice[{{0,1},{4,1}}]}]; (* Leiter für Alice  bei t=1 *)
linie[{Thick,Red,Dotted,LineAlice[{{0,2},{4,2}}]}]; (* Leiter für Alice  bei t=2 *)
linie[{Thick,Red,Dotted,LineAlice[{{0,3},{4,3}}]}]; (* Leiter für Alice  bei t=3 *)
(* Eingabe Ende *)
(* --------------------------------------------------------------------------------------------------- *)
boost[{t_,x_},v_]:={((t-v x)/(Sqrt[1-(v^2)])),((x-v t)/(Sqrt[1-(v^2)]))};
boostListe[punktliste_,v_]:=Table[boost[punktliste[[j]],v],{j,1,Length[punktliste]}];
PointBoost[v_][p_]:=Point[boost[p,v]];
LineBoost[v_][l_]:=Line[boostListe[l,v]];
xAchse={Thin,Black,Arrow[boostListe[{{-6,0},{6,0}},0]]};
tAchse={Thin,Black,Arrow[boostListe[{{0,-6},{0,6}},0]]};
xStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{-6,0},{6,0}},v]]};
tStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{0,-6},{0,6}},v]]};
diagramm[v_]:=GraphicsGrid[{{
Graphics[Join[xStrichAchse[-v],tStrichAchse[-v],xAchse,tAchse,linien,ereignisse]/.{PointAlice->Point,LineAlice->Line,PointBob->PointBoost[-v],LineBob->LineBoost[-v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Alice"],
Graphics[Join[xStrichAchse[v],tStrichAchse[v],xAchse,tAchse,linien,ereignisse]/.{PointBob->Point,LineBob->Line,PointAlice->PointBoost[v],LineAlice->LineBoost[v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Bob"]}},
ImageSize->750];
Manipulate[diagramm[v],{{v,-(1/2),"v/c"},-0.9,0.9,Appearance->"Labeled"}])]

Relativistischer Dopplereffekt

Module[{ereignisse,linien,ereignis,linie,PointAlice,LineAlice,PointBob,LineBob,diagramm},(ereignisse={}; ereignis[daten_]:=ereignisse=Append[ereignisse,daten];
linien={}; linie[daten_]:=linien=Append[linien,daten];
(* --------------------------------------------------------------------------------------------------- *)
(* Eingabe von Ereignissen und Linien aus Alices bzw. Bobs Sicht *)
ereignis[{PointSize[0.015],Red,PointBob[{4,-5}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,-4}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,-3}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,-2}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,-1}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,0}]}]; (* Sendersignale mit Frequenz 1 *)
ereignis[{PointSize[0.015],Red,PointBob[{4,1}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,2}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,3}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,4}]}];
ereignis[{PointSize[0.015],Red,PointBob[{4,5}]}];

linie[{Thin,Blue,Dashed,LineBob[{{4,-5},{4,-5}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,-4},{4,-4}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,-3},{4,-3}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,-2},{4,-2}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,-1},{4,-1}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,0},{4,0}+{-8,8}}]}]; (* Lichtsignale *)
linie[{Thin,Blue,Dashed,LineBob[{{4,1},{4,1}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,2},{4,2}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,3},{4,3}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,4},{4,4}+{-8,8}}]}];
linie[{Thin,Blue,Dashed,LineBob[{{4,5},{4,5}+{-8,8}}]}];

ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,-5}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,-4}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,-3}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,-2}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,-1}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,0}]}]; (* Empfängerfrequenz 1, zum Vergleich *)
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,1}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,2}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,3}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,4}]}];
ereignis[{PointSize[0.015],RGBColor[0,0.7,0],PointAlice[{0,5}]}];
(* Eingabe Ende *)
(* --------------------------------------------------------------------------------------------------- *)
boost[{t_,x_},v_]:={((t-v x)/(Sqrt[1-(v^2)])),((x-v t)/(Sqrt[1-(v^2)]))};
boostListe[punktliste_,v_]:=Table[boost[punktliste[[j]],v],{j,1,Length[punktliste]}];
PointBoost[v_][p_]:=Point[boost[p,v]];
LineBoost[v_][l_]:=Line[boostListe[l,v]];
xAchse={Thin,Black,Arrow[boostListe[{{-6,0},{6,0}},0]]};
tAchse={Thin,Black,Arrow[boostListe[{{0,-6},{0,6}},0]]};
xStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{-6,0},{6,0}},v]]};
tStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{0,-6},{0,6}},v]]};
diagramm[v_]:=GraphicsGrid[{{
Graphics[Join[xStrichAchse[-v],tStrichAchse[-v],xAchse,tAchse,linien,ereignisse]/.{PointAlice->Point,LineAlice->Line,PointBob->PointBoost[-v],LineBob->LineBoost[-v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Alice"],
Graphics[Join[xStrichAchse[v],tStrichAchse[v],xAchse,tAchse,linien,ereignisse]/.{PointBob->Point,LineBob->Line,PointAlice->PointBoost[v],LineAlice->LineBoost[v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Bob"]}},
ImageSize->750,PlotLabel->Row[{"Bobs Sender befindet sich bei x' = 4 und sendet mit Frequenz (Subscript[f, Sender]) = 1. \nAlices Empfänger befindet sich in ihrem Ursprung (x = 0) und empfängt Bobs Signale mit Frequenz (Subscript[f, Empfänger]) = ",Round[(Sqrt[((1-v)/(1+v))]),0.001],If[FractionalPart[Round[(Sqrt[((1-v)/(1+v))]),0.001]]≠0,".",Null],"\n(Hier werden x und x' als dimensionslos angenommen, und es ist c = 1 gesetzt).\n"},BaseStyle->FontSize->14]];
Manipulate[diagramm[v],{{v,0.25,"v/c"},-0.9,0.9,Appearance->"Labeled"}])]

Relativistische Geschwindigkeitsaddition

Module[{ereignisse,linien,ereignis,linie,PointAlice,LineAlice,PointBob,LineBob,diagramm},(ereignisse={}; ereignis[daten_]:=ereignisse=Append[ereignisse,daten];
linien={}; linie[daten_]:=linien=Append[linien,daten];
(* --------------------------------------------------------------------------------------------------- *)
(* Eingabe von Ereignissen und Linien aus Alices bzw. Bobs Sicht *)
linie[{Thick,Red,LineBob[{{-5,-10},{5,10}}]}]; (* Weltlinie des Objekts *)
linie[{Thin,Dashed,Blue,LineBob[{{-10,-10},{10,10}}]}]; (* Weltlinie eines Lichtsignals (zum Vergleich) *)
linie[{Thin,Dashed,Blue,LineBob[{{10,-10},{-10,10}}]}]; (* Weltlinie eines Lichtsignals (zum Vergleich) *)
(* Eingabe Ende *)
(* --------------------------------------------------------------------------------------------------- *)
boost[{t_,x_},v_]:={((t-v x)/(Sqrt[1-(v^2)])),((x-v t)/(Sqrt[1-(v^2)]))};
boostListe[punktliste_,v_]:=Table[boost[punktliste[[j]],v],{j,1,Length[punktliste]}];
PointBoost[v_][p_]:=Point[boost[p,v]];
LineBoost[v_][l_]:=Line[boostListe[l,v]];
xAchse={Thin,Black,Arrow[boostListe[{{-6,0},{6,0}},0]]};
tAchse={Thin,Black,Arrow[boostListe[{{0,-6},{0,6}},0]]};
xStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{-6,0},{6,0}},v]]};
tStrichAchse[v_]:={Thin,GrayLevel[0.7],Arrow[(Sqrt[1-(v^2)])boostListe[{{0,-6},{0,6}},v]]};
diagramm[v_]:=GraphicsGrid[{{
Graphics[Join[xStrichAchse[-v],tStrichAchse[-v],xAchse,tAchse,linien,ereignisse]/.{PointAlice->Point,LineAlice->Line,PointBob->PointBoost[-v],LineBob->LineBoost[-v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Alice"],
Graphics[Join[xStrichAchse[v],tStrichAchse[v],xAchse,tAchse,linien,ereignisse]/.{PointBob->Point,LineBob->Line,PointAlice->PointBoost[v],LineAlice->LineBoost[v]},PlotRange->{{-6,6},{-6,6}},PlotLabel->"Bob"]}},
ImageSize->750,PlotLabel->Row[{"Ein Objekt (rote Weltlinie) bewegt sich in Bobs Inertialsystem mit halber Lichtgeschwindigkeit.\nSeine Geschwindigkeit in Alices Inertialsystem beträgt v = ",Round[((1/2+v)/(1+v/2)),0.001],"c.\n"},BaseStyle->FontSize->14]];
Manipulate[diagramm[v],{{v,(1/4),"v/c"},-0.9,0.9,Appearance->"Labeled"}])]