# Create a two body problem animation?

Posted 2 months ago
400 Views
|
2 Replies
|
2 Total Likes
|
 I am trying to animate the restricted three body problem in Mathematica (general case, not circular RTBP). But before, I need to solve differential equations of the two-body problem. I am facing some code errors with animation. Please, help me to fix this problem. Thanks a lot.  f = 6.6743*10^(-11); m1 = 7.34767309*10^(22); m2 = 5.97219*10^(24); e = 0.0549006; a = 384748; p = a*(1 - e^2); c = Sqrt[ f*(m1 + m2)*p]; eq1 = {x''[t] == - (( f*(m1 + m2) *x[t])/(x[t]^2 + y[t]^2 + z[t]^2)^3), y''[t] == -(( f*(m1 + m2) *y[t])/(x[t]^2 + y[t]^2 + z[t]^2)^3), z''[t] == -((f*(m1 + m2) *z[t])/(x[t]^2 + y[t]^2 + z[t]^2)^3)}; rul1 = {Subscript[r, j_] -> Sqrt[ Subscript[x, j][t]^2 + Subscript[y, j][t]^2 + Subscript[z, j][t]^2]}; initial = {x == 271811883, x' == 0, y == 271811883, y' == 0, z == 0, z' == 0}; sol = NDSolve[{eq1, initial}, {x[t], y[t], z[t]}, {t, 0, 50}]; obj[t1_] := ParametricPlot[[{x[t], y[t], z[t]} /. sol], {t, 0, 50}, AxesLabel -> {"x", "y", "z"}]; Manipulate[obj[t1], {t1, 0, 50}]; Answer
2 Replies
Sort By:
Posted 2 months ago
 Torebek,Your syntax is wrong on NDSolve: sol = NDSolve[Join[eq1, initial], {x, y, z}, {t, 0, 50}] but you will have numerical issues. I'm guessing that it is due to the numbers you specified. (your initial conditions seem small compared to your masses.)In version 12 there is a command that will do it for you. See NBodySimulation. You can verify against that or use it directly.Regards,Neil Answer
Posted 1 month ago
 You have too many square brackets and ParameterPlot is 2D ParameterPlot3D is 3D so you would need that for 3 coordinates. Also t1 is never used anywhere inside of obj[]. It would look something like ParametricPlot3D[{x[t], y[t], z[t]} /. sol, {t, 0, 50}, AxesLabel -> {"x", "y", "z"}]; Also note that with your initial conditions and parameters the masses do not move so there is nothing to plot but a point.I hope this helps.Regards,Neil Answer