ode (1)  Linux Man Pages
ode: numerical solution of ordinary differential equations
NAME
ode  numerical solution of ordinary differential equationsSYNOPSIS
ode [ options ] [ file ]DESCRIPTION
ode is a tool that solves, by numerical integration, the initial value problem for a specified system of firstorder ordinary differential equations. Three distinct numerical integration schemes are available: RungeKuttaFehlberg (the default), AdamsMoulton, and Euler. The AdamsMoulton and RungeKutta 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

 inputfile 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
 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 (RungeKuttaFehlberg). R [stepsize]

 rungekutta [stepsize]
 Use a fifthorder RungeKuttaFehlberg 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 fourthorder RungeKutta scheme is used.
 A [stepsize]

 adamsmoulton [stepsize]
 Use a fourthorder AdamsMoulton predictorcorrector scheme, with an adaptive stepsize unless a constant stepsize, stepsize, is specified. The RungeKuttaFehlberg 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]

 stepsizebound 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 doubleprecision 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]

 relativeerrorbound rmax [rmin]
 The r option sets an upper bound on the relative singlestep error. If the r option is used, the relative singlestep 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 singlestep error is not violated. Thus, choosing a smaller upper bound on the singlestep 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]

 absoluteerrorbound emax [emin]
 Similar to r, but bounds the absolute rather than the relative singlestep error.
 s

 suppresserrorbound
 Suppress the ceiling on singlestep 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 commandline options, and exit.
 version
 Print the version number of ode and the plotting utilities package, and exit.
DIAGNOSTICS
Mostly selfexplanatory. 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.
Runtime 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 (nbt [at] reed.edu), and slightly enhanced by Robert S. Maier (rsm [at] math.arizona.edu) to merge it into the GNU plotting utilities.BUGS
Email bug reports to buggnuutils [at] gnu.org.