Return to コンピュータ代数システムでアインシュタイン方程式を計算する

EinsteinPy と SymPy でアインシュタイン方程式を解いて Kottler 解を求める

EinsteinPy と SymPy を使って球対称な計量から宇宙定数がある場合のアインシュタイン方程式

$$G^{\mu}_{\ \ \nu} + \Lambda\,\delta^{\mu}_{\ \ \nu} =0$$

を解き,Kottler 解を求める。

必要なパッケージの import

In [1]:
from sympy import *
from einsteinpy.symbolic import *

球対称な計量

ランダウ・リフシッツ「場の古典論」の記述にそって,球対称な計量を以下のようにおく。($\lambda$ は予約語?なので $\mu$ にした。)

$$ds^2 = – e^{\nu(t,r)} dt^2 + e^{\mu(t,r)} dr^2 + r^2 \left(d\theta^2 + \sin^2\theta\,d\phi^2 \right)$$

In [2]:
t, r, theta, phi = symbols('t, r, theta, phi')
mu = Function('mu')(t, r)
nu = Function('nu')(t, r)

Metric = diag(-exp(nu), exp(mu), r**2, r**2 * sin(theta)**2).tolist()
g = MetricTensor(Metric, [t, r, theta, phi])
g.tensor()
Out[2]:
$\displaystyle \left[\begin{matrix}- e^{\nu{\left(t,r \right)}} & 0 & 0 & 0\\0 & e^{\mu{\left(t,r \right)}} & 0 & 0\\0 & 0 & r^{2} & 0\\0 & 0 & 0 & r^{2} \sin^{2}{\left(\theta \right)}\end{matrix}\right]$

アインシュタイン・テンソル

$\displaystyle G^{\mu}_{\ \ \nu} = R^{\mu}_{\ \ \nu} – \frac{1}{2} R \delta^{\mu}_{\ \ \nu} $ = ein とおく。(.change_config('ul') で上付下付に)

In [3]:
ein=EinsteinTensor.from_metric(g).change_config('ul')

アインシュタイン方程式

$$G^{\mu}_{\ \ \nu} + \Lambda \delta^{\mu}_{\ \ \nu} = 0$$

In [4]:
Lambda = symbols('Lambda')

def EinEq(a, b):
    return Eq(expand(ein[a,b]) + Lambda *KroneckerDelta(a, b), 0)

$\mu$ は時間に依存しないこと

$\displaystyle G^{1}_{\ \ 0} = 0$

In [5]:
EinEq(1, 0)
Out[5]:
$\displaystyle \frac{e^{- \mu{\left(t,r \right)}} \frac{\partial}{\partial t} \mu{\left(t,r \right)}}{r} = 0$

$\displaystyle G^{1}_{\ \ 0} = 0$ より

$$\frac{\partial \mu}{\partial t} = 0, \quad \therefore\ \ \mu(t, r) \Rightarrow \mu(r)$$

$\mu(r)$ として,あらためてアインシュタイン・テンソルを求めてみる。

In [6]:
t, r, theta, phi = symbols('t, r, theta, phi')
mu = Function('mu')(r)
nu = Function('nu')(t, r)

Metric = diag(-exp(nu), exp(mu), r**2, r**2 * sin(theta)**2).tolist()
g = MetricTensor(Metric, [t, r, theta, phi])
g.tensor()
Out[6]:
$\displaystyle \left[\begin{matrix}- e^{\nu{\left(t,r \right)}} & 0 & 0 & 0\\0 & e^{\mu{\left(r \right)}} & 0 & 0\\0 & 0 & r^{2} & 0\\0 & 0 & 0 & r^{2} \sin^{2}{\left(\theta \right)}\end{matrix}\right]$
In [7]:
ein=EinsteinTensor.from_metric(g).change_config('ul')

$\displaystyle G^{0}_{\ \ 0} +\Lambda =0$

In [8]:
EinEq(0, 0)
Out[8]:
$\displaystyle \Lambda – \frac{e^{- \mu{\left(r \right)}} \frac{d}{d r} \mu{\left(r \right)}}{r} – \frac{1}{r^{2}} + \frac{e^{- \mu{\left(r \right)}}}{r^{2}} = 0$

$\displaystyle G^{1}_{\ \ 1} +\Lambda =0$

In [9]:
EinEq(1, 1)
Out[9]:
$\displaystyle \Lambda + \frac{e^{- \mu{\left(r \right)}} \frac{\partial}{\partial r} \nu{\left(t,r \right)}}{r} – \frac{1}{r^{2}} + \frac{e^{- \mu{\left(r \right)}}}{r^{2}} = 0$

$\displaystyle G^{2}_{\ \ 2} +\Lambda =0$

In [10]:
EinEq(2, 2)
Out[10]:
$\displaystyle \Lambda – \frac{e^{- \mu{\left(r \right)}} \frac{d}{d r} \mu{\left(r \right)} \frac{\partial}{\partial r} \nu{\left(t,r \right)}}{4} + \frac{e^{- \mu{\left(r \right)}} \left(\frac{\partial}{\partial r} \nu{\left(t,r \right)}\right)^{2}}{4} + \frac{e^{- \mu{\left(r \right)}} \frac{\partial^{2}}{\partial r^{2}} \nu{\left(t,r \right)}}{2} – \frac{e^{- \mu{\left(r \right)}} \frac{d}{d r} \mu{\left(r \right)}}{2 r} + \frac{e^{- \mu{\left(r \right)}} \frac{\partial}{\partial r} \nu{\left(t,r \right)}}{2 r} = 0$

