Simple gravity pendulum
This activity belongs to the GeoGebra book The Domain of the Time.
This animation simulates the motion of a simple pendulum in real time, disregarding the weight of the rod and friction. The animation does not use formulas (neither trigonometry, nor equations, nor differential calculus), but only performs the necessary variations in the vectors that direct the movement.
A mass, represented by the blue point, is located at the end of the rod, whose initial position you can place anywhere on the left side of the circle, up to an amplitude of 175º. (The angular amplitude is the maximum angle that the pendulum reaches concerning its vertical position.)
The animation varies at each moment both the velocity vector v (in red) and the position M of the mass, due to the action of gravity, whose constant acceleration is represented by the vector g (in dashed green line). This vector can be decomposed into two components: one perpendicular to the rod (in green, gt) and another in the direction of the rod, which does not affect the movement because its effect is canceled out by the rigidity of the rod or, in the case of a string, by the tension in the string (principle of action and reaction, Newton's third law).
We adapt the slider animation script:
SetValue(v, vt + dt gt)
That is, each time a very small amount of time dt passes, by definition of acceleration, the velocity increases by dt gt.
- Note: vt is a vector with the same magnitude as v, but always retains the same direction perpendicular to the rod; it is necessary to change v to vt since if we directly added v with dt gt, the vector v would gradually lose that perpendicularity, as the direction of v a moment before is no longer perpendicular to the rod a moment dt later.
SCRIPT FOR SLIDER anima
# Calculate the elapsed seconds dt; add one second if t1(1) < tt
SetValue(tt, t1(1))
SetValue(t1, First(GetTime(), 3))
SetValue(dt, (t1(1) < tt) + (t1(1) − tt)/1000)
# Move M
SetValue(aux, vt)
SetValue(v, vt + dt gt)
SetValue(M, M + dt v)
# Record the period time and the number of complete oscillations
SetValue(reg, If(x(aux) < 0 ∧ x(vt) > 0, Append(t, reg), reg))
SetValue(osci, If(x(aux) < 0 ∧ x(vt) > 0, osci + 1, osci))
Author of the activity and GeoGebra construction: Rafael Losada.