# ode23, ode45

## Purpose

Solve ordinary differential equations.

## Synopsis

    [t,x] = ode23('xprime',t0,tf,x0)
    [t,x] = ode23('xprime',t0,tf,x0,tol,trace)
    [t,x] = ode45('xprime',t0,tf,x0)
    [t,x] = ode45('xprime',t0,tf,x0,tol,trace)

## Description

`ode23` and `ode45` are functions for the numerical solution of ordinary differential equations. They can solve simple differential equations or simulate complex dynamical systems.

A system of nonlinear differential equations can always be expressed as a set of first order differential equations:

where t is (usually) time, x is the state vector, and f is a function that returns the state derivatives as a function of t and x.

`ode23` integrates a system of ordinary differential equations using second and third order Runge-Kutta formulas. `ode45` uses fourth and fifth order formulas.

The input arguments to `ode23` and `ode45` are

    -------------------------------------------------------------------
    xprime  A string variable with the name of the M-file that defines
            the differential equations to be integrated. The function
            needs to compute the state derivative vector, given the cur
            rent time and state vector. It must take two input argu
            ments, scalar t (time) and column vector x (state), and
            return output argument xdot, a column vector of state de
            rivatives:
    -------------------------------------------------------------------

    -------------------------------------------------------------------
    t0     The starting time for the integration (initial value of t).
    tf     The ending time for the integration (final value of t).
    x0     A column vector of initial conditions.
    tol    Optional - the desired accuracy of the solution. The default
           value is 1.e-3 for ode23, 1.e-6 for ode45.
    trace  Optional - flag to print intermediate results. The default
           value is 0 (don't trace).
    -------------------------------------------------------------------

## Examples

Consider the second order differential equation known as the Van der Pol equation:

You can rewrite this as a system of coupled first order differential equations:

The first step towards simulating this system is to create a function M-file containing these differential equations. Call it `vdpol.m`:

    function xdot = vdpol(t,x)
    xdot = [x(1).*(1-x(2).^2)-x(2); x(1)]

Note that `ode23` requires this function to accept two inputs, `t` and `x`, although the function does not use the `t` input in this case.

To simulate the differential equation defined in `vdpol` over the interval 0 <= t <= 20, invoke `ode23`:

    t0 = 0; tf = 20;
    x0 = [0 0.25]';  % Initial conditions
    [t,x] = ode23('vdpol',t0,tf,x0);
    plot(t,x)

The general equations for a dynamical system are sometimes written as

where u is a time dependent vector of external inputs and y is a vector of final measured outputs of the system. Simulation of equations of this form are accomplished in the current framework by recognizing that u(t) can be formed within the `xdot` function, possibly using a global variable to hold a table of input values, and that y = g(x,t) is simply a final function application to the simulation results.

## Algorithm

`ode23` and `ode45` are M-files that implement algorithms from [1]. On many systems, MEX-file versions are provided for speed.

`ode23` and `ode45` are automatic step-size Runge-Kutta-Fehlberg integration methods. `ode23` uses a simple second and third order pair of formulas for medium accuracy and `ode45` uses a fourth and fifth order pair for higher accuracy.

Automatic step-size Runge-Kutta algorithms take larger steps where the solution is more slowly changing. Since `ode45` uses higher order formulas, it usually takes fewer integration steps and gives a solution more rapidly. Interpolation (using `interp1`) can be used to give a smoother time history plot.

## Diagnostics

If `ode23` or `ode45` cannot perform the integration over the full time range requested, it displays the message

    Singularity likely.

## See Also

    odedemo, SIMULINK

## References

[1] G.E. Forsythe, M.A. Malcolm and C.B. Moler, Computer Methods for Mathematical Computations, Prentice-Hall, 1977.

(c) Copyright 1994 by The MathWorks, Inc.