![]() |
Prev | Next |
# include <cppad/runge_45.hpp>
xf = Runge45(
F,
M,
ti,
tf,
xi)
xf = Runge45(
F,
M,
ti,
tf,
xi,
e)
n
for the size of the vector xi.
Let
\R
denote the real numbers
and let
F : \R \times \R^n \rightarrow \R^n
be a smooth function.
The return value xf contains a 5th order
approximation for the value
X(tf)
where
X : [ti , tf] \rightarrow \R^n
is defined by
the following initial value problem:
\[
\begin{array}{rcl}
X(ti) & = & xi \\
X'(t) & = & F[t , X(t)]
\end{array}
\]
If your set of ordinary differential equations
are stiff, an implicit method may be better
(perhaps Rosen34
.)
cppad/runge_45.hpp
is included by cppad/cppad.hpp
but it can also be included separately with out the rest of
the CppAD
routines.
Vector
xf
and the size of xf is equal to n
(see description of Vector
below).
\[
X(tf) = xf + O( h^6 )
\]
where
h = (tf - ti) / M
is the step size.
If xf contains not a number nan
,
see the discussion for f
.
Fun &
F
The object F (and the class Fun)
must have a member function named Ode
that supports the syntax
F.Ode(
t,
x,
f)
F.Ode
has prototype
const
Scalar &
t
(see description of Scalar
below).
F.Ode
has prototype
const
Vector &
x
and has size n
(see description of Vector
below).
F.Ode
has prototype
Vector &
f
On input and output, f is a vector of size n
and the input values of the elements of f do not matter.
On output,
f is set equal to
F(t, x)
in the differential equation.
If any of the elements of f have the value not a number nan
the routine Runge45
returns with all the
elements of xf and e equal to nan
.
F.Ode
must have a call by reference in its prototype; i.e.,
do not forget the &
in the prototype for f.
size_t
M
It specifies the number of steps
to use when solving the differential equation.
This must be greater than or equal one.
The step size is given by
h = (tf - ti) / M
, thus
the larger M, the more accurate the
return value xf is as an approximation
for
X(tf)
.
const
Scalar &
ti
(see description of Scalar
below).
It specifies the initial time for t in the
differential equation; i.e.,
the time corresponding to the value xi.
const
Scalar &
tf
It specifies the final time for t in the
differential equation; i.e.,
the time corresponding to the value xf.
const
Vector &
xi
and the size of xi is equal to n.
It specifies the value of
X(ti)
Vector &
e
If e is present,
the size of e must be equal to n.
The input value of the elements of e does not matter.
On output
it contains an element by element
estimated bound for the absolute value of the error in xf
\[
e = O( h^5 )
\]
where
h = (tf - ti) / M
is the step size.
If on output, e contains not a number nan
,
see the discussion for f
.
Operation | Description |
a < b |
less than operator (returns a bool object)
|
cppad/runge_45.hpp
.