0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScript で一般相対論:シュワルツシルト解の 1PN/2.5PN を万有引力に掛けて軌道を描く

0
Last updated at Posted at 2026-08-11

JavaScript で一般相対論:シュワルツシルト解の 1PN / 2.5PN を万有引力に適用する

一般相対性理論の軌道は難しいと思われがちですが、
実は ニュートン万有引力に「(1+S)」を掛けるだけで、
かなり直感的に相対論的軌道を再現できます。

この記事では、以下の HTML ページで実装している

F = -(GM/r²)(1+S)
S = α (v/c)²

という補正モデルを使い、
1PN(一般相対論)・2.5PN(重力波放射減衰)を JavaScript で可視化する方法を紹介します。


📐 シュワルツシルト解から 1PN を取り出す

赤道面(θ = π/2)を仮定すると、
シュワルツシルト解の軌道方程式は次の形になります。

$$
\frac{d^2u}{d\phi^2} + u = \frac{m}{h^2} + 3mu^2
$$

右辺の 3mu² が一般相対論の補正項です。

これを加速度の形にしようと試みます:

ここでは弱い重力場・低速近似(v≪c)の下で
ds≈c dt と置き、接線速度を軌道速度 ( V ) とみなして
整理しています。

この式は
$$\frac{d^2u}{d\phi^2} + u = \frac{m}{h^2}$$
が万有引力の式に対応しイメージしてみて
r半径,G万有引力定数,M質量,V軌道速度,c光速度,S相対論補正項
$$a=-(\frac{GM}{r^2})(1+S)$$
の形であるから、ここで
$$h=\frac{r^2d\phi}{ds}$$,$$m=\frac{kM}{c^2}$$,$$u=\frac{1}{r}$$,
であって
相対論補正項$$3mu^2$$を検証すると、
$$\frac{m}{h^2}$$でくくり
$$u''+u=(\frac{m}{h^2})(1+\frac{3mu^2}{\frac{m}{h^2}})=\frac{m}{h^2}(1+S)$$の形にして、Sを調べます
$$\frac{3mu^2}{\frac{m}{h^2}}=3u^2h^2=3(\frac{1}{r^2})(\frac{r^2d\phi}{ds})^2$$
$$=3r^2((\frac{dt}{ds})(\frac{d\phi}{dt}))^2=3r^2(\frac{d\phi}{dt})^2(\frac{1}{c^2})$$
$$=3(\frac{rd\phi}{dt})^2(\frac{1}{c^2})$$
$$(\frac{rd\phi}{dt})$$は円の接線方向の速度だからそれを軌道速度Vとみれば$$3(\frac{V}{c})^2$$と解けて
つまり相対論補正項$$S=3(\frac{V}{c})^2$$だから
ユークリッド幾何で
シュワルツシルト時空の重力による加速度の式は
r半径,G万有引力定数,M質量,V軌道速度,c光速度,S相対論補正項
$$a=-(\frac{GM}{r^2})(1+S)$$
$$=-\frac{GM}{r^2}\left(1 + 3\left(\frac{V}{c}\right)^2\right)
$$
と解ける
この 1PN 補正項は、ニュートン項(∝ 1/r²)に対して
おおむね 1/r³ のオーダーの大きさです。
一方、次の 2PN 以降の補正は 1/r⁴ 以下のオーダーになるため、
多くの実用的な場面(水星の近日点移動など)では
1PN だけを考慮すれば十分であることが多いです。
ただし、強い重力場(ブラックホール近傍など)や、
極めて高い精度が要求される場合は、より高次の項も重要になります。つまり r が極端に小さい場合などです


📉 2.5PN(重力波放射減衰)

連星が重力波を放出すると軌道エネルギーが減少し、
軌道は徐々に縮んでいきます。

軌道平均近似では次の式になります。

$$
L = -\frac{32}{5}\frac{G^3 M m (M+m)}{c^5 r^4} v
$$

シミュレーションではこれを 1周あたりの減衰量を各時刻に配分する形で使います。つまりLを軌道周期で割る必要があります。
そうして計算された値を軌道速度の逆方向の成分として加算(つまりブレーキ)します。


🧪 JavaScript 実装(抜粋)

以下は実際の HTML ページで使っている実装の一部です。

// 1PN 補正
N6LRngKt.prototype.ToSchwartz = function (v) {
    return gsval * v * v; // S = α(v/c)^2
};

// 加速度計算
N6LRngKt.prototype.GetA = function (r, m, mr, v) {
    var g = this.CNST_G * (m / mr / mr);
    g = g * (1.0 + this.ToSchwartz(v)); // 1PN
    return g / this.CNST_C;
};

Canvas で軌道を描画しながら、
速度・位置を RK4 で積分していきます。
このコードはRK4積分器の加速度を求めるメソッドをオーバライドしています
またgsvalで1PNの効き方を可変にすることを実現しています


🌸 花びら軌道(近日点進動)が再現できる

一般相対論では楕円軌道が少しずつ回転し、
「花びらのような軌道」になります。

この HTML では S を大きくすることで
その効果を強調して観察できます。

例:
S = 2.5e6 × (v/c)²
[この結果は、とても強くロゼッタ軌道になりますね]

S = -1e20 × (v/c)²

[この結果は、表示するには安全でなかったようです。斥力が強すぎて飛んで行ってしまいました。切り替えて、別のことを試してみましょう!]


🎮 デモ(外部リンク)

Qiita では script が動かないため、
デモは外部サイトで公開しています。

👉 デモページ(nas6.net)
https://nas6.net/rel2.htm


🔧 ソースコード抜粋

記事内では抜粋のみ掲載し、
全文は HTML ページ内の「Source Code」欄に表示されます。


📌 まとめ

  • シュワルツシルト解の 1PN 補正は S = 3(v/c)² として扱える
  • ニュートン万有引力に (1+S) を掛けるだけで相対論的軌道が再現できる
  • 2.5PN(重力波放射減衰)も簡単に組み込める
  • JavaScript + Canvas + RK4 で一般相対論の軌道を可視化できる

作者

GitHub: https://github.com/NAS6mixfoolv

X(旧Twitter): https://x.com/NAS6_oxo

作者HP: https://nas6.net

気に入っていただけたら GitHub に ⭐ をいただけると嬉しいです!


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?