ODE45 ODE45 Numerical Solution of ODEs

Usage

 function [t,y] = ode45(f,tspan,y0,options,varargin)
 function SOL   = ode45(f,tspan,y0,options,varargin)

 ode45 is a solver for ordinary differential equations and initial value problems.
 To solve the ODE

      y'(t) =  f(t,y)
      y(0)  =  y0

 over the interval tspan=[t0 t1], you can use ode45. For example, to solve
 the ode

      y'   =  y
      y(0) =  1

 whose exact solution is y(t)=exp(t), over the interval t0=0, t1=3, do

-->       [t,y]=ode45(@(t,y) y,[0 3],1)
t = 
 
Columns 1 to 8

         0    0.0030    0.0180    0.0930    0.3930    0.6930    0.9930    1.2930 
 
Columns 9 to 14

    1.5930    1.8930    2.1930    2.4930    2.7930    3.0000 

y = 

    1.0000 
    1.0030 
    1.0182 
    1.0975 
    1.4814 
    1.9997 
    2.6993 
    3.6437 
    4.9185 
    6.6392 
    8.9620 
   12.0975 
   16.3299 
   20.0854 

--> 
quit

 If you want a dense output (i.e., an output that also contains an interpolating
 spline), use instead

-->       SOL=ode45(@(t,y) y,[0 3],1)

SOL = 
    x: [[1 14] double]
    y: [[1 14] double]
    xe: []
    ye: []
    ie: []
    solver: ['generic_ode_solver']
    interpolant: {[1 1] function pointer array }
    idata: [[1 1] struct array]
--> 
quit

 You can view the result using

      plot(0:0.01:3,deval(SOL,0:0.01:3))

 You will notice that this function is available for "every" value of t, while

      plot(t,y,'o-')

 is only available at a few points.

 The optional argument 'options' is a structure. It may contain any of the
 following fields:

 'AbsTol'      - Absolute tolerance, default is 1e-6.
 'RelTol'      - Relative tolerance, default is 1e-3.
 'MaxStep'     - Maximum step size, default is (tspan(2)-tspan(1))/10
 'InitialStep' - Initial step size, default is maxstep/100
 'Stepper'     - To override the default Fehlberg integrator
 'Events'      - To provide an event function
 'Projection'  - To provide a projection function

 The varargin is ignored by this function, but is passed to all your callbacks, i.e.,
 f, the event function and the projection function.

 ==Event Function==

 The event function can be used to detect situations where the integrator should stop,
 possibly because the right-hand-side has changed, because of a collision, etc...

 An event function should look like

    function [val,isterminal,direction]=event(t,y,...)

 The return values are:

 val        - the value of the event function.
 isterminal - whether or not this event should cause termination of the integrator.
 direction  - 1=upcrossings only matter, -1=downcrossings only, 0=both.

 == Projection function ==

 For geometric integration, you can provide a projection function which will be
 called after each time step. The projection function has the following signature:

     function yn=project(t,yn,...);

 If the output yn is very different from the input yn, the quality of interpolation
 may decrease.
