Class BurlischStoerExtrapolation

  • All Implemented Interfaces:
    ODESolver

    public class BurlischStoerExtrapolation
    extends Object
    implements ODESolver
    Burlisch-Stoer extrapolation (or Gragg-Bulirsch-Stoer (GBS)) algorithm combines three powerful ideas: Richardson extrapolation, the use of rational function extrapolation in Richardson-type applications, and the modified midpoint method, to obtain numerical solutions to ordinary differential equations (ODEs) with high accuracy and comparatively little computational effort. The extrapolation is achieved with numerical calculation with decreasing step sizes. The basic technique used to compute approximations is known as the modified midpoint method: \[ q_{k+1} = q_{k-1} + 2 h f(\alpha + k h, q_k), \] where \(q_k\) are the estimates, \(h\) is the step size and \(\alpha\) is the time point of the initial value. Since the recursive equation requires two previous values, \(q_1\) is computed using Euler's method.
    See Also:
    Wikipedia: Bulirsch-Stoer algorithm
    • Constructor Detail

      • BurlischStoerExtrapolation

        public BurlischStoerExtrapolation​(double epsilon,
                                          int maxIterations)
        Create an instance of the algorithm with the precision parameter and the maximum number of iterations allowed.
        Parameters:
        epsilon - the relative precision required
        maxIterations - the maximum number of iterations
    • Method Detail

      • solve

        public ODESolution solve​(ODE1stOrder ode)
        Perform the extrapolation. The algorithm will stop when the desired precision is reached or the maximum number of iterations is exceeded, whichever comes first.

        If the given error criterion cannot be achieved within the given maximum number of iterations, an UnsatisfiableErrorCriterionException will be thrown.

        Specified by:
        solve in interface ODESolver
        Parameters:
        ode - the ODE problem
        Returns:
        the solution