Normal Modes of a Double Pendulum

Manipulate[
With[{g=9.8},
mmat={{(m1+m2) l1^2,m2 l1 l2},{m2 l1 l2,m2 l2^2}};
kmat={{(m1+m2) g l1,0},{0,m2 g l2}};
{vals,vecs}=Eigensystem[{kmat,mmat}];If[view=="2D",If[m==1,ω=Sqrt[vals[[2]]];Graphics[{{Thickness[.01],Line[{{-3.25,0},{3.25,0}}]},Line[{{0,0},{l1 Sin[vecs[[2,1]] Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]]}}],Disk[{l1 Sin[vecs[[2,1]] Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]]},1/10],Line[{{l1 Sin[vecs[[2,1]] Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]]},{l1 Sin[vecs[[2,1]] Cos[ω t]]+l2 Sin[vecs[[2,2]]Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]]-l2 Cos[vecs[[2,2]]Cos[ω t]]}}],Disk[{l1 Sin[vecs[[2,1]] Cos[ω t]]+l2 Sin[vecs[[2,2]] Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]]-l2 Cos[vecs[[2,2]] Cos[ω t]]},1/10],Text[Row[{Style["(Subscript[ω, 1])="],ω,Style[" rad / s"]}],{2.4,-0.25}]},ImageSize->{400,375},PlotRange->{{-3.25,3.25},{-3.25,0}}],
ω=Sqrt[vals[[1]]];Graphics[{{Thickness[.01],Line[{{-3.25,0},{3.25,0}}]},Line[{{0,0},{l1 Sin[vecs[[1,1]] Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]]}}],Disk[{l1 Sin[vecs[[1,1]] Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]]},1/10],Line[{{l1 Sin[vecs[[1,1]] Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]]},{l1 Sin[vecs[[1,1]] Cos[ω t]]+l2 Sin[vecs[[1,2]]Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]]-l2 Cos[vecs[[1,2]]Cos[ω t]]}}],Disk[{l1 Sin[vecs[[1,1]] Cos[ω t]]+l2 Sin[vecs[[1,2]] Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]]-l2 Cos[vecs[[1,2]] Cos[ω t]]},1/10],Text[Row[{Style["(Subscript[ω, 2])="],ω,Style[" rad / s"]}],{2.4,-0.25}]},ImageSize->{400,375},PlotRange->{{-3.25,3.25},{-3.25,0}}]],If[m==1,ω=Sqrt[vals[[2]]];Graphics3D[{{Black,Cylinder[{{0,0,0},{0,1,0}},0.75]},Line[{{0,0,0},{l1 Sin[vecs[[2,1]] Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]],0}}],Sphere[{l1 Sin[vecs[[2,1]] Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]],0},1/10],Line[{{l1 Sin[vecs[[2,1]] Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]],0},{l1 Sin[vecs[[2,1]] Cos[ω t]]+l2 Sin[vecs[[2,2]]Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]]-l2 Cos[vecs[[2,2]]Cos[ω t]],0}}],Sphere[{l1 Sin[vecs[[2,1]] Cos[ω t]]+l2 Sin[vecs[[2,2]] Cos[ω t]],-l1 Cos[vecs[[2,1]] Cos[ω t]]-l2 Cos[vecs[[2,2]] Cos[ω t]],0},1/10],Text[Row[{Style["(Subscript[ω, 1])="],ω,Style[" rad / s"]}],{1.6,-0.5,0}]},ImageSize->{400,375},PlotRange->{{-3.25,3.25},{-3.25,0},{-3.25,3.25}},ViewPoint->Above],
ω=Sqrt[vals[[1]]];Graphics3D[{{Black,Cylinder[{{0,0,0},{0,1,0}},0.75]},Line[{{0,0,0},{l1 Sin[vecs[[1,1]] Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]],0}}],Sphere[{l1 Sin[vecs[[1,1]] Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]],0},1/10],Line[{{l1 Sin[vecs[[1,1]] Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]],0},{l1 Sin[vecs[[1,1]] Cos[ω t]]+l2 Sin[vecs[[1,2]]Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]]-l2 Cos[vecs[[1,2]]Cos[ω t]],0}}],Sphere[{l1 Sin[vecs[[1,1]] Cos[ω t]]+l2 Sin[vecs[[1,2]] Cos[ω t]],-l1 Cos[vecs[[1,1]] Cos[ω t]]-l2 Cos[vecs[[1,2]] Cos[ω t]],0},1/10],Text[Row[{Style["(Subscript[ω, 2]) = "],ω,Style[" rad / s"]}],{1.6,-0.5,0}]},ImageSize->{400,375},PlotRange->{{-3.25,3.25},{-3.25,0},{-3.25,3.25}},ViewPoint->Above]]
]],
{{m1,1,"(Subscript[m, 1]) (kg)"},0.5,1.5,.01,Appearance->"Labeled",ImageSize->Tiny},
{{m2,1,"(Subscript[m, 2]) (kg)"},0.5,1.5,.01,Appearance->"Labeled",ImageSize->Tiny},
{{l1,1,"(Subscript[ℓ, 1]) (m)"},0.5,1.5,.01,Appearance->"Labeled",ImageSize->Tiny},
{{l2,1,"(Subscript[ℓ, 2]) (m)"},0.5,1.5,.01,Appearance->"Labeled",ImageSize->Tiny},
{{t,0,"time (s)"},0,17.0,.01,Appearance->"Labeled",ImageSize->Tiny},
{{m,1,"mode"},1,2,1,ControlType->RadioButton},
{{view,"3D"},{"2D","3D"}},
TrackedSymbols->True,ControlPlacement->Left]

