Line changes length in animation

• To: mathgroup at smc.vnet.net
• Subject: [mg109333] Line changes length in animation
• From: Jens-Christian Underberg <mail at example.invalid>
• Date: Thu, 22 Apr 2010 03:31:05 -0400 (EDT)

```Hello,

I have two problems with the attached code simulateing a chaotic pendulum.

The first one seems easy: the replacement by sol doesn't seem to work
and I cannot see why.

Without the Module I got it working, but another strange problem: In the
animation, the length of the pendulum changes, although that is not
explicable by numeric errors, since the Lagrange equations only give
angles. The length is given bei the constraints ...

Does anyone have any idea?

Best regards
Jens-Christian

Pendel[Theta1_, Theta2_, Theta3_, Theta1p_, Theta2p_, Theta3p_, l1_,
l2_, l3_, m1_, m2_, m3_, g_, tmax_] :=
Module[{EQ1, EQ2, EQ3, length, params, x1, x2, x3, z1, z2, z3, L, L2,
Pendel1, Pendel2, Pendel3},
L[z1_, z2_, z3_, x1p_, x2p_, x3p_, z1p_, z2p_, z3p_] =
1/2 m1 (x1p2 + z1p2) + 1/2 m2 (x2p2 + z2p2) +
1/2*m3*(x3p2 + z3p2) + m1*g*z1 + m2*g*z2 + m2*g*z3;
x1[t_ ] = l1*Sin[\[Theta]1[t]];
z1[t_] = l1*Cos[\[Theta]1[t]];
x2[t_] = x1[t] + l2*Sin[\[Theta]2[t]];
z2[t_] = z1[t] + l2*Cos[\[Theta]2[t]];
x3[t_] = x1[t] + x2[t] + l3*Sin[\[Theta]3[t]];
z3[t_] = z1[t] + z2[t] + l3*Cos[\[Theta]3[t]];
L2 = L[ z1[t], z2[t], z3[t], x1'[t], x2'[t], x3'[t], z1'[t], z2'[t],
z3'[t]];
EQ1 = D[D[L2, \[Theta]1'[t]], t] - D[L2, \[Theta]1[t]] == 0;
EQ2 = D[D[L2, \[Theta]2'[t]], t] - D[L2, \[Theta]2[t]] == 0;
EQ3 = D[D[L2, \[Theta]3'[t]], t] - D[L2, \[Theta]3[t]] == 0;
sol = NDSolve[{\[Theta]1[0] == Theta1, \[Theta]2[0] ==
Theta2, \[Theta]3[0] == Theta3, \[Theta]1'[0] ==
Theta1p, \[Theta]2'[0] == Theta2p, \[Theta]3'[0] == Theta3p,
EQ1, EQ2, EQ3} , {\[Theta]1[t], \[Theta]2[t], \[Theta]3[t]}, {t,
0, tmax}, MaxSteps -> 109, MaxStepSize -> 0.001]  // Flatten;
Pendel1[t_] = ({x1[t], -z1[t]} /. sol) ;
Pendel2[t_] =  ({x2[t], -z2[t]} /. sol) ;
Pendel3[t_] =  ({x3[t], -z3[t]} /. sol) ;
length = 2*(l1 + l2 + l3) ;
Animate[
Show[ParametricPlot[Pendel3[s], {s, 0, t},
PlotRange -> {{-length, length}, {-length, length}}],
Graphics[{Line[{{0, 0}, Pendel1[t], Pendel2[t], Pendel3[t]}],
Disk[Pendel1[t], Sqrt[m1]/5], Disk[Pendel2[t], Sqrt[m2]/5],
Disk[Pendel3[t], Sqrt[m3]/5]},
PlotRange -> {{-length, length}, {-length, length}}]], {t, 0,
tmax, 0.001}, AnimationRate -> 0.7] ]

Pendel[Pi/2, 0.3, 0.3, 0, 0, 0, 2, 1, 1, 1, 1, 1, 2, 70]

```

• Prev by Date: Re: Button Problem
• Next by Date: NDSolve cannot solve set of ODEs
• Previous by thread: Re: Download as Live Mathematica from Wolfram|Alpha
• Next by thread: NDSolve cannot solve set of ODEs