| www.delorie.com/gnu/docs/octave/octave_11.html | search |
![]() Buy GNU books! | |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Octave has built-in functions for solving nonlinear differential equations of the form
dx -- = f (x, t) dt |
with the initial condition
x(t = t0) = x0 |
For Octave to integrate equations of this form, you must first provide a
definition of the function
f(x,t).
This is straightforward, and may be accomplished by entering the
function body directly on the command line. For example, the following
commands define the right hand side function for an interesting pair of
nonlinear differential equations. Note that while you are entering a
function, Octave responds with a different prompt, to indicate that it
is waiting for you to complete your input.
octave:8> function xdot = f (x, t) > > r = 0.25; > k = 1.4; > a = 1.5; > b = 0.16; > c = 0.9; > d = 0.8; > > xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1)); > xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2); > > endfunction |
Given the initial condition
x0 = [1; 2]; |
and the set of output times as a column vector (note that the first output time corresponds to the initial condition given above)
t = linspace (0, 50, 200)'; |
it is easy to integrate the set of differential equations:
x = lsode ("f", x0, t);
|
The function lsode uses the Livermore Solver for Ordinary
Differential Equations, described in A. C. Hindmarsh, ODEPACK, a
Systematized Collection of ODE Solvers, in: Scientific Computing, R. S.
Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pages 55--64.
| webmaster donations bookstore | delorie software privacy |
| Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |