# Discrete Solvers

`solve(prob::DiscreteProblem,alg;kwargs)`

Solves the discrete function map defined by `prob`

using the algorithm `alg`

. If no algorithm is given, a default algorithm will be chosen.

## Recommended Methods

The implementation for solving discrete equations is the `Discrete`

algorithm in OrdinaryDiffEq.jl. It has zero overhead and uses compilation to build a separate setup that allows you to use the common interface (including events/callbacks) to solve function maps, along with everything else like plot recipes, while completely ignoring the ODE functionality related to continuous equations (except for a tiny bit of initialization).

# Full List of Methods

## Discrete Algorithm

OrdinaryDiffEq.jl also contains the `Discrete`

algorithm which lets you solve a problem where `f`

is a map: $u_{n+1} = f(t_{n+1},u_n)$. It has a piecewise constant interpolation and allows for all of the callback/event handling capabilities (of course, with `rootfind=false`

. If a `ContinuousCallback`

is given, it's always assumed `rootfind=false`

).

The constructor is:

`Discrete(;apply_map=false,scale_by_time=false)`

If `apply_map=false`

, `f`

is completely ignored. If `apply_map=true`

, then every step is the update

If in addition `scale_by_time=true`

, then every step is the update

Notice that this is the same as updates from the Euler method, except in this case we assume that its a discrete change and thus the interpolation is piecewise constant.

As a shorthand,

`FunctionMap(scale_by_time=false)`

is a `Discrete`

with `apply_map=true`

, and thus corresponds to the function map equation