MathGroup Archive 2009

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

Search the Archive

Re: Non-Linear pendulum

  • To: mathgroup at smc.vnet.net
  • Subject: [mg104910] Re: [mg104874] Non-Linear pendulum
  • From: Mark McClure <mcmcclur at unca.edu>
  • Date: Fri, 13 Nov 2009 05:53:20 -0500 (EST)
  • References: <200911121104.GAA18781@smc.vnet.net>

On Thu, Nov 12, 2009 at 6:04 AM, Allamarein <matteo.diplomacy at gmail.com> wrote:
> I'm getting to know Mathematica. I want to compile a code to see the
> non-linear pendulum behavior.

There's a syntax error in your code.  Also, you define s to be the
solution arising
from NDSolve but then never refer to it again.  NDSolve returns its solution in
terms of an InterpolatingFunction which you need to incorporate into your
subsequent code.

Here's your equation:
Clear[th];
l = 20;
g = 9.81;
s = NDSolve[{
    th''[t] == -g/l Sin[th[t]],
    th[0] == Pi/2, th'[0] == 0},
   th, {t, 0, 30}];
th[t_] = th[t] /. s[[1]];

I've done just a couple of things here.  I changed your typeset \[Theta] to a
th, which I find to be more readable in a newsgroup like this and I've defined
th[t] using the solution from NDSolve.  I think that having the
Clear[th] at the
begininng is a good idea too, in case you need to re-execute the code.

Now, I'm going to make a little change to your definition of pendulum, basically
making it a function of t that takes rotation into account.

pendulum[t_] := Rotate[{Line[{{0, 0}, {0, -1}}],
    Circle[{0, -1.3}, 0.3]}, th[t], {0, 0}];

Now, the following animation should do what you want.

Animate[Graphics[pendulum[t],
  PlotRange -> {{-1.8, 1.8}, {-1.8, 0.5}}],
 {t, 0, 30}]

Mark McClure


  • Prev by Date: Re: Non-Linear pendulum
  • Next by Date: Re: Solving Weissinger's ODE
  • Previous by thread: Non-Linear pendulum
  • Next by thread: Re: Non-Linear pendulum