Re: Re: multistep iterative methods
- To: mathgroup at smc.vnet.net
- Subject: [mg40404] Re: [mg40356] Re: multistep iterative methods
- From: Selwyn Hollis <selwynh at earthlink.net>
- Date: Fri, 4 Apr 2003 01:22:04 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Kevin & Jens, The question was not how to write an efficient general-purpose differential equation solver. It was a simpler question about how to deploy the basic step in an explicit multistep iterative method (with fixed stepsize). Adams-Bashforth just seemed like a good, simple example to use. Perhaps I should have phrased things more clearly. Anyway, so far Hartmut Wolf's technique is about twice as fast as what I had been doing and twice as fast as the technique presented by Omega Consulting. ---- Selwyn Hollis On Thursday, April 3, 2003, at 01:40 AM, Kevin J. McCann wrote: > I agree with Jens comment. Also why just the predictor? If you are > going to > do it this way, I would use the Moulton corrector along with it. Much > of the > recent literature on non-stiff ODE solvers seems to be moving away from > predictor-corrector methods and suggesting that Runge-Kutta methods be > used > for moderate accuracy/fast derivative function problems, and > extrapolation > methods such as Bulirsch-Stoer for high accuracy. Based on my own > experience, I concur with this logic. > > Kevin > > "Selwyn Hollis" <hollisse at mail.armstrong.edu> wrote in message > news:b6bnnc$3t$1 at smc.vnet.net... >> I'd like to throw this out as a challenge to the group: What's the >> most >> efficient way to implement in Mathematica an explicit multistep >> iterative method such as, say, the 4-step Adams-Bashforth method for >> solving y' = f(t,y): >> >> y[k+1]:= y[k] + (h/24)*(55*f[k] - 59*f[k-1] + 37*f[k-2] - 9*f[k-3]) >> >> where y[0], y[1], y[2], y[3] are "given," and f[i] denotes f[t0 +i*h, >> y[i]]. The desired output would be the list >> >> {y[0], y[1], y[2], ... , y[n]}. >> >> A suitable toy problem is >> >> y' = -2t*y^2, y(0) = 1, >> >> with h = 0.01, n = 1000 (?), and the starting values taken from the >> exact solution y = 1/(1+t^2): >> >> y[0]=1, y[1] = 0.9999, y[2] = 0.9996, y[3] = .999101. >> >> Thanks in advance. >> >> ------- >> Selwyn Hollis >> >> >> >> > > >