Function Repository Resource:

DoublePendulumFormula

Source Notebook

Compute the final angles of a double pendulum based on initial conditions

Contributed by: Jason Martinez

ResourceFunction["DoublePendulumFormula"][parameters,initalcond]

computes the pendulum angles based on system parameters and initial conditions initialcond.

ResourceFunction["DoublePendulumFormula"][property]

returns the specified property of the double pendulum formula.

Details and Options

To solve for the final angles of a double pendulum, the following system parameters must be defined in parameters:
l1pendulum 1 length
l2pendulum 2 length
m1pendulum 1 mass
m2pendulum 2 mass
Gravitational acceleration "g" can also be specified. If unspecified, it is assumed to be equal to the "StandardAccelerationOfGravity".
Additionally, the following initial conditions must be defined in initialcond:
ttime
θ1,ipendulum 1 initial angle from vertical
θ2,ipendulum 2 initial angle from vertical
In addition to the final pendulum angles, the solutions for the angle evolutions ("Angle1Solution", "Angle2Solution") from the inital time to the final time t are provided.
Properties include:
"Formula"equations for double pendulum
"QuantityVariableDimensions"list of base dimensions for all variables
"QuantityVariableNames"English names for all variables
"QuantityVariablePhysicalQuantities"physical quantities for all variables
"QuantityVariables"list of all variables
"QuantityVariableTable"details on all variables

Examples

Basic Examples (2) 

Solve for the final angles from the vertical for a double pendulum:

In[1]:=
ResourceFunction["DoublePendulumFormula"][
 Association["l1" -> Quantity[1, "Meters"], "l2" -> Quantity[1, "Meters"], "m1" -> Quantity[0.1, "Kilograms"], "m2" -> Quantity[0.1, "Kilograms"]], Association["theta1i" -> Quantity[57, "AngularDegrees"], "theta2i" -> Quantity[25, "AngularDegrees"], "t" -> Quantity[10, "Seconds"]]]
Out[1]=

Specify gravitational acceleration:

In[2]:=
ResourceFunction["DoublePendulumFormula"][
 Association["l1" -> Quantity[1, "Meters"], "l2" -> Quantity[1, "Meters"], "m1" -> Quantity[0.1, "Kilograms"], "m2" -> Quantity[0.1, "Kilograms"], "g" -> Entity["Planet", "Mars"][
    EntityProperty["Planet", "Gravity"]]], Association["theta1i" -> Quantity[57, "AngularDegrees"], "theta2i" -> Quantity[25, "AngularDegrees"], "t" -> Quantity[10, "Seconds"]]]
Out[2]=

Scope (3) 

Examine the equations of motion for a double pendulum:

In[3]:=
ResourceFunction["DoublePendulumFormula"]["Formula"]
Out[3]=

Find the quantity variables used by the DoublePendulumFormula:

In[4]:=
ResourceFunction["DoublePendulumFormula"]["QuantityVariables"]
Out[4]=

Obtain their formal names:

In[5]:=
ResourceFunction["DoublePendulumFormula"]["QuantityVariableNames"]
Out[5]=

Derive the physical quantities and unit dimensions of the variables:

In[6]:=
ResourceFunction[
 "DoublePendulumFormula"]["QuantityVariablePhysicalQuantities"]
Out[6]=
In[7]:=
ResourceFunction[
 "DoublePendulumFormula"]["QuantityVariableDimensions"]
Out[7]=

A table combining all the information about the quantity variables used or derived by DoublePendulumFormula:

In[8]:=
ResourceFunction["DoublePendulumFormula"]["QuantityVariableTable"]
Out[8]=

Applications (1) 

See how the pendulum angles evolve over time:

In[9]:=
result = ResourceFunction["DoublePendulumFormula"][
   Association["l1" -> Quantity[1, "Meters"], "l2" -> Quantity[1, "Meters"], "m1" -> Quantity[0.1, "Kilograms"],
     "m2" -> Quantity[0.1, "Kilograms"]], Association["theta1i" -> Quantity[57, "AngularDegrees"], "theta2i" -> Quantity[25, "AngularDegrees"], "t" -> Quantity[10, "Seconds"]]];
In[10]:=
Plot[{result["Angle1Solution"][t], result["Angle2Solution"][t]}, {t, 0, 10}]
Out[10]=

Version History

  • 1.0.0 – 11 November 2019

License Information