ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】重力で引きあっているのにぶつからない三つの物体(三体問題)

成果物

www.youtube.com
8の字を書いて動いているのが特徴です。ありえないほど綺麗な軌道をしているので、本当に動くのか気になって実装してみました。今回は、定数を入力して見ただけに過ぎないので、時間があれば論文を読んで詳しい仕組みについて知りたいです。

仕組み

 \begin{array}{l}
三つの物体それぞれの加速度はこのようにあらわされます。\\
{\displaystyle \begin{aligned}
\ddot{\mathbf{r}}_{\mathbf{1}} & =-Gm_{2}\frac{\mathbf{r_{1}} -\mathbf{r_{2}}}{|\mathbf{r_{1}} -\mathbf{r_{2}} |^{3}} -Gm_{3}\frac{\mathbf{r_{1}} -\mathbf{r_{3}}}{|\mathbf{r_{1}} -\mathbf{r_{3}} |^{3}} ,\\
\ddot{\mathbf{r}}_{\mathbf{2}} & =-Gm_{3}\frac{\mathbf{r_{2}} -\mathbf{r_{3}}}{|\mathbf{r_{2}} -\mathbf{r_{3}} |^{3}} -Gm_{1}\frac{\mathbf{r_{2}} -\mathbf{r_{1}}}{|\mathbf{r_{2}} -\mathbf{r_{1}} |^{3}} ,\\
\ddot{\mathbf{r}}_{\mathbf{3}} & =-Gm_{1}\frac{\mathbf{r_{3}} -\mathbf{r_{1}}}{|\mathbf{r_{3}} -\mathbf{r_{1}} |^{3}} -Gm_{2}\frac{\mathbf{r_{3}} -\mathbf{r_{2}}}{|\mathbf{r_{3}} -\mathbf{r_{2}} |^{3}} .
\end{aligned}}
\end{array}
次の初期速度を与えてやると、ぶつからずに回り始めます。
 \begin{array}{l}
r1( 0) \ =\ -\ r3( 0) \ =\ ( -0.97000436,\ 0.24308753) ;\ \\
r2( 0) \ =\ ( 0,0) ;\ \\
v1( 0) \ =\ v3( 0) \ =\ ( 0.4662036850,\ 0.4323657300) ;\\
\ v2( 0) \ =\ ( -0.93240737,\ -0.86473146) .\ 
\end{array}
こちらのサイトを参考にしています。
Three-body problem - Wikipedia

コード

Three body Problemという名前で追加しています。
github.com