
元少年の自由研究:ブラックホールの光子球をPythonでシミュレーションしてみた!🕳✨
宇宙好きの皆さん、こんにちは!元少年です。夜空を見上げて、ブラックホールやその周囲で起こる不思議な現象について考えたことはありますか?ブラックホールは、光さえも逃がさない強大な重力を持つ、宇宙で最も神秘的な天体の一つです。
今回は、ブラックホールの光子球に焦点を当て、その周囲で光がどのように振る舞うのかをPythonを使ってシミュレーションし、その結果を皆さんと共有したいと思います。光子球はブラックホールの周囲で光が安定した軌道を描く特別な領域です。この現象を通じて、ブラックホールの重力がどれほど強力かを視覚的に理解してみましょう!
ブラックホールって何?
まずはブラックホールについておさらいしましょう。ブラックホールは、非常に大きな質量が極めて小さな空間に集中した天体です。その重力は、光さえも逃げ出せないほど強力で、周囲の時空を大きく歪めます。ブラックホールの境界は「事象の地平面」と呼ばれ、この境界を超えると何も戻ってくることはできません。
シュワルツシルト半径
ブラックホールの大きさは、そのシュワルツシルト半径で決まります。質量 $${M}$$の天体のシュワルツシルト半径 $${R_s}$$ は、次の式で与えられます:

$${R_s = \frac{2GM}{c^2}}$$
$${G}$$:万有引力定数
$${c}$$:光速
この半径以内に質量が収まると、ブラックホールが形成されます。
詳しいブラックホールの基礎知識についてはこちらの記事も参考にしてください。
光子球とは?
今回のシミュレーションの中心となる光子球について詳しく説明します。光子球は、ブラックホールの周囲に存在する光が安定した軌道を描く特別な領域です。この領域では、光がブラックホールの重力により曲げられ、ちょうど一周することが可能になります。
光子球の特徴
位置:シュワルツシルト半径の1.5倍の距離に位置します。
安定性:理論上、光はここで永遠に一周し続けることができますが、実際には微小な揺らぎや他の影響で光がブラックホールに吸収されることもあります。
視覚的影響:光子球はブラックホールの影を形成する一因であり、周囲の光を強く曲げるため、観測者には不思議な光の輪として見えます。
重力レンズ効果とは?
ブラックホールの強大な重力は、周囲の時空を大きく歪めます。一般相対性理論によれば、質量が時空を歪め、その歪んだ時空を光が通るときに経路が曲がります。これが「重力レンズ効果」です。

遠くの光源からの光がブラックホールの近くを通過すると、その光が曲げられ、観測者には光源の位置が実際とは異なる場所に見えたり、複数の像が現れたりします。これは、ブラックホールの重力が光の進行方向を大きく変えるためです。
重力レンズ効果の詳細な解説についてはこちらの記事をご覧ください。
アクリーションディスク

ブラックホールの周囲には、アクリーションディスクと呼ばれる高温の物質の円盤が存在することがあります。これは、ブラックホールに落ち込むガスや塵が高速で回転しながら加熱され、明るく輝く現象です。アクリーションディスクは、ブラックホールのエネルギー源ともなり、強力なX線を放出することもあります。
シミュレーションの目的
今回のシミュレーションでは、光子球に焦点を当て、ブラックホールの重力が光の経路にどのような影響を与えるかを視覚的に再現します。Pythonを使って、光が光子球を通過する際の軌跡を計算し、ブラックホール周辺での光の曲がり方を観察します。これにより、ブラックホールの重力の強さと光子球の役割をより深く理解することができます。
シミュレーション結果
早速ですが、今回のシミュレーション結果を見てみましょう!


