finds a numerical solution to the ordinary differential equations eqns for the function u with the independent variable x in the range xmin to xmax.


solves the partial differential equations eqns over a rectangular region.


solves the partial differential equations eqns over the region Ω.


solves the time-dependent partial differential equations eqns over the region Ω.


solves for the functions ui.

Details and Options

  • NDSolve gives results in terms of InterpolatingFunction objects.
  • NDSolve[eqns,u[x],{x,xmin,xmax}] gives solutions for u[x] rather than for the function u itself.
  • Differential equations must be stated in terms of derivatives such as u'[x], obtained with D, not total derivatives obtained with Dt.
  • Partial differential equations may also be specified using the differential operators Grad (), Div (.), Laplacian (2), and Curl (). Typically these operators are used as in Inactive[op] to keep the operator form from evaluating.
  • NDSolve solves a wide range of ordinary differential equations as well as many partial differential equations.
  • NDSolve can also solve many delay differential equations.
  • In ordinary differential equations, the functions ui must depend only on the single variable t. In partial differential equations, they may depend on more than one variable.
  • WhenEvent[event,action] may be included in the equations eqns to specify an action that occurs when event becomes True.
  • The differential equations must contain enough initial or boundary conditions to determine the solutions for the ui completely.
  • Initial and boundary conditions are typically stated in the form u[x0]==c0, u'[x0]==dc0, etc., but may consist of more complicated equations.
  • The c0, dc0, etc. can be lists, specifying that u[x] is a function with vector or general list values.
  • Periodic boundary conditions can be specified using u[x0]==u[x1].
  • The point x0 that appears in the initial or boundary conditions need not lie in the range xmin to xmax over which the solution is sought.
  • Boundary values may also be specified using DirichletCondition and NeumannValue.
  • In delay differential equations, initial history functions are given in the form u[x/;x<x0]==c0, where c0 is in general a function of x.
  • The differential equations in NDSolve can involve complex numbers.
  • NDSolve can solve many differentialalgebraic equations, in which some of the eqns are purely algebraic, or some of the variables are implicitly algebraic.
  • The ui can be functions of the dependent variables and need not include all such variables.
  • The following options can be given:
  • AccuracyGoalAutomaticdigits of absolute accuracy sought
    CompiledAutomaticwhether expressions should be compiled automatically
    DependentVariablesAutomaticthe list of all dependent variables
    EvaluationMonitorNoneexpression to evaluate whenever the function is evaluated
    InitialSeeding{}seeding equations for some algorithms
    InterpolationOrderAutomaticthe continuity degree of the final output
    MaxStepFraction1/10maximum fraction of range to cover in each step
    MaxStepsAutomaticmaximum number of steps to take
    MaxStepSizeAutomaticmaximum size of each step
    MethodAutomaticmethod to use
    NormFunctionAutomaticthe norm to use for error estimation
    PrecisionGoalAutomaticdigits of precision sought
    StartingStepSizeAutomaticinitial step size used
    StepMonitorNoneexpression to evaluate when a step is taken
    WorkingPrecisionMachinePrecisionprecision to use in internal computations
  • NDSolve adapts its step size so that the estimated error in the solution is just within the tolerances specified by PrecisionGoal and AccuracyGoal.
  • The option NormFunction->f specifies that the estimated errors for each of the ui should be combined using f[{e1,e2,}].
  • AccuracyGoal effectively specifies the absolute local error allowed at each step in finding a solution, while PrecisionGoal specifies the relative local error.
  • If solutions must be followed accurately when their values are close to zero, AccuracyGoal should be set larger, or to Infinity.
  • The default setting of Automatic for AccuracyGoal and PrecisionGoal is equivalent to WorkingPrecision/2.
  • The default setting of Automatic for MaxSteps estimates the maximum number of steps to be taken by NDSolve, depending on start and stop time and an estimate of the step size. Should this not be possible, a fixed number of steps is taken.
  • The setting for MaxStepFraction specifies the maximum step to be taken by NDSolve as a fraction of the range of values for each independent variable.
  • With DependentVariables->Automatic, NDSolve attempts to determine the dependent variables by analyzing the equations given.
  • NDSolve typically solves differential equations by going through several different stages, depending on the type of equations. With Method->{s1->m1,s2->m2,}, stage si is handled by method mi. The actual stages used and their order are determined by NDSolve, based on the problem to solve.
  • Possible solution stages are:
  • "TimeIntegration"time integration for systems of differential equations
    "BoundaryValues"ordinary differential equation boundary value solutions
    "DiscontinuityProcessing"symbolic processing for handling of discontinuous differential equations
    "EquationSimplification"simplification of equation form for numerical evaluation
    "IndexReduction"symbolic index reduction for differential algebraic equations
    "DAEInitialization"consistent initialization for differential algebraic equations
    "PDEDiscretization"discretization for partial differential equations
  • With Method->m1 or Method->{m1,s2->m2,}, the method m1 is assumed to be for time integration, so Method->m1 is equivalent to Method->{"TimeIntegration"->m1}.
  • Possible explicit time integration settings for the Method option include:
  • "Adams"predictorcorrector Adams method with orders 1 through 12
    "BDF"implicit backward differentiation formulas with orders 1 through 5
    "ExplicitRungeKutta"adaptive embedded pairs of 2(1) through 9(8) RungeKutta methods
    "ImplicitRungeKutta"families of arbitraryorder implicit RungeKutta methods
    "SymplecticPartitionedRungeKutta"interleaved RungeKutta methods for separable Hamiltonian systems
  • With Method->{"controller",Method->"submethod"} or Method->{"controller",Method->{m1,m2,}}, possible controller methods include:
  • "Composition"compose a list of submethods
    "DoubleStep"adapt step size by the doublestep method
    "EventLocator"respond to specified events
    "Extrapolation"adapt order and step size using polynomial extrapolation
    "FixedStep"use a constant step size
    "OrthogonalProjection"project solutions to fulfill orthogonal constraints
    "Projection"project solutions to fulfill general constraints
    "Splitting"split equations and use different submethods
    "StiffnessSwitching"switch from explicit to implicit methods if stiffness is detected
  • Methods used mainly as submethods include:
  • "ExplicitEuler"forward Euler method
    "ExplicitMidpoint"midpoint rule method
    "ExplicitModifiedMidpoint"midpoint rule method with Gragg smoothing
    "LinearlyImplicitEuler"linearly implicit Euler method
    "LinearlyImplicitMidpoint"linearly implicit midpoint rule method
    "LinearlyImplicitModifiedMidpoint"linearly implicit Badersmoothed midpoint rule method
    "LocallyExact"numerical approximation to locally exact symbolic solution
  • The setting InterpolationOrder->All specifies that NDSolve should generate solutions that use interpolation of the same order as the underlying method used. »


open all close all

Basic Examples  (7)

Solve a first-order ordinary differential equation:

Click for copyable input

Use the solution in a plot:

Click for copyable input

Use the function and its derivative in a plot:

Click for copyable input

Find specific values:

Click for copyable input

Second-order nonlinear ordinary differential equation:

Click for copyable input

Plot the function and its first two derivatives:

Click for copyable input

System of ordinary differential equations:

Click for copyable input
Click for copyable input

Solve the heat equation in one dimension:

Click for copyable input
Click for copyable input

Alternative form of equation:

Click for copyable input

Solve the Poisson equation over a Disk:

Click for copyable input
Click for copyable input

Find a minimal surface over a Disk with a sinusoidal boundary condition.

Click for copyable input
Click for copyable input

Solve a coupled nonlinear sine-Gordon equation over a region.

Click for copyable input
Click for copyable input

Scope  (25)

Generalizations & Extensions  (1)

Options  (29)

Applications  (31)

Properties & Relations  (7)

Possible Issues  (11)

Introduced in 1991
Updated in 2019