**Chapter
35. **** Differential Equations** (.NET, C#, CSharp, VB, Visual Basic, F#)

**NMath**
provides classes for solving first order initial value differential equations by the
Runge-Kutta method.

An *ordinary differential
equation* (ODE) contains one or more derivatives of a dependent
variable *y* with respect to a single
independent variable. A *first-order*
ODE contains only the first derivative of *y*.
Since there are generally many functions that satisfy an ODE, an *initial value* is necessary to constrain
the solution—that is, *y* is equal
to *y0* at a given initial *x0*.

**NMath**
includes:

● Class **FirstOrderInitialValueProblem**
encapsulates a first order initial value differential equation.

● Class **RungeKuttaSolver**
solves an initial value ODE by the common Runge-Kutta method.

● Class **RungeKutta45OdeSolver** solves an initial
value ODE using an explicit Runge-Kutta (4,5)
formula known as the Dormand-Prince pair.

● Class **RungeKutta5OdeSolver** solves an initial
value ODE using a non-adaptive explicit Runge-Kutta formula of order
5.

● Class **VariableOrderOdeSolver**
solves stiff and non-stiff ordinary
differential equations. The algorithm uses higher order methods and smaller
step size when the solution varies rapidly.

The chapter describes how to use class these classes.