The concept of normal modes of a mechanical system is nicely illustrated by a double pendulum. The normal modes of a mechanical system are single frequency solutions to the equations of motion; the most general motion of the system is a superposition of its normal modes. You can adjust the controls to determine how the masses and lengths of the component pendula affect the normal modes. The symmetric mode of oscillation is always of a lower frequency than the antisymmetric mode of oscillation.

The Lagrangian, L, of the system is given by L=T-V, where T and V are the kinetic energy and the potential energy of the system. If we choose as our generalized coordinates the set {(Subscript[φ, 1]), (Subscript[φ, 2])}, where (Subscript[φ, i]) represents the angular displacement of the (i^th) mass from the vertical, then T=(1/2)(Subscript[m, 1])(Subscript[ℓ, 1]^2)(Subscript[(OverDot[φ]), 1]^2)+(1/2)(Subscript[m, 2])(Subscript[ℓ, 1]^2)(Subscript[(OverDot[φ]), 1]^2)+(1/2)(Subscript[m, 2])(Subscript[ℓ, 2]^2)(Subscript[(OverDot[φ]), 2]^2)+(Subscript[m, 2])(Subscript[ℓ, 1])(Subscript[ℓ, 2])(Subscript[(OverDot[φ]), 1])(Subscript[(OverDot[φ]), 2])(Subscript[(Overscript[e, ⋀]), (Subscript[φ, 1])])·(Subscript[(Overscript[e, ⋀]), (Subscript[φ, 2])]), where (Subscript[(Overscript[e, ⋀]), (Subscript[φ, i])]) is a unit vector pointing in the direction of increasing (Subscript[φ, i]) and V=(Subscript[m, 1])g ((Subscript[ℓ, 1])-(Subscript[ℓ, 1])cos((Subscript[φ, 1]))) + (Subscript[m, 2])g((Subscript[ℓ, 1])+(Subscript[ℓ, 2])-(Subscript[ℓ, 1])cos((Subscript[φ, 1]))-(Subscript[ℓ, 2])cos((Subscript[φ, 2]))), where g is the acceleration due to gravity, approximately 9.8m·(s^(-2)) near the surface of the Earth. If (Subscript[φ, 1]) and (Subscript[φ, 2]) are both small, then (Subscript[(Overscript[e, ⋀]), (Subscript[φ, 1])])·(Subscript[(Overscript[e, ⋀]), (Subscript[φ, 2])])≈1 and T≈(1/2)(Subscript[m, 1])(Subscript[ℓ, 1]^2)(Subscript[(OverDot[φ]), 1]^2)+(1/2)(Subscript[m, 2])(Subscript[ℓ, 1]^2)(Subscript[(OverDot[φ]), 1]^2)+(1/2)(Subscript[m, 2])(Subscript[ℓ, 2]^2)(Subscript[(OverDot[φ]), 2]^2)+(Subscript[m, 2])(Subscript[ℓ, 1])(Subscript[ℓ, 2])(Subscript[(OverDot[φ]), 1])(Subscript[(OverDot[φ]), 2]). Similarly, if (Subscript[φ, i]) is small, then cos((Subscript[φ, i]))≈ 1-((Subscript[φ, i]^2)/2) and V≈(1/2)((Subscript[m, 1])g (Subscript[ℓ, 1])(Subscript[φ, 1]^2) + (Subscript[m, 2])g (Subscript[ℓ, 1])(Subscript[φ, 1]^2)+(Subscript[m, 2])g (Subscript[ℓ, 2])(Subscript[φ, 2]^2)). With these approximations, we can write L=(1/2)((OverDot[q])^T)M (OverDot[q])-(1/2)(q^T)K q, where q=(({{(Subscript[φ, 1])}, {(Subscript[φ, 2])}})), M =(({{(Subscript[ℓ, 1]^2)((Subscript[m, 1])+(Subscript[m, 2])), (Subscript[m, 2])(Subscript[ℓ, 1])(Subscript[ℓ, 2])}, {(Subscript[m, 2])(Subscript[ℓ, 1])(Subscript[ℓ, 2]), (Subscript[m, 2])(Subscript[ℓ, 2]^2)}})), K =(({{((Subscript[m, 1])+(Subscript[m, 2]))g (Subscript[ℓ, 1]), 0}, {0, (Subscript[m, 2]) g (Subscript[ℓ, 2])}})), and all vector and matrix components refer to the standard basis of (ℝ^2), B={(({{1}, {0}})),(({{0}, {1}}))}. It is helpful to find a new basis B' in which both M and K are diagonal. The components of q in B' ((Subscript[Φ, 1])and (Subscript[Φ, 2])) are called normal coordinates and it is helpful to consider Lagrange's equations of motion to fully understand their importance. (d/(dt))(((∂L)/(∂(Subscript[(OverDot[φ]), i]))))=(((∂L)/(∂(Subscript[φ, i]))))⟹(({{(Subscript[ℓ, 1]^2)((Subscript[m, 1])+(Subscript[m, 2])), (Subscript[m, 2])(Subscript[ℓ, 1])(Subscript[ℓ, 2])}, {(Subscript[m, 2])(Subscript[ℓ, 1])(Subscript[ℓ, 2]), (Subscript[m, 2])(Subscript[ℓ, 2]^2)}}))(({{(Subscript[(Overscript[φ, ¨]), 1])}, {(Subscript[(Overscript[φ, ¨]), 2])}}))=-(({{((Subscript[m, 1])+(Subscript[m, 2]))g (Subscript[ℓ, 1]), 0}, {0, (Subscript[m, 2]) g (Subscript[ℓ, 2])}}))(({{(Subscript[φ, 1])}, {(Subscript[φ, 2])}})) or M (Overscript[q, ¨]) + K q=0. Thus, the off-diagonal components of M couple the differential equations governing the motions (Subscript[φ, 1]) and (Subscript[φ, 2]). In the new basis B' both M and K are diagonal and the equation M (Overscript[q, ¨]) + K q=0 takes the form (({{(Subscript[M, 11]), 0}, {0, (Subscript[M, 22])}}))(({{(Subscript[(Overscript[Φ, ¨]), 1])}, {(Subscript[(Overscript[Φ, ¨]), 2])}}))=-(({{(Subscript[K, 11]), 0}, {0, (Subscript[K, 12])}}))(({{(Subscript[Φ, 1])}, {(Subscript[Φ, 2])}})). Thus, the components of q in the new basis B' (i.e., the normal coordinates) satisfy a set of homogeneous second order linear differential equations, each of which corresponds to the motion of a simple harmonic oscillator (SHO). To find the basis B', we substitute a SHO solution of the form q =a cos(ω t) into Lagrange's equations of motion (M (Overscript[q, ¨]) + K q=0) and find that -M a (ω^2)cos(ωt)+K a cos(ωt)=0 or K a=(ω^2) M a. This generalized eigenvalue equation is tackled by solving the secular equation det(K-(ω^2)M)=0 for the eigenvalues {(ω^2)} and substituting these values back into (K -(ω^2) M) a=0 to determine the eigenvectors {a}. (Alternatively, we can solve a generalized eigenvalue problem using Mathematica's convenient Eigensystem[{K,M}] command.) The normalized eigenvectors {a} form the new basis B' and correspond to the normal modes of motion and the associated eigenvalues correspond to the square of the eigenfrequencies at which the various modes vibrate. In a particular mode all generalized coordinates vibrate with the same frequency (the eigenfrequency, or normal frequency, of the mode), while the corresponding eigenvector provides the amplitude of each generalized coordinate's vibration.

G. R. Fowles and G. L. Cassiday, Analytical Mechanics, 6th ed., Fort Worth: Saunders College Publishing, 1999.

F. W. Byron, Jr. and R. W. Fuller, Mathematics of Classical and Quantum Physics, New York: Dover Publications, 1992.

Contributed by: David L. Pincus