EinsteinPy を使って球対称な計量から真空のアインシュタイン方程式
$$G^{\mu}_{\ \ \nu} = 0$$
を解き,シュバルツシルト解を求める。
必要なパッケージの 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)$$
t, r, theta, phi = symbols('t, r, theta, phi')
mu = Function('mu')
nu = Function('nu')
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])
g.tensor()
アインシュタイン・テンソル
$\displaystyle G^{\mu}_{\ \ \nu} = R^{\mu}_{\ \ \nu} – \frac{1}{2} R \delta^{\mu}_{\ \ \nu} $ = ein
とおく。(.change_config('ul')
で上付下付に)
ein=EinsteinTensor.from_metric(g).change_config('ul')
$\mu$ は時間に依存しない
$\displaystyle G^{1}_{\ \ 0}$
ein[1,0]
$\displaystyle G^{1}_{\ \ 0} = 0$ より
$$\frac{\partial \mu}{\partial t} = 0, \quad \therefore\ \ \mu(t, r) \Rightarrow \mu(r)$$
$\mu(r)$ として,あらためてアインシュタイン・テンソルを求めてみる。
t, r, theta, phi = symbols('t, r, theta, phi')
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()
ein=EinsteinTensor.from_metric(g).change_config('ul')
$\displaystyle G^{0}_{\ \ 0}$
ein[0,0]
$\displaystyle G^{1}_{\ \ 1}$
ein[1,1]
$\displaystyle G^{2}_{\ \ 2}$
ein[2,2]
$\displaystyle G^{3}_{\ \ 3}$
ein[3,3]
$\displaystyle G^{2}_{\ \ 2} = \displaystyle G^{3}_{\ \ 3}$ であることを確認。
ein[2,2] - ein[3,3]
$\nu = – \mu$ となる
ein[1,1]-ein[0,0]
simplify(_)
$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)$$
とすることができる。ということで,あらためて以下のような計量テンソルに対して,アインシュタイン・テンソルを計算してみる。
t, r, theta, phi = symbols('t, r, theta, phi')
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()
ein=EinsteinTensor.from_metric(g).change_config('ul')
ein[0,0]
eq = ein[0,0] * r**2 * exp(mu)
eq
sol = dsolve(eq, mu(r))
sol
このままでは今ひとつ,$\mu(r)$ について解いたことになっていない。
$f(r) \equiv e^{-\mu(r)}$ あるいは $ \mu(r) \equiv – \log f(r)$ として,$f(r)$ について解いてみる。
f = Function('f')
eq2 = sol.subs(mu(r), -log(f(r)))
eq2
solve(eq2, f(r))
_[0]
つまり,積分定数を $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)$$