Simulate a Bouncing Ball
ball = NDSolve[{y''[t] == -9.81, y[0] == 13.5, y'[0] == 0, WhenEvent[y[t] == 0, y'[t] -> -0.95y'[t]]}, y, {t, 0, 10}];kin[v_] := .5 v ^ 2;
pot[y_] := 9.8y;
energy[y_, v_] := kin[v] + pot[y];
GraphicsGrid[{{Plot[y[t] /. ball, {t, 0, 10}, AxesLabel -> {"t", "y"}], Plot[Evaluate[{kin[y'[t]], pot[y[t]], energy[y[t], y'[t]]} /. ball], {t, 0, 10}, Filling -> {3 -> 0}, AxesLabel -> {"t", "energy"}]}}]{ballsteps, {points}} = NDSolve[{x''[t] == 0, y''[t] == -9.8, y[0] == 6, y'[0] == 0, x[0] == 0, x'[0] == 1, a[0] == 5, WhenEvent[Mod[x[t], 1] == 0, If[a[t] > 0, a[t] -> a[t] - 1, "RemoveEvent"]], WhenEvent[y[t] == a[t], {{x'[t], y'[t]} -> .9{x'[t], -y'[t]}, Sow[{x[t], y[t]}]}]}, {x, y, a}, {t, 0, 15}, DiscreteVariables -> {a}]//Reap;GraphicsGrid[{{Show[ParametricPlot[Evaluate[{{x[t], y[t]}, {x[t], a[t]}} /. ballsteps], {t, 0, 15}, ImageSize -> 300, Epilog -> {Red, PointSize[Medium], Point[points]}], Plot[{0, Floor[6 - x]}, {x, -1, 15}, Filling -> {2 -> 0}, Exclusions -> None], Frame -> {{True, False}, {True, False}}, FrameLabel -> {"x", "y"}], Plot[Evaluate[{kin[y'[t]], pot[y[t]], energy[y[t], Norm[{x'[t], y'[t]}]]} /. ballsteps], {t, 0, 15}, Filling -> {3 -> 0}, Frame -> {{True, False}, {True, False}}, FrameLabel -> {"t", "energy"}, Ticks -> None]}}]