はじめに
銀河団のX線画像を触り始めると、かなり早い段階でβ-modelというものが出てきます。
自分はこれまで銀河団の解析をほとんどやったことがなく、β-modelも名前を知っている程度でした。
式だけ見ていてもいまいち形の感覚がつかめないので、今回は細かい導出はいったん置いて、パラメータをいろいろ変えながら2次元で描いてみます。
ほぼ自分用のメモです。
今回のコードはGoogle Colabにも置いておきます。
今回描くβ-model
β-modelを調べると、まず銀河団ガスの3次元密度分布として、
\rho(r)=\rho_0
\left[1+\left(\frac{r}{r_c}\right)^2\right]^{-3\beta/2}
という式が出てきます。
一方、X線画像の表面輝度をfitするときには、
S_X(R)=S_0
\left[1+\left(\frac{R}{r_c}\right)^2\right]^{-3\beta+1/2}+B
という形をよく使います。
前者は3次元のガス密度、後者はX線で見える2次元の表面輝度です。
X線放射率がガス密度の2乗に比例すると近似し、視線方向に積分すると後者の指数が出てきます。ここでは温度などの半径依存性は無視しています。
今回は後者の2次元表面輝度モデルを描きます。
形だけを見たいので、
S_0=1,\qquad B=0
に固定しておきます。
Pythonで描いてみる
必要なのは numpy と matplotlib だけです。
まずはモデルと描画用の関数をまとめて定義します。
後で楕円も描きたいので、少し一般化しておきます。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
# 座標
x = np.linspace(-200, 200, 500)
y = np.linspace(-200, 200, 500)
X, Y = np.meshgrid(x, y)
# 基準パラメータ
base = dict(S0=1.0, rc=30.0, beta=0.6, q=1.0, theta=0.0, B=0.0)
def beta_model(X, Y, S0=1, rc=30, beta=0.6, q=1, theta=0, B=0):
t = np.deg2rad(theta)
u = X * np.cos(t) + Y * np.sin(t)
v = -X * np.sin(t) + Y * np.cos(t)
R2 = u**2 + (v / q)**2
return S0 * (1 + R2 / rc**2)**(-3*beta + 0.5) + B
def plot_grid(cases, ncols=4, filename=None):
ncols = min(ncols, len(cases))
nrows = int(np.ceil(len(cases) / ncols))
fig, axes = plt.subplots(
nrows, ncols,
figsize=(3.5*ncols, 3.5*nrows),
layout="constrained",
squeeze=False,
)
for ax, (title, params) in zip(axes.flat, cases):
S = beta_model(X, Y, **{**base, **params})
im = ax.imshow(
S, origin="lower", extent=[-200, 200, -200, 200],
cmap="viridis", norm=LogNorm(vmin=1e-4, vmax=1),
)
ax.set_title(title)
ax.set_aspect("equal")
ax.set_xlabel("x")
ax.set_ylabel("y")
for ax in list(axes.flat)[len(cases):]:
ax.set_visible(False)
fig.colorbar(
im, ax=list(axes.flat)[:len(cases)],
label="Surface brightness (a.u.)", shrink=0.8,
)
if filename:
fig.savefig(filename, dpi=180, bbox_inches="tight")
plt.show()
以降は plot_grid() にパラメータを渡して描いていきます。
比較しやすいように、座標範囲とカラースケールは統一しています。
まずは1枚
とりあえず、
r_c=30,\qquad \beta=0.6
として描いてみます。
plot_grid(
[(r"$r_c=30,\ \beta=0.6$", {})],
filename="beta_model_basic.png",
)
中心が明るく、外側に向かって滑らかに暗くなりました。
外側まで見やすくするため、カラースケールは対数表示にしています。
βを変えてみる
まずは $\beta$ を変えてみます。
plot_grid(
[(rf"$\beta={b}$", {"beta": b}) for b in [0.4, 0.6, 0.8, 1.0]],
filename="beta_dependence.png",
)
$\beta$ が小さいと外側まで明るさが残り、大きくすると急激に暗くなります。
実際、$R\gg r_c$ では、
S_X(R)\propto R^{-6\beta+1}
となるので、外側の落ち方に効いていることが分かります。
core radiusを変えてみる
次は $r_c$ です。
plot_grid(
[(rf"$r_c={r}$", {"rc": r}) for r in [10, 20, 40, 80]],
filename="rc_dependence.png",
)
$r_c$ を大きくすると、中心の明るい領域が広がります。
$\beta$ を小さくした場合も画像全体が広がったように見えますが、少し違うようです。
両方をまとめて変えてみます。
$r_c$ と $\beta$ を同時に変える
$r_c$ と $\beta$ をそれぞれ3通りずつ変えて、3×3で並べます。
plot_grid(
[
(rf"$r_c={r},\ \beta={b}$", {"rc": r, "beta": b})
for r in [15, 30, 60]
for b in [0.4, 0.6, 0.8]
],
ncols=3,
filename="rc_beta_grid.png",
)
縦方向に $r_c$、横方向に $\beta$ を変えています。
こうして並べると、$r_c$ はcoreの広がり、$\beta$ は外側の落ち方に影響している様子が分かりやすいです。
もちろん両方とも分布全体の形に影響するので、実際のfitでは相関が生じることもあります。
個人的には、この9枚を並べた図が一番分かりやすかったです。
楕円にもしてみる
実際の銀河団は完全な円とは限らないので、楕円にもしてみます。
今回は2次元の半径を、
R^2=u^2+\left(\frac{v}{q}\right)^2
として、
q=\frac{b}{a}
を軸比として使います。
$q=1$ なら円で、小さくすると細長くなります。
ここでは単純に2次元のモデルを楕円に拡張しており、3次元の楕円体を投影しているわけではありません。
plot_grid(
[(rf"$q={q}$", {"q": q}) for q in [1.0, 0.8, 0.6, 0.4]],
filename="q_dependence.png",
)
$q$ を小さくするほど、楕円が細長くなりました。
向きも変えてみる
最後に楕円を回転させてみます。
$q=0.5$ に固定して、角度だけ変えます。
plot_grid(
[
(rf"$\theta={t}^\circ$", {"q": 0.5, "theta": t})
for t in [0, 30, 60, 90]
],
filename="theta_dependence.png",
)
ちゃんと回りました。
今回の $\theta$ は単純な $x-y$ 平面上の回転角です。実際の天体画像でposition angleを使う場合は、座標軸や角度の定義を合わせる必要があります。
まとめ
今回動かしたパラメータを整理すると、こんな感じです。
| parameter | 見た目への影響 |
|---|---|
| $S_0$ | 全体の明るさ |
| $r_c$ | coreの広がり |
| $\beta$ | 外側の落ち方 |
| $q$ | 楕円のつぶれ具合 |
| $\theta$ | 楕円の向き |
| $B$ | 一定の背景レベル |
今回は $S_0=1$、$B=0$ に固定して、主に形状に関係するパラメータを変えてみました。
実際のX線画像には統計揺らぎや背景、PSFなども入るので、当然ながらこんなにきれいな分布にはなりません。
また、実際の銀河団には非対称な構造などもあるので、単一のβ-modelですべてを表現できるわけではありません。
今回はモデルをいろいろ描いて、パラメータと形状の対応を眺めるところまでにしました。
式だけ見ているより、こうしてパラメータを変えた画像を並べた方が自分には分かりやすかったです。
実際の銀河団画像へのfitなどは、また機会があれば試してみたいと思います。
参考
- Cavaliere, A. & Fusco-Femiano, R. (1976), X-rays from Hot Plasma in Clusters of Galaxies, A&A, 49, 137–144.
- Cavaliere, A. & Fusco-Femiano, R. (1978), The Distribution of Hot Gas in Clusters of Galaxies, A&A, 70, 677.
- Sarazin, C. L. (1988), X-ray Emission from Clusters of Galaxies, Cambridge University Press.
- 天文学辞典「ベータモデル(銀河団ガスの)」





