NAME
ode - numerical solution of ordinary differential
equations
SYNOPSIS
ode [ options ] [ file ]
DESCRIPTION
ode is a tool that solves, by numerical integration, the
initial value problem for a specified system of first-order
ordinary differential equations. Three distinct numerical
integration schemes are available: Runge-Kutta-Fehlberg (the
default), Adams-Moulton, and Euler. The Adams-Moulton and
Runge-Kutta schemes are available with adaptive step size.
The operation of ode is specified by a program, written
in its input language. The program is simply a list of expressions
for the derivatives of the variables to be integrated, together
with some control statements. Some examples are given in the
EXAMPLES section.
ode reads the program from the specified file, or from
standard input if no file name is given. If reading from standard
input, ode will stop reading and exit when it sees a single
period on a line by itself.
At each time step, the values of variables specified in the
program are written to standard output. So a table of values will
be produced, with each column showing the evolution of a variable.
If there are only two columns, the output can be piped to
graph(1) or
a similar plotting program.
OPTIONS
Input Options
- -f file
-
- --input-file file
- Read input from file before reading from standard input.
This option makes it possible to work interactively, after reading
a program fragment that defines the system of differential
equations.
Output Options
- -p prec
-
- --precision prec
- When printing numerical results, use prec significant
digits (the default is 6). If this option is given, the print
format will be scientific notation.
- -t
-
- --title
- --title
- Print a title line at the head of the output, naming the
- Print a title line at the head of the output, naming the
variables in each column. If this option is given, the print format
will be scientific notation.
Integration Scheme Options
The following options specify
the numerical integration scheme. Only one of the three basic
options -R, -A, -E may be specified. The
default is -R (Runge-Kutta-Fehlberg).
- -R [stepsize]
-
- --runge-kutta [stepsize]
- Use a fifth-order Runge-Kutta-Fehlberg algorithm, with an
adaptive stepsize unless a constant stepsize is specified. When a
constant stepsize is specified and no error analysis is requested,
then a classical fourth-order Runge-Kutta scheme is used.
- -A [stepsize]
-
- --adams-moulton [stepsize]
- Use a fourth-order Adams-Moulton predictor-corrector scheme,
with an adaptive stepsize unless a constant stepsize,
stepsize, is specified. The Runge-Kutta-Fehlberg algorithm
is used to get past `bad' points (if any).
- -E [stepsize]
-
- --euler [stepsize]
- Use a `quick and dirty' Euler scheme, with a constant stepsize.
The default value of stepsize is 0.1. Not recommended for
serious applications.
- The error bound options -r and -e (see below) may
not be used if -E is specified.
- -h hmin [hmax]
-
- --step-size-bound hmin [hmax]
- Use a lower bound hmin on the stepsize. The numerical
scheme will not let the stepsize go below hmin. The default
is to allow the stepsize to shrink to the machine limit, i.e., the
minimum nonzero double-precision floating point number.
- The optional argument hmax, if included, specifies a
maximum value for the stepsize. It is useful in preventing the
numerical routine from skipping quickly over an interesting
region.
Error Bound Options
- -r rmax [rmin]
-
- --relative-error-bound rmax [rmin]
- The -r option sets an upper bound on the relative
single-step error. If the -r option is used, the relative
single-step error in any dependent variable will never exceed
rmax (the default for which is 10^-9). If this should occur,
the solution will be abandoned and an error message will be
printed. If the stepsize is not constant, the stepsize will be
decreased `adaptively', so that the upper bound on the single-step
error is not violated. Thus, choosing a smaller upper bound on the
single-step error will cause smaller stepsizes to be chosen. A
lower bound rmin may optionally be specified, to suggest
when the stepsize should be increased (the default for rmin
is rmax/1000).
- -e emax [emin]
-
- --absolute-error-bound emax [emin]
- Similar to -r, but bounds the absolute rather than the
relative single-step error.
- -s
-
- --suppress-error-bound
- Suppress the ceiling on single-step error, allowing ode
to continue even if this ceiling is exceeded. This may result in
large numerical errors.
Informational Options
- --help
- Print a list of command-line options, and exit.
- --version
- Print the version number of ode and the plotting
utilities package, and exit.
DIAGNOSTICS
Mostly self-explanatory. The biggest exception is `syntax
error', meaning there is a grammatical error. Language error
messages are of the form
- ode: nnn: message...
where `nnn' is the number of the input line containing the
error. If the -f option is used, the phrase "(file)" follows
the `nnn' for errors encountered inside the file. Subsequently,
when ode begins reading the standard input, line numbers
start over from 1.
No effort is made to recover successfully from syntactic errors
in the input. However, there is a meager effort to resynchronize so
more than one error can be found in one scan.
Run-time errors elicit a message describing the problem, and the
solution is abandoned.
EXAMPLES
The program
- y' = y
y = 1
print t, y
step 0, 1
solves an initial value problem whose solution is y=e^t.
When ode runs this program, it will write two columns of
numbers to standard output. Each line will show the value of the
independent variable t, and the variable y, as
t is stepped from 0 to 1.
A more sophisticated example would be
- sine' = cosine
cosine' = -sine
sine = 0
cosine = 1
print t, sine
step 0, 2*PI
This program solves an initial value problem for a system of two
differential equations. The initial value problem turns out to
define the sine and cosine functions. The program steps the system
over a full period.
AUTHORS
ode was written by Nicholas B. Tufillaro
(), and
slightly enhanced by Robert S. Maier () to
merge it into the GNU plotting utilities.
SEE ALSO
"The GNU Plotting Utilities Manual".
BUGS
Email bug reports to .