MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Non-Linear pendulum

  • To: mathgroup at smc.vnet.net
  • Subject: [mg104908] Re: Non-Linear pendulum
  • From: Fred Klingener <gigabitbucket at BrockEng.com>
  • Date: Fri, 13 Nov 2009 05:52:57 -0500 (EST)
  • References: <hdgr31$jbl$1@smc.vnet.net>

On Nov 12, 6:21 am, Allamarein <matteo.diplom... at gmail.com> wrote:
> I'm getting to know Mathematica. I want to compile a code to see the
> non-linear pendulum behavior.
>
> pendulum= {Line[{{0, 0}, {0, -1}}], Circle[{0, -1.3}, 0.3]};
> l = 20;
> g = 9.81;
> s = NDSolve[
>    { \[Theta]''[t] == -g /l Sin[\[Theta][t]],
>     \[Theta][0] == Pi/2,
>     \[Theta]'[0] == 0}, \[Theta],
>    {t, 0, 30}];
> Animate[
>  Graphics[Rotate[pendulum, \[Theta[]t], {0, 0}],
>   PlotRange -> {{-2, 2}, {0, -2}}],
>  {t, 0, 30}, AnimationRunning -> False]
>
> This code doesn't work. I realized my error is in Rotate argument. If
> I change this line with:
>
> Graphics[Rotate[pendulum, Sin[t], {0, 0}]
>
> code runs, but it's not the result (obviously).
> How can I correct my code, to see the pendulum oscillates with \[Theta]
> [t] law?

There are two problems. First is a typo. The '/[Theta[]t]' should be '/
[Theta][t]'

The second is more fundamental. NDSolve returns a replacement Rule, so
to get the functional relationship you want, you need a Replace:

\[Theta][t]/.s

Try this first:

Plot[\[Theta][t] /. s, {t, 0, 2 Pi}]

Then this should give you what you want:

Animate[Graphics[Rotate[pendulum, \[Theta][t], {0, 0}] /. s,
  PlotRange -> {{-2, 2}, {0, -2}}], {t, 0, 30},
 AnimationRunning -> False]

Hth,
Fred Klingener


  • Prev by Date: Re: a[n],b[n]
  • Next by Date: Re: Non-Linear pendulum
  • Previous by thread: Re: Non-Linear pendulum
  • Next by thread: Re: Non-Linear pendulum