Return to EinsteinPy や ctensor でアインシュタイン方程式を計算する

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

EinsteinPy を使って球対称な計量から真空のアインシュタイン方程式

$$G^{\mu}_{\ \ \nu} = 0$$

を解き,シュバルツシルト解を求める。

必要なパッケージの import

In [1]:
from sympy.abc import *
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)$$

補足説明:lambda が予約語。ギリシヤ文字の $\lambda$ は,sympy.abc の中で lamda として定義されている。どうしても使いたい場合は以下のようにする。

In [2]:
lamda = Function('lamda')
lamda(r,t)
Out[2]:
$\displaystyle \lambda{\left(r,t \right)}$
In [3]:
# μ,ν を関数として定義
mu = Function('mu')
nu = Function('nu')

# metric tensor の定義
Metric = diag(-exp(nu(t,r)), 
              exp(mu(t,r)), 
              r**2, 
              r**2 * sin(theta)**2).tolist()
g = MetricTensor(Metric, [t, r, theta, phi])

# metric tensor g をテンソル形式で表示
g.tensor()
Out[3]:
$\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 [4]:
ein = EinsteinTensor.from_metric(g).change_config('ul')

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

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

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

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

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

したがって,$\displaystyle G^{1}_{\ \ 0} = 0$ より $\mu$ は時間 $t$ には依存しないことがわかった。

$\mu(r)$ としてあらためて計算する

$\mu$ は時間 $t$ には依存せず,$r$ だけの関数 $\mu(r)$ であるとしてあらためてアインシュタイン・テンソルを計算してみる。

In [6]:
mu = Function('mu')
nu = Function('nu')

Metric = diag(-exp(nu(t,r)), 
              exp(mu(r)), 
              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}$ の計算結果の表示。

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

$\displaystyle G^{1}_{\ \ 1}$ の計算結果の表示。

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

$\displaystyle G^{2}_{\ \ 2}$ の計算結果の表示。

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

$\displaystyle G^{3}_{\ \ 3}$ の計算結果の表示。

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

$\displaystyle G^{2}_{\ \ 2} = \displaystyle G^{3}_{\ \ 3}$ であることを確認。

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

$\nu = – \mu$ となることを示す

In [13]:
ein[1,1]-ein[0,0]
Out[13]:
$\displaystyle – \frac{\left(- r \frac{d}{d r} \mu{\left(r \right)} – e^{\mu{\left(r \right)}} + 1\right) e^{- \mu{\left(r \right)}}}{r^{2}} + \frac{\left(r \frac{\partial}{\partial r} \nu{\left(t,r \right)} – e^{\mu{\left(r \right)}} + 1\right) e^{- \mu{\left(r \right)}}}{r^{2}}$
In [14]:
simplify(_)
Out[14]:
$\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$$

これから,

\begin{eqnarray}
\mu(r) + \nu(t, r) &=& f(t) \\
\therefore\ \ \nu(t, r) &=& – \mu(r) + f(t)
\end{eqnarray}

となる。

\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)$$

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

$\nu(r) = -\mu(r)$ としてあらためて計算

In [15]:
mu = Function('mu')

Metric = diag(-exp(-mu(r)), 
              exp(mu(r)), 
              r**2, 
              r**2 * sin(theta)**2).tolist()
g = MetricTensor(Metric, [t, r, theta, phi])

g.tensor()
Out[15]:
$\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 [16]:
ein=EinsteinTensor.from_metric(g).change_config('ul')

$G^0_{\ \ 0} = 0$ を解く。

In [17]:
ein[0,0]
Out[17]:
$\displaystyle \frac{\left(- r \frac{d}{d r} \mu{\left(r \right)} – e^{\mu{\left(r \right)}} + 1\right) e^{- \mu{\left(r \right)}}}{r^{2}}$
In [18]:
eq = ein[0,0] * r**2 * exp(mu(r))
eq
Out[18]:
$\displaystyle – r \frac{d}{d r} \mu{\left(r \right)} – e^{\mu{\left(r \right)}} + 1$
In [19]:
sol = dsolve(eq, mu(r))
sol
Out[19]:
$\displaystyle – \mu{\left(r \right)} + \log{\left(r \right)} + \log{\left(e^{\mu{\left(r \right)}} – 1 \right)} = C_{1}$

このままでは今ひとつ,$\mu(r)$ について解いたことになっていない。

$f(r) \equiv e^{-\mu(r)}$ あるいは $ \mu(r) \equiv – \log f(r)$ として,$f(r)$ について解いてみる。

In [20]:
f = Function('f')
eq2 = sol.subs(mu(r), -log(f(r)))
eq2
Out[20]:
$\displaystyle \log{\left(r \right)} + \log{\left(-1 + \frac{1}{f{\left(r \right)}} \right)} + \log{\left(f{\left(r \right)} \right)} = C_{1}$
In [21]:
solve(eq2, f(r))
Out[21]:
[(r - exp(C1))/r]

方程式の解は1つだけなので,[0] 番目の解をあらためて表示させる。

In [22]:
_[0]
Out[22]:
$\displaystyle \frac{r – e^{C_{1}}}{r}$

つまり,積分定数を $C \equiv e^{C_1}$ として

$$f(r) = e^{-\mu(r)} = \frac{r – C}{r} = 1 – \frac{C}{r}\\
$$

積分定数 $C$ はニュートン近似のときに,

\begin{eqnarray}
g_{00} &=& – e^{-\mu(r)} \\
&\simeq& – \left( 1 + 2 \frac{\phi}{c^2}\right) \\
&=& – \left( 1 – 2 \frac{GM}{r c^2}\right)
\end{eqnarray}

となることから,

$$C = \frac{2 GM}{c^2} \equiv r_g$$

となる。

最終的に

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