1
$\begingroup$

I am interested in fixed-step simulation of an ODE.

The methods I know of are either variable-step with prescribed error tolerance or fixed-step without error control.

Are there methods known which work on a fixed time grid (for inputs and outputs) AND allow the specification of an error tolerance?

The solution for the next time step should be calculated as efficient as possible, thus adaptive, e.g. RK12 - RK45. It could try RK12 and increase the order if necessary. Does such a scheme make sense in terms of efficiency? How could it be improved?

$\endgroup$
  • 1
    $\begingroup$ Welcome to SciComp.Exchange. Can you be more specific with what you want? I don't think that your question is clear enough. $\endgroup$ – nicoguaro Dec 18 '15 at 19:32
  • $\begingroup$ You could try looking at Richardson Extrapolation for the integration steps. $\endgroup$ – spektr Dec 18 '15 at 20:57
  • $\begingroup$ Richardson extrapolation as used in the Bulirsch-Stoer method appears to be the method of choice - thx! $\endgroup$ – bardo Dec 18 '15 at 23:10
4
$\begingroup$

This is an interesting question. There is a good reason that no implementation exists using a fixed step size and error control. There is no guarantee that you will be able to satisfy a prescribed local error tolerance.

By reducing the step size, you reduce the size of all terms in the error expansion. A particular reduction in step size still might not decrease the error (i.e., the sum of all those terms) because of some "lucky/unlucky" cancellations. However, it's easy to see that by reducing the step size enough, you can satisfy any error tolerance (at least, in the absence of roundoff).

Now what if the step size is fixed, but the order can be increased? By increasing the order, you guarantee that some of the (previously non-zero) error terms vanish. However, you also change the constants multiplying all the remaining terms. In general, some of those constants will be larger and others will be smaller. Thus there is no guarantee that the higher-order method will have a smaller error. It most often will, but sometimes the error will be larger. In fact, if you look closely at state-of-the-art extrapolation solvers, you will find that they account for this possibility by sometimes accepting a solution of lower order than the maximum that has already been computed.

The danger is that you might increase the order indefinitely without reaching the error tolerance. The only way to ensure that you will avoid this would be to have a sequence of methods in which all the error constants of the remaining higher-order terms decrease as you increase the order. Whether such a sequence exists is an open question. Certainly Gragg-Bulirsch-Stoer extrapolation does not have this property.

Using an arbitrary sequence of methods of increasing order (including GBS extrapolation), you would probably find that your approach works most of the time (especially for simpler problems), but occasionally fails completely.

One last note: in a real implementation, what matters (for purposes of being able to complete an integration) is not the actual local error, but your estimate of it. So you might instead want to find a sequence of estimators with the property mentioned above.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.