# Simulation for the three body problem

**URL:** <https://community.wolfram.com/t/simulation-for-the-three-body-problem/9969>\
**Category:** Ideas\
**Tags:** physics, graphics-and-visualization, interface-construction, modeling\
**Created:** [February 3, 2017, 2:32am UTC](https://community.wolfram.com/t/simulation-for-the-three-body-problem/9969 "2017-02-03T02:32:53Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![natur71828](https://avatars.discourse-cdn.com/v4/letter/n/a87d85/32.png) [@natur71828](https://community.wolfram.com/u/natur71828)\
**Post date:** [February 3, 2017, 2:32am UTC](https://community.wolfram.com/t/simulation-for-the-three-body-problem/9969/1 "2017-02-03T02:32:53Z")

</div>

Hi, Everyone! This is the Simulation for [Three body Problem](https://en.wikipedia.org/wiki/Three-body_problem). More: [http://mmascript.com/topic/84/%E7%A9%BA%E9%97%B4%E4%B8%89%E4%BD%93%E9%97%AE%E9%A2%98](http://mmascript.com/topic/84/%E7%A9%BA%E9%97%B4%E4%B8%89%E4%BD%93%E9%97%AE%E9%A2%98)

![1.gif](https://global.discourse-cdn.com/wolfram/original/3X/6/e/6ede0694fec33990f3c9f4dec6b3b2c5ee7b51dd.gif)

```
R = 5; G = 1; T = 15; Subscript[M, 1] = 5; Subscript[M, 2] = 1; \
Subscript[M, 3] = 1; Subscript[X, 10] = 0; Subscript[Y, 10] = 0; \
Subscript[Z, 10] = 0; Subscript[X, 20] = -5; Subscript[Y, 20] = 0; \
Subscript[Z, 20] = 0; Subscript[X, 30] = 5; Subscript[Y, 30] = 0; \
Subscript[Z, 30] = 0; Subscript[V, x10] = 0; Subscript[V, y10] = 0; \
Subscript[V, z10] = 0; Subscript[V, x20] = 0; Subscript[V, y20] = \
1/2; Subscript[V, z20] = 0; Subscript[V, x30] = 0; Subscript[V, y30] \
= -1/2; Subscript[V, z30] = 0;
(*??????G=1;T=50;Subscript[M, 1]=1;Subscript[M, 2]=1;Subscript[M, \
3]=1;Subscript[X, 10]=0;Subscript[Y, 10]=0;Subscript[Z, \
10]=0;Subscript[X, 20]=-5;Subscript[Y, 20]=0;Subscript[Z, \
20]=0;Subscript[X, 30]=5;Subscript[Y, 30]=0;Subscript[Z, \
30]=0;Subscript[V, x10]=0;Subscript[V, y10]=0;Subscript[V, \
z10]=0;Subscript[V, x20]=0;Subscript[V, y20]=1/2;Subscript[V, \
z20]=0;Subscript[V, x30]=0;Subscript[V, y30]=-1/2;Subscript[V, \
z30]=0;*)
(*??????G=1;T=30;Subscript[M, 1]=5;Subscript[M, 2]=1;Subscript[M, \
3]=1;Subscript[X, 10]=0;Subscript[Y, 10]=0;Subscript[Z, \
10]=0;Subscript[X, 20]=-5;Subscript[Y, 20]=0;Subscript[Z, \
20]=0;Subscript[X, 30]=5;Subscript[Y, 30]=0;Subscript[Z, \
30]=0;Subscript[V, x10]=0;Subscript[V, y10]=0;Subscript[V, \
z10]=0;Subscript[V, x20]=0;Subscript[V, y20]=1/2;Subscript[V, \
z20]=0;Subscript[V, x30]=0;Subscript[V, y30]=-1/2;Subscript[V, \
z30]=0;*)
??? = {
   Subscript[X, 1]''[
     t] == -((
       G Subscript[M, 
        2])/((Subscript[X, 1][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 1][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 1][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[X, 1][t] - Subscript[X, 2][t]) - (
      G Subscript[M, 
       3])/((Subscript[X, 1][t] - 
          Subscript[X, 3][t])^2 + (Subscript[Y, 1][t] - 
          Subscript[Y, 3][t])^2 + (Subscript[Z, 1][t] - 
          Subscript[Z, 3][t])^2)^(3/
      2) (Subscript[X, 1][t] - Subscript[X, 3][t]),
   Subscript[Y, 1]''[
     t] == -((
       G Subscript[M, 
        2])/((Subscript[X, 1][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 1][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 1][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[Y, 1][t] - Subscript[Y, 2][t]) - (
      G Subscript[M, 
       3])/((Subscript[X, 1][t] - 
          Subscript[X, 3][t])^2 + (Subscript[Y, 1][t] - 
          Subscript[Y, 3][t])^2 + (Subscript[Z, 1][t] - 
          Subscript[Z, 3][t])^2)^(3/
      2) (Subscript[Y, 1][t] - Subscript[Y, 3][t]),
   Subscript[Z, 1]''[
     t] == -((
       G Subscript[M, 
        2])/((Subscript[X, 1][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 1][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 1][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[Z, 1][t] - Subscript[Z, 2][t]) - (
      G Subscript[M, 
       3])/((Subscript[X, 1][t] - 
          Subscript[X, 3][t])^2 + (Subscript[Y, 1][t] - 
          Subscript[Y, 3][t])^2 + (Subscript[Z, 1][t] - 
          Subscript[Z, 3][t])^2)^(3/
      2) (Subscript[Z, 1][t] - Subscript[Z, 3][t]),
   Subscript[X, 2]''[
     t] == -((
       G Subscript[M, 
        1])/((Subscript[X, 1][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 1][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 1][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[X, 2][t] - Subscript[X, 1][t]) - (
      G Subscript[M, 
       3])/((Subscript[X, 2][t] - 
          Subscript[X, 3][t])^2 + (Subscript[Y, 2][t] - 
          Subscript[Y, 3][t])^2 + (Subscript[Z, 2][t] - 
          Subscript[Z, 3][t])^2)^(3/
      2) (Subscript[X, 2][t] - Subscript[X, 3][t]),
   Subscript[Y, 2]''[
     t] == -((
       G Subscript[M, 
        1])/((Subscript[X, 1][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 1][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 1][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[Y, 2][t] - Subscript[Y, 1][t]) - (
      G Subscript[M, 
       3])/((Subscript[X, 2][t] - 
          Subscript[X, 3][t])^2 + (Subscript[Y, 2][t] - 
          Subscript[Y, 3][t])^2 + (Subscript[Z, 2][t] - 
          Subscript[Z, 3][t])^2)^(3/
      2) (Subscript[Y, 2][t] - Subscript[Y, 3][t]),
   Subscript[Z, 2]''[
     t] == -((
       G Subscript[M, 
        1])/((Subscript[X, 1][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 1][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 1][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[Z, 2][t] - Subscript[Z, 1][t]) - (
      G Subscript[M, 
       3])/((Subscript[X, 2][t] - 
          Subscript[X, 3][t])^2 + (Subscript[Y, 2][t] - 
          Subscript[Y, 3][t])^2 + (Subscript[Z, 2][t] - 
          Subscript[Z, 3][t])^2)^(3/
      2) (Subscript[Z, 2][t] - Subscript[Z, 3][t]),
   Subscript[X, 3]''[
     t] == -((
       G Subscript[M, 
        2])/((Subscript[X, 3][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 3][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 3][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[X, 3][t] - Subscript[X, 2][t]) - (
      G Subscript[M, 
       1])/((Subscript[X, 3][t] - 
          Subscript[X, 1][t])^2 + (Subscript[Y, 3][t] - 
          Subscript[Y, 1][t])^2 + (Subscript[Z, 3][t] - 
          Subscript[Z, 1][t])^2)^(3/
      2) (Subscript[X, 3][t] - Subscript[X, 1][t]),
   Subscript[Y, 3]''[
     t] == -((
       G Subscript[M, 
        2])/((Subscript[X, 3][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 3][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 3][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[Y, 3][t] - Subscript[Y, 2][t]) - (
      G Subscript[M, 
       1])/((Subscript[X, 3][t] - 
          Subscript[X, 1][t])^2 + (Subscript[Y, 3][t] - 
          Subscript[Y, 1][t])^2 + (Subscript[Z, 3][t] - 
          Subscript[Z, 1][t])^2)^(3/
      2) (Subscript[Y, 3][t] - Subscript[Y, 1][t]),
   Subscript[Z, 3]''[
     t] == -((
       G Subscript[M, 
        2])/((Subscript[X, 3][t] - 
           Subscript[X, 2][t])^2 + (Subscript[Y, 3][t] - 
           Subscript[Y, 2][t])^2 + (Subscript[Z, 3][t] - 
           Subscript[Z, 2][t])^2)^((3/
       2))) (Subscript[Z, 3][t] - Subscript[Z, 2][t]) - (
      G Subscript[M, 
       1])/((Subscript[X, 3][t] - 
          Subscript[X, 1][t])^2 + (Subscript[Y, 3][t] - 
          Subscript[Y, 1][t])^2 + (Subscript[Z, 3][t] - 
          Subscript[Z, 1][t])^2)^(3/
      2) (Subscript[Z, 3][t] - Subscript[Z, 1][t]),
   Subscript[X, 1][0] == Subscript[X, 10],
   Subscript[Y, 1][0] == Subscript[Y, 10],
   Subscript[Z, 1][0] == Subscript[Z, 10],
   Subscript[X, 2][0] == Subscript[X, 20],
   Subscript[Y, 2][0] == Subscript[Y, 20],
   Subscript[Z, 2][0] == Subscript[Z, 20],
   Subscript[X, 3][0] == Subscript[X, 30],
   Subscript[Y, 3][0] == Subscript[Y, 30],
   Subscript[Z, 3][0] == Subscript[Z, 30],
   Subscript[X, 1]'[0] == Subscript[V, x10],
   Subscript[Y, 1]'[0] == Subscript[V, y10],
   Subscript[Z, 1]'[0] == Subscript[V, z10],
   Subscript[X, 2]'[0] == Subscript[V, x20],
   Subscript[Y, 2]'[0] == Subscript[V, y20],
   Subscript[Z, 2]'[0] == Subscript[V, z20],
   Subscript[X, 3]'[0] == Subscript[V, x30],
   Subscript[Y, 3]'[0] == Subscript[V, y30],
   Subscript[Z, 3]'[0] == Subscript[V, z30]
   };
??? = NDSolve[{???}, {Subscript[X, 1][t], Subscript[Y, 1][t], 
    Subscript[Z, 1][t], Subscript[X, 2][t], Subscript[Y, 2][t], 
    Subscript[Z, 2][t], Subscript[X, 3][t], Subscript[Y, 3][t], 
    Subscript[Z, 3][t]}, {t, 0, T}, MaxSteps -> 1000000];
Subscript[JX, 1][t_] := Evaluate[Subscript[X, 1][t] /. ???[[1, 1]]];
Subscript[JY, 1][t_] := Evaluate[Subscript[Y, 1][t] /. ???[[1, 2]]];
Subscript[JZ, 1][t_] := Evaluate[Subscript[Z, 1][t] /. ???[[1, 3]]];
Subscript[JX, 2][t_] := Evaluate[Subscript[X, 2][t] /. ???[[1, 4]]];
Subscript[JY, 2][t_] := Evaluate[Subscript[Y, 2][t] /. ???[[1, 5]]];
Subscript[JZ, 2][t_] := Evaluate[Subscript[Z, 2][t] /. ???[[1, 6]]];
Subscript[JX, 3][t_] := Evaluate[Subscript[X, 3][t] /. ???[[1, 7]]];
Subscript[JY, 3][t_] := Evaluate[Subscript[Y, 3][t] /. ???[[1, 8]]];
Subscript[JZ, 3][t_] := Evaluate[Subscript[Z, 3][t] /. ???[[1, 9]]];
Manipulate[
 Show[
  ParametricPlot3D[{{Subscript[JX, 1][t], Subscript[JY, 1][t], 
     Subscript[JZ, 1][t]}, {Subscript[JX, 2][t], Subscript[JY, 2][t], 
     Subscript[JZ, 2][t]}, {Subscript[JX, 3][t], Subscript[JY, 3][t], 
     Subscript[JZ, 3][t]}, {0, 0, t}, {0, 0, -t}, {0, t, 0}, {0, -t, 
     0}, {t, 0, 0}, {-t, 0, 0}}, {t, 0, T}, 
   PlotRange -> {{-R, R}, {-R, R}, {-R, R}}, AspectRatio -> 1, 
   PlotStyle -> {Red, Green, Purple, Black, Black, Black, Black, 
     Black, Black}, PlotTheme -> "Classic", ImageSize -> 30*30, 
   Axes -> False, Boxed -> False],
  ParametricPlot3D[{{Subscript[JX, 1][x], Subscript[JY, 1][x], 
     Subscript[JZ, 1][x]}, {Subscript[JX, 2][x], Subscript[JY, 2][x], 
     Subscript[JZ, 2][x]}, {Subscript[JX, 3][x], Subscript[JY, 3][x], 
     Subscript[JZ, 3][x]}}, {t, 0, T}, 
   PlotRange -> {{-R, R}, {-R, R}, {-R, R}}, AspectRatio -> 1, 
   PlotStyle -> Thickness[0.01], AspectRatio -> 1, ImageSize -> 30*30,
    Axes -> False, Boxed -> False]
  ]
 , {x, 0, T}
 ]

```

---

<div class="post-metadata">

**Author:** ![natur71828](https://avatars.discourse-cdn.com/v4/letter/n/a87d85/32.png) [@natur71828](https://community.wolfram.com/u/natur71828)\
**Post date:** [February 3, 2017, 2:34am UTC](https://community.wolfram.com/t/simulation-for-the-three-body-problem/9969/2 "2017-02-03T02:34:56Z")

</div>

Another:

```
R = 5; G = 1; T = 15; Subscript[M, 1] = 5; Subscript[M, 2] = 1; \
Subscript[M, 3] = 1; Subscript[X, 10] = 0; Subscript[Y, 10] = 0; \
Subscript[Z, 10] = 0; Subscript[X, 20] = -5; Subscript[Y, 20] = 0; \
Subscript[Z, 20] = 0; Subscript[X, 30] = 3; Subscript[Y, 30] = 0; \
Subscript[Z, 30] = 1; Subscript[V, x10] = 0; Subscript[V, y10] = 0; \
Subscript[V, z10] = 0; Subscript[V, x20] = 0; Subscript[V, y20] = \
1/2; Subscript[V, z20] = 0; Subscript[V, x30] = 0; Subscript[V, y30] \
= -1/2; Subscript[V, z30] = 0;

```

![71351.gif](https://global.discourse-cdn.com/wolfram/original/3X/d/c/dcf94a238f14201610d5bf8d6cf13066bac06bf6.gif)
