# numderiv: Richardson's Numerical Derivative In pracma: Practical Numerical Math Functions

 numderiv R Documentation

## Richardson's Numerical Derivative

### Description

Richardson's method applied to the computation of the numerical derivative.

### Usage

``````numderiv(f, x0, maxiter = 16, h = 1/2, ..., tol = .Machine\$double.eps)

numdiff(f, x, maxiter = 16, h = 1/2, ..., tol = .Machine\$double.eps)
``````

### Arguments

 `f` function to be differentiated. `x0, x` point(s) at which the derivative is to be computed. `maxiter` maximum number of iterations. `h` starting step size, should be the default `h=0.5`. `tol` relative tolerance. `...` variables to be passed to function `f`.

### Details

`numderiv` returns the derivative of `f` at `x0`, where `x0` must be a single scalar in the domain of the function.

`numdiff` is a vectorized form of `numderiv` such that the derivatives will be returned at all points of the vector `x`.

### Value

Numeric scalar or vector of approximated derivatives.

### Note

See `grad` in the ‘numDeriv’ package for another implementation of Richardson's method in the context of numerical differentiation.

### References

Mathews, J. H., and K. D. Fink (1999). Numerical Methods Using Matlab. Third Edition, Prentice Hall.

`fderiv`, `complexstep`

### Examples

``````# Differentiate an anti-derivative function
f <- function(x) sin(x)*sqrt(1+sin(x))
F <- function(x)
integrate(f, 0, x, rel.tol = 1e-12)\$value
x0 <- 1
dF0 <- numderiv(F, x0, tol = 6.5e-15)   #=> 1.141882942715462
f(x0)                                   #   1.141882942715464 true value
# fderiv(F, x0)                         #   1.141882942704476

# Compare over a whole period
x <- seq(0, 2*pi, length.out = 11)
max(abs(numdiff(sin, x) - cos(x)))          #=> 3.44e-15
# max(abs(numDeriv::grad(sin, x) - cos(x))) #   7.70e-12

# Example from complex step
f <- function(x) exp(x) / sqrt(sin(x)^3 + cos(x)^3)
x0 <- 1.5
numderiv(f, x0)                          #   4.05342789389876, error 0.5e-12
#   4.053427893898621... true value
``````

pracma documentation built on Nov. 7, 2023, 3:01 a.m.