Dans cet article, en utilisant Python, ce qui est nécessaire dans la théorie de la relativité générale ・ ** Calcul de divers tenseurs dont le pesage $ g_ {\ mu \ nu} $ ** ・ ** Calcul simple de l'équation d'Einstein ** Présentez comment faire.
** [Référence] ** Pour le calcul lié à l'analyse tenseur et au calcul algébrique en relativité générale, Heinicke, C., et.al.- Computer Algebra in Gravity Korolkova, A., et.al.- Tensor computations in computer algebra systems Il existe des articles de revue abordables tels que, veuillez donc vous y référer le cas échéant. De plus, pour une étude similaire utilisant SageMath, Gourgoulhon, E., et.al. - Symbolic tensor calculus on manifolds Etc. sont connus.
GraviPy est un module de calcul tensoriel qui s'exécute sur Python3.
En collaborant avec SymPy, spécialisé dans le traitement des symboles des calculs algébriques, un environnement de calcul tensoriel sans contrainte peut être réalisé sur Python.
Téléchargez le module GraviPy, y compris SymPy, comme suit GraviPy, Tensor Calculus Package for General Relativity (Version 0.1.0) (2014) (Date d'accès: 26 novembre 2019)
Vous pouvez réellement utiliser pip,
python
$ pip install GraviPy
S'il n'y a pas de problème, il sera installé. SymPy doit être installé en même temps si l'environnement Python est ver.3.7 ou supérieur.
Dérivation de la solution Schwarzschild à partir de la métrique Schwarzschild à l'aide de GraviPy.
Le signe de la métrique est $ (+, -, -, -) $ selon MTW, et l'élément filaire est déterminé comme suit.
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].
Ici, la coordonnée à quatre dimensions $ (t, r, \ theta, \ phi) $ a été prise comme système de coordonnées, et $ M $ a été prise comme masse du trou noir. La métrique de Schwarzschild montre une singularité à $ r = 2M $ dans la direction radiale, qui est connue sous le nom de "Event Horizon".
Dérivons la solution de Schwarzschild à partir de $ g_ {\ mu \ nu} $ ci-dessus. Utilisez GraviPy pour calculer selon le processus suivant.
Tout d'abord, définissons l'espace et le temps. Prenez
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])
Ici, le premier argument '\ chi'
de dix.Coordinates ()
spécifie que le deuxième argument est un vecteur quaternaire. De plus, la raison pour laquelle il est réglé sur dix. ~
Est que ce Coordinates ()
ne fonctionne pas sauf s'il fait explicitement référence au tensoriel
.
Après cela, tous les tenseurs qui apparaissent seront désignés par «dix. ~».
Ensuite, définissons la métrique $ g_ {\ mu \ nu} $. La métrique de Schwarzschild mentionnée ci-dessus peut être décrite comme suit.
GR.py
#A continué
# 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 )
Ici, le résultat de sortie de g = dix.MetricTensor ('g', x, Metric)
est
Metric
#Ou
g(ten.All,ten.All)
Il peut être affiché avec, et il devient comme suit.
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]
Bien qu'il existe certaines différences dans la formule, la définition précédente est reflétée avec précision. Par exemple, en se référant à la composante radiale $ g_ {rr} = g_ {11} $
g(1,1)
Ensuite, il peut être obtenu pour chaque élément comme suit.
g_{11}=- \frac{1}{\displaystyle- \frac{2M}{r} + 1}
Ensuite, calculons le symbole Christophel $ \ Gamma ^ \ mu {} _ {\ nu \ rho} $ basé sur $ g_ {\ mu \ nu} $.
GR.py
#A continué
# Christoffel symbol
Ga = ten.Christoffel('Ga', g )
Ga
est le symbole Christophel pour $ g_ {\ mu \ nu} $. Christophel est un tenseur du 3e étage, donc si vous le limitez à $ \ mu = 0 $, vous obtiendrez le tenseur du 2e étage suivant.
\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]
Pour obtenir tous les ingrédients
Ga(ten.All,ten.All,ten.All)
Vous pouvez le faire comme
\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]
Sera. Puisqu'il s'agit d'un tenseur du troisième ordre, il peut être formellement obtenu sous la forme d'un "tableau unidimensionnel de tableaux à deux dimensions" (= une forme dans laquelle les éléments du tableau à une dimension sont des tableaux à deux dimensions).
Ensuite, calculez le tenseur riche. (Ce nom vient du mathématicien Ricci.)
# Ricci tensor
Ri = ten.Ricci ('Ri ', g )
# Display all compon
Ri(ten.All,ten.All)
Le tenseur de Ricci dans la métrique de Schwarzschild réduit tous les composants à zéro.
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]
Bien sûr, c'est une chose spéciale, dans la formule métrique de Schwarzschild.
Enfin, sortons le tenseur d'Einstein en utilisant le tenseur riche.
# Einstein tensor
G = ten.Einstein ('G', Ri )
G(ten.All,ten.All)
Le résultat est,
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]
Il est devenu. Ce résultat est l'hypothèse de la solution de Schwarzschild, ** condition de vide **
Le didacticiel GraviPy a été publié et je me suis référé à ce qui suit.
https://github.com/wojciechczaja/GraviPy
De plus, la page d'assistance de SymPy est ci-dessous.
[https://docs.sympy.org/dev/index.html] (https://docs.sympy.org/dev/index.html)
Recommended Posts