$\displaystyle G^{3}_{\ \ 3} +\Lambda = 0$

In [11]:
EinEq(3, 3)
Out[11]:
$\displaystyle \Lambda – \frac{e^{- \mu{\left(r \right)}} \frac{d}{d r} \mu{\left(r \right)} \frac{\partial}{\partial r} \nu{\left(t,r \right)}}{4} + \frac{e^{- \mu{\left(r \right)}} \left(\frac{\partial}{\partial r} \nu{\left(t,r \right)}\right)^{2}}{4} + \frac{e^{- \mu{\left(r \right)}} \frac{\partial^{2}}{\partial r^{2}} \nu{\left(t,r \right)}}{2} – \frac{e^{- \mu{\left(r \right)}} \frac{d}{d r} \mu{\left(r \right)}}{2 r} + \frac{e^{- \mu{\left(r \right)}} \frac{\partial}{\partial r} \nu{\left(t,r \right)}}{2 r} = 0$

$\displaystyle G^{2}_{\ \ 2} = \displaystyle G^{3}_{\ \ 3}$ であることを確認。$\displaystyle G^{2}_{\ \ 2} – \displaystyle G^{3}_{\ \ 3}$ がゼロとなることを示す。

In [12]:
ein[2,2] - ein[3,3]
Out[12]:
$\displaystyle 0$

$\nu = – \mu$ とおけること

In [13]:
simplify(EinEq(1, 1).lhs - EinEq(0, 0).lhs)
Out[13]:
$\displaystyle \frac{\left(\frac{d}{d r} \mu{\left(r \right)} + \frac{\partial}{\partial r} \nu{\left(t,r \right)}\right) e^{- \mu{\left(r \right)}}}{r}$

$G^1_{\ \ 1} – G^2_{\ \ 2} = 0$ より,以下の式が得られる。

$$\frac{\partial}{\partial r}\left(\mu(r) + \nu(t, r) \right) = 0$$

これから,

$$\nu(t, r) = – \mu(r) + f(t)$$

となる。

\begin{eqnarray}
\therefore\ \ e^{\nu(t, r)} dt^2 &=& e^{- \mu(r) + f(t)} dt^2 \\
&=& e^{- \mu(r)} \left( e^{\frac{f(t)}{2}} dt\right)^2
\end{eqnarray}

時間 $t$ のみの任意関数 $f(t)$ の自由度は,$e^{\frac{f(t)}{2}} dt \Rightarrow dt’$ なる新しい時間座標の定義によって吸収できるので,一般性を失うことなく $f(t) = 0$ すなわち

$$\nu(t, r) = – \mu(r)$$

とすることができる。

ということで,あらためて以下のような計量テンソルに対して,アインシュタイン・テンソルを計算してみる。

In [14]:
t, r, theta, phi = symbols('t, r, theta, phi')
mu = Function('mu')(r)

Metric = diag(-exp(-mu), exp(mu), r**2, r**2 * sin(theta)**2).tolist()
g = MetricTensor(Metric, [t, r, theta, phi])
g.tensor()
Out[14]:
$\displaystyle \left[\begin{matrix}- e^{- \mu{\left(r \right)}} & 0 & 0 & 0\\0 & e^{\mu{\left(r \right)}} & 0 & 0\\0 & 0 & r^{2} & 0\\0 & 0 & 0 & r^{2} \sin^{2}{\left(\theta \right)}\end{matrix}\right]$
In [15]:
ein=EinsteinTensor.from_metric(g).change_config('ul')
In [16]:
EinEq(0, 0)
Out[16]:
$\displaystyle \Lambda – \frac{e^{- \mu{\left(r \right)}} \frac{d}{d r} \mu{\left(r \right)}}{r} – \frac{1}{r^{2}} + \frac{e^{- \mu{\left(r \right)}}}{r^{2}} = 0$
In [17]:
eq = expand(EinEq(0, 0).lhs * r**2)
eq
Out[17]:
$\displaystyle \Lambda r^{2} – r e^{- \mu{\left(r \right)}} \frac{d}{d r} \mu{\left(r \right)} – 1 + e^{- \mu{\left(r \right)}}$

微分方程式を解き,$\mu(r)$ を求める

微分方程式 eq $= \displaystyle \Lambda r^{2} – r e^{- \mu{\left(r \right)}} \frac{d}{d r} \mu{\left(r \right)} – 1 + e^{- \mu{\left(r \right)}} = 0$ を SymPy の dsolve() を使って解く。

In [18]:
sol = dsolve(eq, mu)
sol
Out[18]:
$\displaystyle \mu{\left(r \right)} = \log{\left(\frac{r}{C_{1} – \Lambda r^{3} + 3 r} \right)} + \log{\left(3 \right)}$

$\displaystyle e^{-\mu(r)} = \dots$

In [19]:
exp(-mu).subs(mu, sol.rhs).expand()
Out[19]:
$\displaystyle \frac{C_{1}}{3 r} – \frac{\Lambda r^{2}}{3} + 1$

積分定数 $C_1$ は $\Lambda = 0$ のときにシュバルツシルト解になることから,

$$C_2 = – 3 r_g$$

となる。

最終的に

$$ds^2 = -\left(1 – \frac{r_g}{r} -\frac{\Lambda}{3} r^2\right) dt^2 + \frac{dr^2}{1 – \frac{r_g}{r}-\frac{\Lambda}{3} r^2} + r^2 \left(d\theta^2 + \sin^2\theta \,d\phi^2 \right)$$