Re: Slow/jerky animations inside manipulate (more details)
- To: mathgroup at smc.vnet.net
- Subject: [mg100672] Re: Slow/jerky animations inside manipulate (more details)
- From: dh <dh at metrohm.com>
- Date: Wed, 10 Jun 2009 17:12:50 -0400 (EDT)
- References: <h0nui5$b8s$1@smc.vnet.net>
Hi, You have to distinguish between global and localized version of a variable. Here I cleand up "tp" and "T1". After this the following runs pretty smooth. ====================================== A = 1; De = 1; xe = 0; tp = 10; Animate[ sols = NDSolve[{q'[t] == p[t], p'[t] == 2 A De (Exp[-2 A (q[t] - xe)] - Exp[-A (q[t] - xe)]), q[0] == q0, p[0] == p0}, {q, p}, {t, 0, 100}][[1]]; p1 = Graphics[{Point[{tp, Evaluate[q /. sols][tp]}]}]; p2 = Quiet@ Plot[Evaluate[q /. sols][T1], {T1, 0, tp}, PerformanceGoal -> "Speed"]; FIRSTplot = Show[p1, p2] , {q0, .1, 1}, {p0, .1, 1}] ====================================== Daniel Porscha Louise McRobbie wrote: > As several people have kindly pointed out, my first post was a bit too > vague (my first time with Mathgroup). I am adding more specific > details here. Thanks! > > ------Original post: "Slow/jerky animations inside manipulate" --------- > I have an Animate command (I'm using GraphicsRow to show two > side-by-side synchronized animations) inside of Manipulate. The > resulting animations play very fast and are jerky. I can adjust the > play speed using AnimationRate, but it must be slowed down by a > ridiculous amount in order to look smooth. I've tried adjusting the > RefreshRate, as wellas making time a slider variable and animating > from within the Manipulate control panel,both with little success. > How can I create smooth animations, appropriate for class demonstrations? > ------------------------------------------------------------------------- > > > -----Additional Comments------------------------------------------------- > My plots are actually simple. I am, however, solving an ODE inside of the > Manipulate/Animate commands. I've played around with the NDSolve > options thinking it might make things faster, but again no success. > Basically I just want two sliders to choose initial conditions for the > ODEs, then animate the results. > > Inside Manipulate, I solve the following ODEs, where the initial > conditions q0,p0 are the slider variables: > > sols = First@NDSolve[{q'[t] == p[t], p'[t] == 2 A De (Exp[-2 A (q[t] - xe)] - > Exp[-A (q[t] - xe)]), q[0] == q0, p[0] == p0}, {q, p}, {t,0, 100}]; > > Inside Animate, I have two plots (tp is the animation variable): > > 1. Plot solution q(tp) vs. tp, as well as a circle that moves along > as the curve is being traced out: > > p1 = Graphics[{ Point[{tp, Evaluate[q[tp] /. sols]}]}]; > p2 = Quiet@Plot[Evaluate[q[T1] /. sols], {T1, 0, tp}, > PerformanceGoal->"Speed"]; > FIRSTplot = Show[p1, p2]; > > 2. Plot a static background curve "Staticplot" (computed outside > Animate), with a circle moving on it. The equation for the background > curve is: > > f(q)=De(1+Exp[-2 A (q-xe)]-2 Exp[-A (q-xe)]) > > The coordinates for Point below are {q,f(q)}. > > p7 = Graphics[{Point[{Evaluate[q[tp] /. sols], > De (1 + Exp[-2 A (Evaluate[q[tp] /. sols] - xe)] - > 2 Exp[-A (Evaluate[q[tp] /. sols] - xe)]) }] }]; > SECONDplot=Show[Staticplot,p7]; > ------------------------------------------------------------------------- > Thanks again for any help. >