Re: How to change time stepsize for Integration
- To: mathgroup at smc.vnet.net
- Subject: [mg33973] Re: How to change time stepsize for Integration
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 25 Apr 2002 02:59:43 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <aa5gkf$c09$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi, Mathematica's NDSolve[] has an stepsize control and you can use a higher AccuracyGoal to force smaller step sizes. > > Can anyone help me on this one: > > Pends[init_, time_, {c_, w_, p_}] := > Module[{}, > pend = NDSolve[{x''[t] + c x'[t] + (1 + p Cos[w t])Sin[x[t]] == 0, > x[0] == init[[1]], x'[0] == init[[2]]}, {x}, {t, 0, time}, > MaxSteps -> 200000]; > xd[t_] := x[t] /. pend[[1]]; > xdd[t_] := x'[t] /. pend[[1]];]; > c = 0.1; w = 0.30; p = 1.1; > > Pends[{1.37, 0}, 5000, {c, w, p}]; > plt = Plot[{t, xd[t], xdd[t]}, {t, 0, 500}]; > > I want to reduce the time stepsize > in my numerical integration with mathematica. Each time > I try to get coordinates generated from the command > Plot[ ......, {t, tmin, tmax}]; or > Table[......, {t, tmin, tmax}]; > > I always notice that in all these case time stepsize = 1. This ist nonsense ! Mathematica use for the problem above an averaged stepsize of 0.136597. All steps can be obtained by time = xd[t][[0, 3, 1]]; timeStepSizes = Drop[RotateLeft[time] - time, -1]; > Is there anyway I can reduce the the timestep to say, > time stepsize =0.001 in the above numerical integration using > NDsolve. Lower the MaxStepSize. But forcing a initial value solver to use a lower step size will typical generate less accurate results and run 100 x longer The steps in Table[] and Plot[] have *nothing* to do with the integration steps of NDSolve[]. For Plot[] you must set the PlotPoints option, for Table[] you must set the increment explicit Table[......, {t, tmin, tmax,dt}] Regards Jens