Message Boards Message Boards

[✓] Derive, solve and plot the equations of motion for the double pendulum?

GROUPS:

I am trying to derive the equations of motion for the double pendulum and then solve and plot it. Unfortunately, it does not work. Any suggestions?

Remove[l1, l2, m1, m2, g]
x1 = l1*Sin[\[Theta]1[t]];
x1' = D[x1, t];
y1 = -l1*Cos[\[Theta]1[t]];
y1' = D[y1, t];
x2 = l2*Sin[\[Theta]2[t]] + x1;
x2' = D[x2, t];
y2 = -l2*Cos[\[Theta]2[t]] + y1;
y2' = D[y2, t];

V = m1*g*y1 + m2*g*y2;
T = m1/2*(x1' + y1')^2 + m2*(x2' + y2')^2;
Lagrange = T - V;

eqs = D[D[Lagrange, \[Theta]'], t] - D[Lagrange, \[Theta]];
sol = NDSolve[{eqs == 0, \[Theta]1[0] = Pi, \[Theta]2[0] = 
     Pi, \[Theta]1'[0] = 0, \[Theta]2'[0] = 
     0}, {\[Theta]1, \[Theta]2}, {t, 0, 10}];

l1 = 1;
l2 = 1;
g = 9.81;
m1 = 1;
m2 = 1;

Plot[{\[Theta]1, \[Theta]2}, {t, 0, 10}]
POSTED BY: Jonas Hamp
Answer
6 months ago

Disregarding physics and considering what you have done only programming-wise

  1. Boundary conditions need to be used with equal (==) rather then Set (i.e, a single = sign)
  2. There is a problem with the differentiation (the first part)
  3. You have two variables but only one differential equation, so after correcting the mistakes, you are still left with insoluble problem since NDSolve (or any other solution solution method, be it computational or analytical) will not be able to solve this.

Here is the corrected code, you may continue from there

l1 = 1;
l2 = 1;
g = 9.81;
m1 = 1;
m2 = 1;
x1 = l1*Sin[\[Theta]1[t]];
x1' = D[x1, t];
y1 = -l1*Cos[\[Theta]1[t]];
y1' = D[y1, t];
x2 = l2*Sin[\[Theta]2[t]] + x1;
x2' = D[x2, t];
y2 = -l2*Cos[\[Theta]2[t]] + y1;
y2' = D[y2, t];

V = m1*g*y1 + m2*g*y2;
T = m1/2*(x1' + y1')^2 + m2*(x2' + y2')^2;
Lagrange = T - V

eqs = D[D[Lagrange, \[Theta]'[t]], t] - D[Lagrange, \[Theta]];
sol = NDSolve[{Lagrange == 0, \[Theta]1[0] == Pi, \[Theta]2[0] == 
    Pi, \[Theta]1'[0] == 0, \[Theta]2'[0] == 
    0}, {\[Theta]1, \[Theta]2}, {t, 0, 10}]

HTH

yehuda

POSTED BY: Yehuda Ben-Shimol
Answer
6 months ago

I think your expression for the kinetic energy is incorrect.

POSTED BY: Frank Kampas
Answer
6 months ago

Thank you, I corrected it, but the output says:

NDSolve::deqn: Equation or list of equations expected instead of True in the first argument {True,\[Pi],\[Pi],0,0}.
NDSolve::deqn: Equation or list of equations expected instead of True in the first argument {True,\[Pi],\[Pi],0,0}.
POSTED BY: Jonas Hamp
Answer
6 months ago

Group Abstract Group Abstract