この図では、左側に広範囲の重力レンズ効果が、右側に光子球周辺での光の軌跡が描かれています。光源から放たれた光がブラックホールの重力によって曲げられ、光子球を経由して観測者に届く様子が視覚化されています。特に、光子球を通過する光がブラックホールの周囲を何度も回転する様子が確認できます。
コードの解説
それでは、このシミュレーションを実現するPythonコードについて詳しく見ていきましょう。
1. 必要なライブラリのインポート
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
NumPy:数値計算用のライブラリ。配列操作や数学関数を提供します。
Matplotlib:データの可視化ライブラリ。グラフや図を描画します。
LinearSegmentedColormap:カスタムカラーマップを作成するためのクラス。
2. ブラックホールのクラス定義
class BlackHoleArtistic:
def __init__(self, schwarzschild_radius=1):
self.Rs = schwarzschild_radius
BlackHoleArtisticクラスは、ブラックホールのシミュレーションと可視化を行うためのものです。
self.Rsはシュワルツシルト半径を表し、ブラックホールのサイズを決定します。
3. 光の偏向の計算
def calculate_deflection(self, r, y):
"""
一般相対性理論に基づく光の偏向を計算
"""
deflection = 2 * self.Rs / (r * (1 - 2*self.Rs/r))
return deflection * y / r
この関数では、一般相対性理論に基づいて光の偏向を計算します。
rは光の現在位置からブラックホールまでの距離、yは光のy座標です。
deflectionは光の偏向量を計算しています。
4. 光の軌跡の追跡
def trace_light_path(self, impact_parameter, x_range):
x = x_range
y = np.ones_like(x) * impact_parameter
for i in range(1, len(x)):
r = np.sqrt(x[i-1]**2 + y[i-1]**2)
if r > self.Rs:
dy = self.calculate_deflection(r, y[i-1])
y[i] = y[i-1] - dy * 0.1
return x, y
この関数では、光がブラックホールの重力場を通過するときの軌跡を計算します。
impact_parameterは光の初期位置(ブラックホールからの垂直距離)を表します。
ループを使って、光の位置をステップごとに更新しています。
5. アクリーションディスクのカラーマップ作成
def create_accretion_disk_colormap(self):
"""
アクリーションディスク用の特別なカラーマップを作成
"""
colors = [(0, 0, 0, 0), # 完全透明な黒
(0.7, 0, 0, 1), # 暗い赤
(1, 0.5, 0, 1), # オレンジ
(1, 1, 1, 1)] # 白
return LinearSegmentedColormap.from_list('accretion_disk', colors, N=256)
アクリーションディスクを描画するためのカスタムカラーマップを作成しています。
色のグラデーションを指定し、ディスクの輝きを表現します。
シミュレーションの限界と改善点
今回のシミュレーションでは、光の偏向を簡略化したモデルで計算しています。一般相対性理論の全ての効果を完全に再現しているわけではありません。また、光の軌跡は2次元で計算されています。
改善点としては:
3次元でのシミュレーション:よりリアルなモデルに近づけることができます。
詳細な物理モデルの導入:一般相対性理論の方程式をより正確に適用します。
ブラックホールの回転効果:回転するブラックホール(カーネルブラックホール)の効果を考慮します。
まとめ
今回のシミュレーションを通じて、ブラックホールの重力レンズ効果と光がどのように曲げられるかを視覚的に理解することができました。ブラックホール周辺の現象は非常に興味深く、まだまだ多くの謎が残されています。
Pythonを使ってシミュレーションを行うことで、その一端を体験することができました。ぜひ、コードを自分で動かして、パラメータを変更したり、機能を拡張してみてください!
ここから先は、有料記事になります!✨
この有料記事では、コードの各部分をさらに詳しく解説し、シミュレーションの仕組みを深く理解できるようにします。また、シミュレーションの拡張方法や、パラメータを変更して結果がどう変わるかも探求していきます。
サポートしていただけると、とても嬉しいです! あなたのご支援が、今後の充実したコンテンツ作成の励みになります。引き続き、一緒に宇宙の旅を楽しみながら、新たな発見をしていきましょう!😊
コード全文
Pythonを使ってブラックホールの重力レンズ効果をシミュレーションするコードを以下に掲載します。ぜひ実際に動かしてみてください!
ここから先は
この記事が参加している募集
この記事が気に入ったらチップで応援してみませんか?