パーセクの定義に $1$ 秒角の $\tan$ (あるいは $\tan$ の逆数である $\cot$)がいらなくなって,$\displaystyle 1 \mbox{pc} = \frac{\mbox{au}}{\tan 1^{\prime\prime}} = \mbox{au}\ \cot 1^{\prime\prime}$ ではなく,新定義 (IAU 2015 Resolution B2) では
$$1 \mbox{pc} \equiv \frac{\mbox{au}}{1^{\prime\prime}} = \frac{648000}{\pi} \mbox{au}$$
となったという話。
Wikipedia 日本語版におけるパーセクの定義
(いずれ修正されると思うので,あくまで本日閲覧時点での) Wikipedia 日本語版におけるパーセクの定義は
$$1 \ \mbox{pc} = \cot (\pi/648000) \ \mbox{au}$$
とある。かいつまんで説明すると,
1秒角をラジアンで表した角度 $\theta$ は
\begin{eqnarray}
\theta &=&1^{\prime\prime} = \frac{\pi}{180\times 60 \times 60} \ \mbox{rad}= \frac{\pi}{648000} \ \mbox{rad}\\
\frac{\mbox{au}}{\mbox{pc}} &=& \tan\theta \\
\therefore\ \ 1\,\mbox{pc} &\equiv& \frac{\mbox{au}}{\tan\theta} \\
&=& \frac{\mbox{au}}{\tan\frac{\pi}{648000}} \\
&=& \mbox{au}\,\times\, \cot\left(\frac{\pi}{648000} \right)
\end{eqnarray}
$1 \ \mbox{pc}$ とは図の $PS$ の長さであり,直角三角形 $PST$ から $\displaystyle \tan 1^{\prime\prime} = \frac{ST}{PS}$ として定義している。
しかし,図をみていると,$1 \ \mbox{pc}$ って地球までの距離 $PT$ じゃあない?とか,そもそも天体 $P$ は十分遠方にあるのだから $PS$ と $PT$ は等しいとしていいよね?とか,いろいろ考えが出てくるだろう。
そこで…
Wikipedia 英語版におけるパーセクの定義
Wikipedia 英語版におけるパーセクの項では,採択された IAU 2015 Resolution B2 に従い,厳密に
$$1 \mbox{pc} \equiv \frac{\mbox{au}}{\theta} = \frac{648000}{\pi} \mbox{au}$$
としている。つまりは $|\theta| \ll 1$ のとき $\tan\theta \simeq \theta$ なので,いっそのこと,$\tan\theta$ の項を $\theta$ としてしまえ,ということ。
「1 パーセク (pc) とは,1 au の弧の長さを見込む中心角が1秒角となるときの半径の長さである」という具合に解釈できる。
図でいうと,$PS = PT$ であり,$ST$ は円弧の長さということになる。
本稿執筆時点のWikipedia 英語版におけるパーセクの項では17桁の数値で 1 パーセクの値を表している:
$$1~\mbox{pc} = \frac{96\, 939\, 420\, 213\, 600\, 000}{\pi}~\mbox{m}
= 30\, 856\, 775\, 814\, 913\, 673~\mbox{m}$$
Maxima でパーセクを計算する
Wikipedia 日本語版におけるパーセクの定義
(いずれ修正されると思うので,あくまで本日閲覧時点での) Wikipedia 日本語版におけるパーセクの旧定義は以下の通り。
1秒角をラジアンで表した角度 $\theta$ は
\begin{eqnarray}
\theta &=& 1^{\prime\prime} = \frac{\pi}{180\times 60 \times 60}\ \mbox{rad} = \frac{\pi}{648000}\ \mbox{rad} \\
\frac{\mbox{au}}{\mbox{pc}} &=& \tan\theta \\
\therefore\ \ 1\,\mbox{pc} &\equiv& \frac{\mbox{au}}{\tan\theta}= \mbox{au}\times\cot\frac{\pi}{648000}
\end{eqnarray}
Wikipedia 英語版におけるパーセクの定義
Wikipedia 英語版におけるパーセクの項では,採択された IAU 2015 Resolution B2 に従った新定義では厳密に
$$1 \mbox{pc} \equiv \frac{\mbox{au}}{\theta} = \frac{648000}{\pi} \mbox{au}$$
としている。
Wikipedia 英語版におけるパーセクの項では17桁の数値で 1 パーセクの値を表している:
$$1~\mbox{pc} = \frac{96\, 939\, 420\, 213\, 600\, 000}{\pi}~\mbox{m}
= 30\, 856\, 775\, 814\, 913\, 673~\mbox{m}$$
が,Maxima の float()
では 16 桁までなので,以下では bfloat()
を使って 20 桁(fpprec: 20$
)の精度で計算し,printf()
の bigfloat
の書式指定 ~17,0h
で 17 桁まで表示させている。
fpprec: 20$
fpprintprec: 0$
/* 天文単位は定義値 m */
au: 149597870700$
pc1: bfloat(648000*au/%pi)$
/* bfloat の書式指定は h */
printf(true, "1 pc = ~17,0h m~%", pc1)$
旧定義 $\tan\theta$ のまま計算すると,12桁目から誤差が出てきます。
pc2: bfloat(au/tan(%pi/648000))$
printf(true, "新定義 1 pc = ~17,0h m~%", pc1)$
printf(true, "旧定義 1 pc = ~17,0h m~%", pc2)$
printf(true, " 差 = ~17,0h m~%", (pc1-pc2))$
ハッブル定数・ハッブル年齢
ハッブル定数は歴史的経緯もあり,単位が $\mbox{km/s/Mpc}$ となっている。
$$H_0 = 100 h \,\frac{\mbox{km}}{\mbox{s} \cdot \mbox{Mpc}}
= 100 h \, \frac{\mbox{km}}{\mbox{Mpc}} \cdot \mbox{s}^{-1}$$
つまり,$1 \,\mbox{Mpc}$ を $\mbox{m}$ で表した値を Mpc
とすると…
/* H0 の精度は,せいぜいこのくらい */
/* なのでパーセクの新定義・旧定義の差など無関係です */
fpprintprec: 4$
/* h を初期化(念のため)*/
kill(h)$
au: 149597870700 * m$
/* Mpc だから 1E6 pc で,km だから 1E3 m。*/
Mpc: 648000/float(%pi) * au * 1E6$
km: 1E3 * m$
H0: 100 * h * km/(s * Mpc);
この値の逆数が秒で表したハッブル年齢となる。「億年」単位に変換すると…
/* 1億年を秒で表す */
okunen: 60*60*24*365.25*1E8 * s$
print(1/H0/okunen, "億年")$
/* Planck 2018 の値を使うと... */
h: 0.674$
print("H0 = ", 100*h, "のときハッブル年齢は", 1/ev(H0)/okunen, "億年")$
/* Hubble (1929) の値を使うと... */
h: 4.239$
print("H0 = ", 100*h, "のときハッブル年齢は", 1/ev(H0)/okunen, "億年")$
Python でパーセクを計算する
モジュールの import
17 桁目まで計算するのに,SymPy を使います。
from sympy.abc import *
from sympy import *
Wikipedia 英語版におけるパーセクの定義
新定義(IAU 2015 Resolution B2)によるパーセクの値は
\begin{eqnarray}
\theta &=& 1^{\prime\prime} = \frac{\pi}{180\times 60 \times 60}\ \mbox{rad} = \frac{\pi}{648000}\ \mbox{rad} \\
1\ \mbox{pc} &\equiv& \frac{\mbox{au}}{\theta} = \frac{648000}{\pi}\ \mbox{au}
\end{eqnarray}
# 天文単位は定義値
au = 149597870700 # 単位は m
# 新定義のパーセク
pc1 = N(648000/pi*au, 17)
print('新定義 1 pc =', pc1, 'm')
Wikipedia 日本語版におけるパーセクの定義
(いずれ修正されると思うので,あくまで本日閲覧時点での) Wikipedia 日本語版におけるパーセクの旧定義によるパーセクの値は以下の通り。
1秒角をラジアンで表した角度 $\theta$ は
\begin{eqnarray}
\theta &=& 1^{\prime\prime} = \frac{\pi}{180\times 60 \times 60}\ \mbox{rad} = \frac{\pi}{648000}\ \mbox{rad} \\
1\ \mbox{pc} &\equiv& \frac{\mbox{au}}{\tan\theta}= \mbox{au}\times\cot\frac{\pi}{648000}
\end{eqnarray}
以下でわかるように,$\tan\theta$ を使った旧定義では 12 桁目から違いが出てくることがわかる。
# 旧定義のパーセク
pc2 = N(au/tan(pi/648000), 17)
print('新定義 1 pc =', pc1, 'm')
print('旧定義 1 pc =', pc2, 'm')
# 表示の桁を合わせるのに一苦労
print(' 差 = '+' '*11+str(N((pc1-pc2), n=6))+' m')
ちなみに,%17d
とか %17.f
とかの書式指定で表示合わせをしようとすると,最後の桁の数値が変わってしまう。
print('新定義 1 pc = %17d m' % pc1)
print('新定義 1 pc = %17.f m' % pc1)
ハッブル定数・ハッブル年齢
ハッブル定数は歴史的経緯もあり,単位が $\mbox{km/s/Mpc}$ となっている。
$$H_0 = 100 \,h \,\frac{\mbox{km}}{\mbox{s} \cdot \mbox{Mpc}}
= 100 \,h \, \frac{\mbox{km}}{\mbox{Mpc}} \cdot \mbox{s}^{-1}$$
つまり,$1 \,\mbox{Mpc}$ を $\mbox{m}$ で表した値を Mpc
とすると…
au = 149597870700 * m
# Mpc だから 1E6 pc で,km だから 1E3 m。
Mpc = 648000/float(pi) * au * 1E6
km = 1E3 * m
H0 = 100 * h * km/(s * Mpc)
# H0 の精度はせいぜい 4 桁
N(H0, 4)
この値の逆数が秒で表したハッブル年齢となる。「億年」単位に変換すると…
# 1億年を秒で表す
okunen = 60*60*24*365.25*1E8 * s
print(N(1/H0/okunen, 4),'億年')
# Planck 2018 の値 h = 0.674 を使うと...
h1 = 0.674
print("H0 =", 100*h1, "のとき,ハッブル年齢は",
N(1/H0.subs(h, h1)/okunen, 4),'億年')
# Hubble (1929) の値 h = 4.239 を使うと...
h2 = 4.239
print("H0 =", 100*h2, "のとき,ハッブル年齢は",
N(1/H0.subs(h, h2)/okunen, 4),'億年')