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