template<typename T>
class drake::systems::DenseOutput< T >
An interface for dense output of ODE solutions, to efficiently approximate them at arbitrarily many points when solving them numerically (see IntegratorBase class documentation).
Multiple definitions of dense output may be found in literature. For some authors, it refers to the process of repeatedly adjusting the integration step size so that all points to be approximated are directly provided by the integrator (see [Engquist, 2015]). For others, it stands for any numerical approximation technique used to determine the solution in between steps (see [Hairer, 1993]). Despite this caveat, it is common terminology in IVP literature and thus its imparted functionality is immediately clear.
Herein, the concept in use may be formally stated as follows: given a solution 𝐱(t) ∈ ℝⁿ to an ODE system that is approximated at a discrete set of points 𝐲(tₖ) ∈ ℝⁿ where tₖ ∈ {t₁, ..., tᵢ} with tᵢ ∈ ℝ (e.g. as a result of numerical integration), a dense output of 𝐱(t) is another function 𝐳(t) ∈ ℝⁿ defined for t ∈ [t₁, tᵢ] such that 𝐳(tⱼ) = 𝐲(tⱼ) for all tⱼ ∈ {t₁, ..., tᵢ} and that approximates 𝐱(t) for every value in the closed interval [t₁, tᵢ].
- Warning
- Dense outputs are, in general, not bound to attain the same accuracy that error-controlled integration schemes do. Check each subclass documentation for further specification.
-
Note that dense outputs do not enforce any algebraic constraints on the solution that integrators might enforce.
- [Engquist, 2105] B. Engquist. Encyclopedia of Applied and Computational Mathematics, p. 339, Springer, 2015.
- [Hairer, 1993] E. Hairer, S. Nørsett and G. Wanner. Solving Ordinary Differential Equations I (Nonstiff Problems), p.188, Springer, 1993.
- Template Parameters
-
|
| virtual | ~DenseOutput () |
| VectorX< T > | Evaluate (const T &t) const |
| | Evaluates the output at the given time t.
|
| T | EvaluateNth (const T &t, int n) const |
| | Evaluates the output value's nth scalar element (0-indexed) at the given time t.
|
| int | size () const |
| | Returns the output size (i.e.
|
| bool | is_empty () const |
| | Checks whether the output is empty or not.
|
| const T & | start_time () const |
| | Returns output's start time, or in other words, the oldest time t that it can be evaluated at e.g.
|
| const T & | end_time () const |
| | Returns output's end time, or in other words, the newest time t that it can be evaluated at e.g.
|
| | DenseOutput (const DenseOutput &)=delete |
| DenseOutput & | operator= (const DenseOutput &)=delete |
| | DenseOutput (DenseOutput &&)=delete |
| DenseOutput & | operator= (DenseOutput &&)=delete |