Bouncing Bob Pendulum

Initializing live version
Download to Desktop

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram Player or other Wolfram Language products.

This Demonstration simulates the motion of a double pendulum with the upper bob bouncing back from an obstruction along the vertical axis.


Mathematica's built-in function WhenEvent, triggered whenever the upper bob crosses the vertical, reverses and reduces the angular speed of the upper pendulum and changes the behavior of the lower pendulum accordingly.


Contributed by: Erik Mahieu (February 2024)
With additional contributions by: Franz Brandhuber
Open content licensed under CC BY-NC-SA



In this Demonstration, the upper arm has both mass and length set to 1. The lower arm has mass and length . The angular positions of the arms are and .

Lagrangian mechanics can be used to derive the equations of motion of the double pendulum. The potential energy and kinetic energy of the pendulum are



Adding the kinetic energy and subtracting the potential energy gives the Lagrangian, .

Substituting this into the Euler–Lagrange equations results in the equations of motion:



During the solution of these differential equations, the event θ[t]⩵0 triggers WhenEvent, resulting in an action for each of the angular positions of the bobs: is replaced by and is replaced by , where is the rebound ratio.

The formula for the rebound actions was taken from [1].

Snapshot 3 shows that for a 100% elastic impact (), the total energy stays constant during the animation.


[1] S. Timoshenko and D. H. Young, "Lagrangian Equations for Impulsive Forces," Advanced Dynamics, New York: McGraw-Hill, 1948 pp. 225–230.

Feedback (field required)
Email (field required) Name
Occupation Organization
Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback.