# FDM.jl: Finite Difference Methods

FDM.jl estimates derivatives with finite differences.

See also FDM.

## Examples

Compute the first derivative of `sin`

with a 5th order central method:

```
julia> central_fdm(5, 1)(sin, 1) - cos(1)
-1.247890679678676e-13
```

Compute the second derivative of `sin`

with a 5th order central method:

```
julia> central_fdm(5, 2)(sin, 1) + sin(1)
9.747314066999024e-12
```

Construct a FDM on a custom grid:

```
julia> method, report = fdm([-2, 0, 5], 1, report=true)
(FDM.method, FDMReport:
order of method: 3
order of derivative: 1
grid: [-2, 0, 5]
coefficients: [-0.357143, 0.3, 0.0571429]
roundoff error: 2.22e-16
bounds on derivatives: 1.00e+00
step size: 3.62e-06
accuracy: 6.57e-11
)
julia> method(sin, 1) - cos(1)
-2.05648831297367e-11
```

Compute a directional derivative:

```
julia> f(x) = sum(x)
f (generic function with 1 method)
julia> central_fdm(5, 1)(ε -> f([1, 1, 1] + ε * [1, 2, 3]), 0) - 6
-2.922107000813412e-13
```