numD: Numerical Derivatives

View source: R/numD.R

numDR Documentation

Numerical Derivatives

Description

Constructs the numerical derivatives of mathematical expressions

Usage

numD(tilde, ..., .h = NULL)

Arguments

tilde

a mathematical expression (see examples and plotFun)

...

additional parameters, typically default values for mathematical parameters

.h

numerical step size to enforce.

Details

Uses a simple finite-difference scheme to evaluate the derivative. The function created will not contain a formula for the derivative. Instead, the original function is stored at the time the derivative is constructed and that original function is re-evaluated at the finitely-spaced points of an interval. If you redefine the original function, that won't affect any derivatives that were already defined from it. Numerical derivatives, particularly high-order ones, are unstable. The finite-difference parameter .h is set, by default, to give reasonable results for first- and second-order derivatives. It's tweaked a bit so that taking a second derivative by differentiating a first derivative will give reasonably accurate results. But, if taking a second derivative, much better to do it in one step to preserve numerical accuracy.

Value

a function implementing the derivative as a finite-difference approximation. This has a second argument, .h, that allow the finite-difference to be set when evaluating the function. The default values are set for reasonable numerical precision.

Note

WARNING: In the expressions, do not use variable names beginning with a dot, particularly .f or .h

Author(s)

Daniel Kaplan (kaplan@macalester.edu)

Examples

g = numD( a*x^2 + x*y ~ x, a=1)
g(x=2,y=10)
gg = numD( a*x^2 + x*y ~ x&x, a=1)
gg(x=2,y=10)
ggg = numD( a*x^2 + x*y ~ x&y, a=1)
ggg(x=2,y=10)
h = numD( g(x=x,y=y,a=a) ~ y, a=1)
h(x=2,y=10)
f = numD( sin(x)~x)
# slice_plot( f(3,.h=hlim)~h, bounds(h=.00000001 :000001)) %>% gf_hline(yintercept = cos(3))


mosaicCalc documentation built on Sept. 15, 2022, 9:06 a.m.