These exercises are not tied to a specific programming language. Example implementations are provided under the Code tab, but the Exercises can be implemented in whatever platform you wish to use (e.g., Excel, Python, MATLAB, etc.).

For most of the exercises below, the context can be almost any dynamical system, but for concreteness we will focus on a problem that involves a double pendulum hung from a support that moves with constant speed around a vertical circle.
![sample problem diagram](images/lagrangian/diagram.png)
1. Identify the variables and determine an expression for the kinetic and potential energy.
For a given dynamical system, identify the appropriate variables and determine an expression for the kinetic and potential energies (and hence the Lagrangian, which is KE-PE). For later plotting purposes (and animation creations) it's often easiest to come up with expressions for the Cartesian variables of all moving parts. This also makes the determination of the energies easier, especially for simple one dimensional gravity.
2. Determine the appropriate Euler-Lagrange equations
Using a Computer Algebra System determine the equations of motion for the relevant variables (the two angles in the problem above) by calculating the Euler-Lagrange equation:
$$\frac{\partial \mathcal{L}}{\partial q_i(t)}-\frac{d}{dt}\frac{\partial \mathcal{L}}{\partial q_i'(t)}=0$$
3. Produce pseudo-code for the integration of the equations of motion
Each equation of motion is a second-order differential equation. Break each into two first order differential equations by noting that q'(t) can be written as v'(t). Usually q'(t) = v(t) is one of the two first order equations. For each, consider an Euler method style time step procedure to determine the next time step's value for all the q's and all the v's. Finally, identify the proper initial conditions for all the q's and v's.
4. Solve the equations of motion and plot the results and animation
Code the equations of motion into a differential equation solver, along with appropriate initial conditions. Plot the dynamical variables as functions of time and produce an animation of the motion.
5. Determine the equations of motion for a system with a constraint using Lagrange multipliers
To find the value(s) of the constraint force(s), use a Lagrange multiplier. For the tension in the first leg of the double pendulum above, you would have a constraint equations noting that the distance between the support and the first mass is a constant. You would also change all the Euler Lagrange equations:
$$\frac{\partial \mathcal{L}}{\partial q_i(t)}-\frac{d}{dt}\frac{\partial \mathcal{L}}{\partial q_i'(t)}+\sum \lambda_j(t) \frac{\partial C_j}{\partial q_i(t)}=0$$
Where "C" is an expression for the length of the first leg. The differential equation solver now needs to be told about the constraint (or, more usefully, that the second derivative of C is zero) along with the modified Euler-Lagrange equations. Note that because the Lagrange multiplier never has any derivatives taken on it, you don't have to provide initial conditions for it. However, it will (likely) vary in time and so it can be plotted to examine aspects like the maximum force and where or if the force ever changes sign.
6. Add non-conservative forces (friction) to the model
Any non-conservative forces (like viscous friction) can be added to the right hand side of the Euler Lagrange equation. Due to the sign convention weâ€™re using here, they should be added with an extra negative sign. For example, if you wanted to add viscous friction to the first mass in our problem above, the right hand side would be proportional to $\theta'(t)$.