Fehlberg¶
(Source code, png, hires.png, pdf)

class
Fehlberg
(*args)¶ Adaptive order Fehlberg method.
Parameters:  transitionFunction :
FieldFunction
The function defining the flow of the ordinary differential equation.
 localPrecision : float
The expected absolute error on one step.
 order : int,
The order of the method, ie the exponent in the estimate of the local error for a step of size written as .
See also
Notes
The Fehlberg method of order is a onestep explicit method made of two embedded Runge Kutta methods of order and . More precisely, such a method approximate the solution of:
at a given set of locations by first building an approximation over an adapted grid with a number of points not necessarily equal to the number of locations and internal nodes not necessarily part of the set of locations. Then, the solution is approximated by a smooth piecewise polynomial function using
PiecewiseHermiteEvaluation
, which is evaluated over the set of locations.The method proceeds as follows. Knowing the solution at location and a current time step , two approximations and of are built, such that:
where we assume that:
The evolution operators and are constructed as follows:
with . The most desirable property of these methods is their embedded nature: the highorder approximation reuses all the evaluations of needed by the loworder approximation. The coefficients , , and fully specify the method.
For we have:
0 0 0 1 1/2 1 1 1 1/2 For we have:
0 0 0 1/256 1/512 1 1/2 1/2 255/256 255/256 2 1 1/256 255/256 1/512 For we have:
0 0 0 214/891 533/2106 1 1/4 1/4 1/33 0 2 27/40 189/800 214/891 650/891 800/1053 3 1 729/800 1/35 650/891 1/78 For the coefficients can be found eg in the C++ source code. For additional theory on these methods see [Stoer1993], chapter 7.
Examples
>>> import openturns as ot >>> f = ot.SymbolicFunction(['t', 'y0', 'y1'], ['t  y0', 'y1 + t^2']) >>> phi = ot.VertexValueFunction(f) >>> solver = ot.Fehlberg(phi) >>> Y0 = [1.0, 1.0] >>> nt = 100 >>> timeGrid = [(i**2.0) / (nt  1.0)**2.0 for i in range(nt)] >>> result = solver.solve(Y0, timeGrid)
Methods
getClassName
()Accessor to the object’s name. getId
()Accessor to the object’s id. getName
()Accessor to the object’s name. getShadowedId
()Accessor to the object’s shadowed id. getTransitionFunction
()Transition function accessor. getVisibility
()Accessor to the object’s visibility state. hasName
()Test if the object is named. hasVisibleName
()Test if the object has a distinguishable name. setName
(name)Accessor to the object’s name. setShadowedId
(id)Accessor to the object’s shadowed id. setTransitionFunction
(transitionFunction)Transition function accessor. setVisibility
(visible)Accessor to the object’s visibility state. solve
(*args)Solve ODE. 
__init__
(*args)¶ Initialize self. See help(type(self)) for accurate signature.

getClassName
()¶ Accessor to the object’s name.
Returns:  class_name : str
The object class name (object.__class__.__name__).

getId
()¶ Accessor to the object’s id.
Returns:  id : int
Internal unique identifier.

getName
()¶ Accessor to the object’s name.
Returns:  name : str
The name of the object.

getShadowedId
()¶ Accessor to the object’s shadowed id.
Returns:  id : int
Internal unique identifier.

getTransitionFunction
()¶ Transition function accessor.
Returns:  transitionFunction :
FieldFunction
Transition function.
 transitionFunction :

getVisibility
()¶ Accessor to the object’s visibility state.
Returns:  visible : bool
Visibility flag.

hasName
()¶ Test if the object is named.
Returns:  hasName : bool
True if the name is not empty.

hasVisibleName
()¶ Test if the object has a distinguishable name.
Returns:  hasVisibleName : bool
True if the name is not empty and not the default one.

setName
(name)¶ Accessor to the object’s name.
Parameters:  name : str
The name of the object.

setShadowedId
(id)¶ Accessor to the object’s shadowed id.
Parameters:  id : int
Internal unique identifier.

setTransitionFunction
(transitionFunction)¶ Transition function accessor.
Parameters:  transitionFunction :
FieldFunction
Transition function.
 transitionFunction :

setVisibility
(visible)¶ Accessor to the object’s visibility state.
Parameters:  visible : bool
Visibility flag.
 transitionFunction :