Class BurlischStoerExtrapolation
- java.lang.Object
-
- dev.nm.analysis.differentialequation.ode.ivp.solver.extrapolation.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 Summary
Constructors Constructor Description BurlischStoerExtrapolation(double epsilon, int maxIterations)
Create an instance of the algorithm with the precision parameter and the maximum number of iterations allowed.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ODESolution
solve(ODE1stOrder ode)
Perform the extrapolation.
-
-
-
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 requiredmaxIterations
- 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, anUnsatisfiableErrorCriterionException
will be thrown.
-
-