In diesem Artikel wird unter Verwendung von Python beschrieben, was in der allgemeinen Relativitätstheorie benötigt wird ・ ** Berechnung verschiedener Tensoren einschließlich des Wiegens von $ g_ {\ mu \ nu} $ ** ・ ** Einfache Berechnung der Einstein-Gleichung ** Stellen Sie vor, wie es geht.
** [Referenz] ** Für die Berechnung der Tensoranalyse und der algebraischen Berechnung in der Allgemeinen Relativitätstheorie Heinicke, C., et.al.- Computer Algebra in Gravity Korolkova, A., et.al.- Tensor computations in computer algebra systems Es gibt einige erschwingliche Übersichtsartikel wie, also beziehen Sie sich bitte auf diese. Für eine ähnliche Studie mit SageMath Gourgoulhon, E., et.al. - Symbolic tensor calculus on manifolds Usw. sind bekannt.
GraviPy ist ein Modul zur Tensorberechnung, das unter Python3 ausgeführt wird.
Durch die Zusammenarbeit mit SymPy, das auf die Symbolverarbeitung algebraischer Berechnungen spezialisiert ist, wird eine stressfreie Tensorberechnungsumgebung in Python realisiert.
Laden Sie das GraviPy-Modul einschließlich SymPy wie folgt herunter GraviPy, Tensor Calculus Package for General Relativity (Version 0.1.0) (2014) (Zugriffsdatum: 26. November 2019)
Sie können tatsächlich pip verwenden,
python
$ pip install GraviPy
Wenn es kein Problem gibt, wird es installiert. SymPy sollte gleichzeitig installiert werden, wenn die Python-Umgebung Version 3.7 oder höher ist.
Ableitung der Schwarzschild-Lösung aus der Schwarzschild-Metrik mit GraviPy.
Das Vorzeichen der Metrik ist $ (+, -, -, -) $ gemäß MTW, und das Drahtelement wird wie folgt bestimmt.
g_{\mu\nu}=\left[\begin{array}{cccc}
\Big( 1- \frac{2M}{r} \Big) & 0 & 0 & 0 \\
0 & -\Big( 1- \frac{2M}{r} \Big)^{-1} & 0 & 0 \\
0 & 0 & -r^2 & 0 \\
0 & 0 & 0 & -r^2sin^2\theta
\end{array}\right].
Hier wurde die vierdimensionale Koordinate $ (t, r, \ theta, \ phi) $ als Koordinatensystem und $ M $ als Masse des Schwarzen Lochs genommen. Die Schwarzschild-Metrik zeigt eine Singularität bei $ r = 2M $ in radialer Richtung, die als sogenannter "Ereignishorizont" bekannt ist.
Lassen Sie uns die Schwarzschild-Lösung aus dem obigen $ g_ {\ mu \ nu} $ ableiten. Verwenden Sie GraviPy, um nach dem folgenden Verfahren zu berechnen.
Definieren wir zunächst Raum und Zeit. Nehmen Sie
GR.py
#!/usr/bin/env python3
from gravipy import *
from gravipy import tensorial as ten
from sympy import *
import inspect
# Coordinates (\ chi is the four - vector of coordinates )
t, r, theta, phi, M = symbols('t , r , theta , phi , M ')
x = ten.Coordinates('\chi',[t, r, theta, phi])
Hier gibt das erste Argument "\ chi" von "ten.Coordinates ()" an, dass das zweite Argument ein quaternärer Vektor ist. Der Grund, warum es auf "zehn" gesetzt ist, ist, dass dieses "Coordinates ()" nicht funktioniert, es sei denn, es bezieht sich ausdrücklich auf das "Tensorial".
Danach werden alle erscheinenden Tensoren mit "zehn" bezeichnet.
Als nächstes definieren wir die Metrik $ g_ {\ mu \ nu} $. Die oben erwähnte Schwarzschild-Metrik kann wie folgt beschrieben werden.
GR.py
#Fortsetzung
# Metric tensor
Metric = diag((1 -2* M / r ) , -1/(1 -2* M / r ) , -r **2 , -r **2* sin( theta ) **2)
g = ten.MetricTensor('g', x , Metric )
Hier ist das Ausgabeergebnis von "g = ten.MetricTensor (" g ", x, Metric)"
Metric
#Oder
g(ten.All,ten.All)
Es kann mit angezeigt werden und wird wie folgt.
g_{\mu\nu}=
\displaystyle \left[\begin{matrix}- 2M/r + 1 & 0 & 0 & 0\\0 & \displaystyle- \frac{1}{- 2M/r + 1} & 0 & 0\\0 & 0 & - r^{2} & 0\\0 & 0 & 0 & - r^{2} \sin^{2}{\left(\theta \right)}\end{matrix}\right]
Obwohl es einige Unterschiede in der Formel gibt, wird die vorherige Definition genau wiedergegeben. Wenn Sie sich beispielsweise auf die Radialkomponente $ g_ {rr} = g_ {11} $ beziehen
g(1,1)
Dann kann es für jedes Element wie folgt erhalten werden.
g_{11}=- \frac{1}{\displaystyle- \frac{2M}{r} + 1}
Als nächstes berechnen wir das Christophel-Symbol $ \ Gamma ^ \ mu {} _ {\ nu \ rho} $ basierend auf $ g_ {\ mu \ nu} $.
GR.py
#Fortsetzung
# Christoffel symbol
Ga = ten.Christoffel('Ga', g )
Ga
ist das Christophel-Symbol für $ g_ {\ mu \ nu} $. Christophel ist ein Tensor im 3. Stock. Wenn Sie ihn also auf $ \ mu = 0 $ beschränken, erhalten Sie den folgenden Tensor im 2. Stock.
\Gamma^{ 0}{}_{\nu\rho}=
\left[
\begin{matrix}
0 & \frac{M}{r^{2}} & 0 & 0 \\
\frac{M}{r^{2}} & 0 & 0 & 0 \\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 0
\end{matrix}\right]
Um alle Zutaten zu bekommen
Ga(ten.All,ten.All,ten.All)
Sie können es als tun
\displaystyle
\Gamma^\mu{}_{\nu\rho}=
\left[\begin{matrix}\left[\begin{matrix}0 & \frac{M}{r^{2}} & 0 & 0\\\frac{M}{r^{2}} & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 0\end{matrix}\right] & \left[\begin{matrix}- \frac{M}{r^{2}} & 0 & 0 & 0\\0 & \frac{M}{\left(2 M - r\right)^{2}} & 0 & 0\\0 & 0 & r & 0\\0 & 0 & 0 & r \sin^{2}{\left(\theta \right)}\end{matrix}\right] & \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & - r & 0\\0 & - r & 0 & 0\\0 & 0 & 0 & \frac{r^{2} \sin{\left(2 \theta \right)}}{2}\end{matrix}\right] & \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & 0 & - r \sin^{2}{\left(\theta \right)}\\0 & 0 & 0 & - \frac{r^{2} \sin{\left(2 \theta \right)}}{2}\\0 & - r \sin^{2}{\left(\theta \right)} & - \frac{r^{2} \sin{\left(2 \theta \right)}}{2} & 0\end{matrix}\right]\end{matrix}\right]
Wird sein. Da es sich um einen Tensor dritter Ordnung handelt, kann er formal als "eindimensionales Array zweidimensionaler Arrays" erhalten werden (= eine Form, in der die Elemente des eindimensionalen Arrays zweidimensionale Arrays sind).
Berechnen Sie als nächstes den fetten Tensor. (Dieser Name stammt vom Mathematiker Ricci.)
# Ricci tensor
Ri = ten.Ricci ('Ri ', g )
# Display all compon
Ri(ten.All,ten.All)
Der Ricci-Tensor in der Schwarzschild-Metrik lässt alle Komponenten auf Null fallen.
R_{\mu\nu}=
\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 0\end{matrix}\right]
Dies ist natürlich eine besondere Sache in der Schwarzschild-Metrikformel.
Lassen Sie uns abschließend den Einstein-Tensor mit dem Rich-Tensor ausgeben.
# Einstein tensor
G = ten.Einstein ('G', Ri )
G(ten.All,ten.All)
Ergebnis ist,
G_{\mu\nu}=
\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 0\end{matrix}\right]
Es ist geworden. Dieses Ergebnis ist die Annahme der Schwarzschild-Lösung, ** Vakuumbedingung **
Das GraviPy-Tutorial wurde veröffentlicht, und ich habe auf Folgendes verwiesen.
https://github.com/wojciechczaja/GraviPy
Die Support-Seite von SymPy finden Sie weiter unten.
[https://docs.sympy.org/dev/index.html] (https://docs.sympy.org/dev/index.html)
Recommended Posts