Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ODE(1)			    GNU	Plotting Utilities			ODE(1)

       ode - numerical solution	of ordinary differential equations

       ode [ options ] [ file ]

       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

       The operation of	ode is specified by a program, written	in  its	 input
       language.   The program is simply a list	of expressions for the deriva-
       tives 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.

   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 equa-

   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.

	      Print a title line at the	head of	the output, naming  the	 vari-
	      ables 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 de-
       fault is	-R (Runge-Kutta-Fehlberg).

       -R [stepsize]
       --runge-kutta [stepsize]
	      Use a fifth-order	Runge-Kutta-Fehlberg algorithm,	with an	 adap-
	      tive  stepsize  unless a constant	stepsize is specified.	When a
	      constant stepsize	is specified and  no  error  analysis  is  re-
	      quested,	then  a	 classical  fourth-order Runge-Kutta scheme is

       -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 seri-
	      ous 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 al-
	      low the stepsize to shrink to the	machine	limit, i.e., the mini-
	      mum 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  numeri-
	      cal 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.

	      Suppress the ceiling on single-step error, allowing ode to  con-
	      tinue  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.

	      Print the	version	number of ode and the plotting utilities pack-
	      age, and exit.

       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	 solu-
       tion is abandoned.

       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  dif-
       ferential equations.  The initial value problem turns out to define the
       sine and	cosine functions.  The program steps the system	 over  a  full

       ode  was	 written by Nicholas B.	Tufillaro (, and slightly
       enhanced	by Robert S. Maier ( to merge it into the
       GNU plotting utilities.

       "The GNU	Plotting Utilities Manual".

       Email bug reports to

FSF				   Dec 1998				ODE(1)


Want to link to this manual page? Use this URL:

home | help