# 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[0] == 271811883, x'[0] == 0, y[0] == 271811883, y'[0] == 0, z[0] == 0, z'[0] == 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}]; 
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
 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