Python を電卓として使って宇宙年齢や宇宙空間の物質密度を計算する例。Python でなくても,$\sqrt{x}$ や $\tanh^{-1} x$ ができる電卓があればいいです。
Planck 2018 の宇宙論パラメータ
Planck 2018 results の宇宙論パラメータは以下の通り。
\begin{eqnarray}
H_0 &=& (67.4 \pm 0.5) \ \mbox{km/s/Mpc} \\
\Omega_{\rm m} &=& 0.315 \pm 0.007 \\
\Omega_{\Lambda} &=& 1 – \Omega_{\rm m}
\end{eqnarray}
宇宙年齢
$\Omega_{\rm m} + \Omega_{\Lambda} = 1$ すなわち $k = 0$ の場合の宇宙年齢はここ に書いているように
$$
H_0 t_0 = \frac{2}{3(\sqrt{1-\Omega_{\rm m} })}\tanh^{-1} \sqrt{1-\Omega_{\rm m} } \quad \mbox{for}\ \ \Omega_{\rm m} < 1$$
より
$$t_0 = \frac{1}{H_0} \times \frac{2}{3(\sqrt{1-\Omega_{\rm m} })}\tanh^{-1} \sqrt{1-\Omega_{\rm m} }$$
必要なモジュールの import
from sympy.abc import *
from sympy import *
import numpy as np
パーセクの定義とハッブル定数
$$1 \,\mbox{pc} \equiv \frac{\mbox{au}}{\mbox{1 arcsec}} = \frac{648000}{\pi} \,\mbox{au}$$
au = 149597870700 * m
# Mpc だから 1E6 pc で,km だから 1E3 m。
Mpc = 648000/float(pi) * au * 1E6
km = 1E3 * m
H0 = 67.4 * km/(s * Mpc)
H0
ハッブル定数の逆数を億年で表すと…
okunen = 60*60*24*365.25 * 1E8 * s
print('ハッブル年齢は %.1f 億年' % (1/H0/okunen))
SymPy で計算する宇宙年齢
def t0(H, Omega):
"""
H0 (km/(s Mpc)) と Omegam から宇宙年齢を億年で返す。
"""
au = 149597870700 * m
# Mpc だから 1E6 pc で,km だから 1E3 m。
Mpc = 648000/float(pi) * au * 1E6
km = 1E3 * m
H0 = H * km/(s * Mpc)
okunen = 60*60*24*365.25 * 1E8 * s
# SymPy の関数を使って計算。
t = 2/(3*H0*sqrt(1-Omega))*atanh(sqrt(1-Omega))/okunen
print('宇宙年齢は %.1f 億年' % t)
H_0 = 67.4
Omega_m = 0.315
t0(H_0, Omega_m)
NumPy で計算する宇宙年齢
def T0(H, Omega):
"""
H0 (km/(s Mpc)) と Omegam から宇宙年齢を億年で返す。
"""
au = 149597870700 * m
# Mpc だから 1E6 pc で,km だから 1E3 m。
Mpc = 648000/float(np.pi) * au * 1E6
km = 1E3 * m
H0 = H * km/(s * Mpc)
okunen = 60*60*24*365.25 * 1E8 * s
# NumPy の関数を使って計算。
t = 2/(3*H0*np.sqrt(1-Omega))*np.arctanh(np.sqrt(1-Omega))/okunen
print('宇宙年齢は %.1f 億年' % t)
問題 1
誤差を考えてハッブルパラメータの最大値,最小値をそれぞれ $H_{\rm max}, \ H_{\rm min}$,密度パラメータの最大値,最小値をそれぞれ $\Omega_{\rm max}, \ \Omega_{\rm min}$ とする。
\begin{eqnarray}
H_{\rm max} &=& 67.4 + 0.5\\
H_{\rm min} &=& 67.4 – 0.5\\
\Omega_{\rm max} &=& 0.315 + 0.007\\
\Omega_{\rm min} &=& 0.315 – 0.007\\
\end{eqnarray}
ハッブルパラメータを大きくすると,宇宙年齢 $t_0$ の値は大きくなるのか小さくなるのか,また密度パラメータを大きくすると,宇宙年齢 $t_0$ の値は大きくなるのか小さくなるのか,このへんを理解した上で,$t_0$ の最大値,最小値を求め,$138 \pm ??$ 億年の形に表せ。
# 解答例:
# 宇宙年齢は H0 に反比例し,Omega_mの単調減少関数だから...
# 宇宙年齢が最大となるのは
H_0 = 67.4 - 0.5
Omega_m = 0.315 - 0.007
print('最大となる', end='')
T0(H_0, Omega_m)
# 宇宙年齢が最小となるのは
H_0 = 67.4 + 0.5
Omega_m = 0.315 + 0.007
print('最小となる', end='')
T0(H_0, Omega_m)
臨界密度
ここ に書いているように
$$
\rho_{\rm cr}\equiv \frac{3 H_0^2}{8\pi G}
$$
宇宙空間の物質密度
宇宙空間の物質密度 $\rho$ は
$$\rho = \rho_{\rm cr} \Omega_{\rm m}$$から求める。
万有引力定数 $G$ は
$$ G = 6.674 \times 10^{-11} \, \frac{\mbox{m}^3}{\mbox{kg}\cdot\mbox{s}^2}$$
また,$H_0$ は別ページにまとめているように $s^{-1}$ の次元を持つので,適切に単位を合わせて計算すれば確かに $\rho_{\rm cr}$ は
質量密度 $\mbox{kg}/\mbox{m}^3$ の次元をもつことがわかる。
var('kg')
G = 6.674E-11 * m**3/(kg * s**2)
au = 149597870700 * m
# Mpc だから 1E6 pc で,km だから 1E3 m。
Mpc = 648000/float(pi) * au * 1E6
km = 1E3 * m
H0 = 67.4 * km/(s * Mpc)
Omega_m = 0.315
rho = 3*H0**2/(8*np.pi*G) * Omega_m
rho
問題 2
現在の宇宙空間の物質密度は次のうちのどれに最も近いか。
- $1\,\mbox{cm}^3$ に電子が数個程度
- $1\,\mbox{cm}^3$ に陽子が数個程度
- $1\,\mbox{m}^3$ に電子が数個程度
- $1\,\mbox{m}^3$ に陽子が数個程度
- $1\,\mbox{km}^3$ に電子が数個程度
- $1\,\mbox{km}^3$ に陽子が数個程度
参考
陽子,電子の質量を以下のリンク等から確認しておくこと。
- 陽子 – Wikipedia
陽子1個の質量は 1.672621898(21)×10−27 kg だから… - 電子 – Wikipedia