Contents  Previous  Next  Subchapters 
Syntax 
[ tout, yout, sout] = ode45rk(function f, ... t0, tf, y0, tol, level, smin, smax, sini)

Optional 
sout, tol, level, smin, smax, sini

See Also  ode23 , ode45 , ode4rk , odepade , odestiff 
dy
 = f(t, y(t)) and y(t0) = y0
dt
using a fifth order RungeKutta method and using a fourth order RungeKutta
method to estimate the error in the solution
reference
f(
t,
y)
This function call returns the value of f(t, y(t))
where
t is an integer, real or doubleprecision scalar,
and y is an integer, real or doubleprecision column vector
with the same length as y0.
The return value is an integer, real, doubleprecision or complex
vector with the same dimension as y0.
t0
is an integer, real or doubleprecision scalar specifying the initial value of
t
.
tf
is an integer, real or doubleprecision scalar specifying the final value of
t
.
y0
is an integer, real, doubleprecision or complex
column vector specifying the value of
y(t0)
.
tol
is an integer, real or doubleprecision vector that specifies
the requested accuracy in the return values in yout.
If tol is a column vector with the same length as y0,
tol(j)
specifies the accuracy for the elements in
the jth column of yout.
All the elements of tol must be greater than zero.
If tol is a scalar,
it is equivalent to the case where it is a column vector with the same
length as y0 and all the elements have the value specified
by the scalar.
If tol is not present in the syntax, the default value
tol = 1d3
is used.
level
is a logical integer, real or doubleprecision scalar that
specifies the level of tracing during solution of the differential
equation. If level is equal to zero, no tracing is done.
If level is equal to one, the current value of
t
, the current step size, and the transpose
of the current value of y(t)
are printed
upon completion of each successful step.
If level is not present in the syntax, the default value
level = 0
is used.
smin
is an integer, real or doubleprecision scalar that specifies the
minimum step size; i.e.,
difference between successive elements of tout.
If this argument is not present in the syntax, the default value
smin = (tf  t0) / 1d4
is used.
smax
is an integer, real or doubleprecision scalar that specifies the
maximum step size; i.e.,
difference between successive elements of tout.
If this argument is not present in the syntax, the default value
smax = (tf  t0) / 16
is used.
sini
is an integer, real or doubleprecision scalar that specifies the
initial step size. It must satisfy the relations
smin < sini < smax
If this argument is not present in the syntax, the default value
sini = smax
is used.
tout
is a
monotone increasing
column vector with its first element equal to t0,
and its last element equal to tf.
In addition,
smin < tout  tout > smax
i+1 i
If all the input values are real, tout is real,
otherwise it is doubleprecision.
yout
is a matrix containing an approximate solution of the differential equation.
Its row dimension is equal to the row dimension of tout
and its column dimension is equal to the row dimension of y0.
The ode45rk
routine will try to accomplish the
requested accuracy condition which is that
for i
between one and the row dimension of tout
and j
between one and the row dimension of y0,
 yout  y (tout(i))  <= tol
j j j
If y0 is complex, yout is also complex.
Otherwise yout is doubleprecision.
sout
is a scalar that suggests a value for sini when
continuing solution of the differential equation using ode45rk
.
(A continuation is where the new value of t0
is equal to the old value of tf and the new value of y0
is approximately equal to y(tf)
.)
y'(t) = y (t) y (0) = 0
1 2 1
y'(t) = y (t) y (0) = 1
2 1 2
The solution is
y (t) = sin(t)
1
y (t) = cos(t)
2
clear
#
function f(t, y) begin
return {y(2), y(1)}
end
t0 = 0.
tf = 2. * pi
y0 = {0., 1.}
[tout, yout] = ode45rk(function f, t0, tf, y0)
gplot(tout, yout)
Mlmode
[
tout,
yout] =
ode(
yp,
t0,
tf,
y0,
tol,
level)
where ode is ode23
or ode45
and the arguments tol, level are optional.
In addition, each call of the form
f(
t,
y)
in ode45rk
is translated to a call of the form
feval(
yp,
t,
y)
.
Suppose that the file yp.m
in the current directory
contains the text
function dy = yp(t, y)
dy = [y(2); y(1)];
If in Mlmode you execute the program below,
the same plot will be generated as for the ode45rk
example above.
clear
t0 = 0.;
tf = 2. * pi;
y0 = [0.; 1.];
[tout, yout] = ode45('yp', t0, tf, y0)
plot(tout, yout)