A *differential equation* is an equation that involves one
or more derivatives of an unknown function. A solution of such a differential
equation is a function that, when substituted for the unknown function,
makes the equation true. For an *ordinary differential equation* (ODE),
the unknown function is a function of one real variable, which can taken to be
time, *t*. In its most general form, an ODE takes the form
*F(t,x,x',x'',...,x ^{(n)}) = 0*, where

In 3D-XplorMath-J, only ODEs of order 1 and 2 are considered. Furthermore, the ODEs all take the form

x' = G(t,x) (for first-order ODEs),

or

x'' = G(t,x,x') (for second-order ODEs),

Note that *x(t)* can be a single real number. However, *x(t)* can also be
vector-valued; that is, it can take its values
in two-, three-, or higher-dimensional space,
as well as in one-dimensional space. In 3D-XplorMath-J every ODE is either one-,
two-, or three-dimensional.

Putting this together, we see that 3D-XplorMath-J deals with six types of ODE: first-order ODEs in one dimension, second-order ODEs in one dimension, first-order ODEs in two dimensions, second-order ODEs in two dimensions, first-order ODEs in three dimension, and second-order ODEs in three dimensions. There is a separate sub-gallery of the ODE gallery for each of these six cases. Furthere there are two additional ODE galleries, "Central Force" and "Charged Particles." These galleries are special cases of second-order ODEs in, respectively, two and three dimensions, where the ODE describes the motion of a particle that is subject to a force of a certain type.

To add one more complication, ODEs can be classified as either *autonomous* or
*non-autonomous*. In an autonomous equation, the function *G(t,x)* or
*G(t,x,x')* does not actually depend on *t*, while in the non-autonomous
case, there is an actual dependence on *t*. Thus, in the autonomous case, the
ODE can be written

*x' = G(x)* (for first-order ODEs),

or

*x'' = G(x,x')* (for second-order ODEs),

In each of the six basic ODE sub-galleries, there are two User Exhibits, one for the autonomous case and one for the non-autonomous case.

An ODE exhibit in 3D-XplorMath-J is concerned with computing and displaying
*solutions* of the ODE. There are in general many functions that solve an ODE.
However, once an *initial
condition* has been specified for the function there is in general only one
solution that satisfies that initial condition. For a first-order equation,
*x' = G(t,x)*, an initial condition takes the form
*x(t _{o}) = x_{o}*, where

There is a similar local existence theorem for second-order ODEs
(which in fact is an easy consequence of the first order theorem).
It says that given an initial
time *t _{o}*, an initial position

It is usually difficult or impossible to find explicit formulas for the
solutions of an ODE. Instead, numerical methods are used to find approximate
solutions. A common numerical method that gives reasonably accurate results is
the so-called *Fourth Order Runge-Kutta Method*. This is the method that is
used by default in 3D-XplorMath-J. Another method, *Euler's Method* is easier
to understand and implement, but it gives only a poor approximation to the true
solution. For the sake of comparison, 3D-XplorMath-J can use Euler's Method
as well as Runge-Kutta. (Approximate solutions computed using Runge-Kutta
are shown in red; those computed using Euler's method are shown in green.)

To pick out a particular solution of an ODE, you need some way of specifying an initial condition. In an ODE exhibit, a "Control Panel" appears on the right edge of the window where the exhibit is displayed. This control panel has input boxes where the initial values can be entered and a button for displaying the solution (or "orbit") that satisfies that initial condition. The orbit is drawn for a certain interval of time, as specified in the input box labeled "TimeSpan." You can compute and display more than one orbit, using different initial values. It is also possible to input the initial condition for an orbit using the mouse; the details of how to do this differ for different sub-galleries -- look for instructions in the status line at the bottom of the window.

Both the Runge-Kutta method and Euler's method use a "StepSize" that can be input
in the Control Panel. These numerical methods do not produce an exact *(x(t))*
but only a sequence of points *x(t _{o})*,

Note, by the way, that the Control Panel can be hidden using a command in the "Action" menu and that all the functions of the Control Panel, with the exception of inputing the initial condition, are duplicated in the "Action" Menu.

The "Action" menu also contains an option named "Show Projected Orbits", which is
off by default. If this option is turned on, then a graph of the most-recently
drawn orbit is shown at the bottom of the window. For a one-dimensional ODE,
this is just a graph of the solution function *x(t)* For a
two-dimensional ODE, the solution curve can be written as a pair of
functions *(x(t),y(t))*, and there are two graphs, one of *x(t)* and
one of *y(t)*. In three dimensions, the solution curve is a triple of
functions *(x(t),y(t),z(t))*, and there are three graphs.