Making an animation of the motion of a particle

I am new here. I just installed Mathematica and am learning the basics. I need to solve three equations of the motion of a particle using Do, ListPlot, and Animate. Kindly help me to solve me one, then I will do the other two by myself.

vf = vi + a t
s =  vi t + (1/2)a t^2
2as = vf^2 + vi^2

This is what I have tried for first equation.

vi = 0;
vf = 22;
a = 10;
t = 60;
steps = 50;
vi = 0.8;
vf = 1.3;
a = 0.7;
t = 0.0;
Do[vf[n] = vi[n] + a[n]*t[n], {n, 0, steps}]
data = Table[vf[n], {n, 0, steps}];
ListPlot[data]

r = 0.5;
Animate[
Show[Graphics[Disk[{vf[n]}, r], Axes -> True]],
{n, 0, steps, 30}]
• What are you trying to solve for? You have vi, vf, a, t, and vi, vf, a t conflicting. You can't do that. You can solve for at from the first equation with vi and vf, which is different ? from vi and vf. I don't know what vit is, but if you know it, you can solve for s in the second equation, and then solve for a in the last equation. – Bill Watts Dec 30 '17 at 8:15
• @bill watts i am liitle confuse if you give me some hint to do it – rabnawaz Dec 30 '17 at 12:37
• Can't do it with the data you have. vf does not equal vi + a t. Since you assign each variable in that equation, there is nothing to solve for. also 2as should be 2 a s. Multiplication is either * or space. Since s is not assigned, that is the only thing you can solve for, and that only requires your second equation. Everything else is overly and inconsistently specified. – Bill Watts Dec 30 '17 at 18:54

Math problem

vf = vi + a t /. {vi -> 0, a -> 10, t -> 60}

600

This is inconsistent with vf == 22

Mathematica problem

Making assignments to a simple variable and and an indexed variable of the same name (such as t = 60 and t = 0.0) is asking for trouble. This is explained here, but may be too advanced for a beginner, so just accept that you shouldn't do it.

Kinematics problem

For simple kinematics problems like yours, I believe it is better to express the motion as a function rather than as an expression. So

v[t_] := v0 + a t
s[t_] := s0 + v0  t + a/2 t^2

My problem

I have no idea what you are trying to express with the reation

2 as = vf^2 + vi^2

Demonstrating the motion

Now let's see what I can do about making a demonstration of the kinematics. I choose to use Manipulate and Plot rather than Animate and ListPlot. Note that Manipulate supports animation. To run an animation, just click on the "+" on the right of the slider. I prefer Plot over ListPlot because motion is essentially continuous rather than discrete.

The velocity versus time plot

With[{tmax = 60},
Manipulate[
Block[{a = 10., v0 = 0.},
Plot[v[t], {t, 0, tt}, PlotRange -> {{0, tmax}, {v0, v[tmax]}}]],
{{tt, 1, "t"}, 1, tmax, 1, AppearanceElements -> All}]] The distance versus time plot

With[{tmax = 60},
Manipulate[
Block[{a = 10., v0 = 0., s0 = 0.},
Plot[s[t], {t, 0, tt}, PlotRange -> {{0, tmax}, {s0, s[tmax]}}]],
{{tt, 1, "t"}, 1, tmax, 1, AppearanceElements -> All}]] If you insist on using Animate and ListPlot, you might do something like

With[{tmax = 20},
DynamicModule[{vData, sData},
Animate[
Block[{a = 10., v0 = 0., s0 = 0.},
vData = Table[{t, v[t]}, {t, 0, tt}];
sData = Table[{t, s[t]}, {t, 0, tt}];
ListPlot[{vData, sData},
PlotRange -> {{0, tmax}, {0., s[tmax]}},
{{tt, 0, "t"}, 0, tmax, 1}]]] but, in my opinion, it does not elucidate the kinematics a well as the two Manipulate expressions.

• thanks for the help but i tell you seriously i did't understand a single thing. will you do for the first equation of the motion. – rabnawaz Dec 30 '17 at 12:50

There are several issues with your code and the Mathematica syntax. You have to describe your kinematics equations into finite elements. For a constant acceleration, each steps are $\delta t$ apart. You will notice I have used Print to get results out of the With (If not, only the last expression is printed out, the Animate). Try this:

With[{
vi = 0,
\[Delta]t = 0.1,
a = 10,
steps = 50,
r = 0.5},
Do[vf[n] = vi + a*n*\[Delta]t, {n, 0, steps}];
data = Table[vf[n], {n, 0, steps}];
Print[ListPlot[data]];
Animate[Show[Graphics[Disk[{n, vf[n]}, r], PlotRange -> {{0, 50}, {0, 50}},
Axes -> True]], {n, 0, steps, 1}]]