numDerivs: Functions for creating Gradient and Hessian matrices by... In propagate: Propagation of Uncertainty

Description

These two functions create Gradient and Hessian matrices by Richardson's central finite difference method of the partial derivatives for any expression.

Usage

 1 2 numGrad(expr, envir = .GlobalEnv) numHess(expr, envir = .GlobalEnv) 

Arguments

 expr an expression, such as expression(x/y). envir the environment to evaluate in.

Details

Calculates first- and second-order numerical approximation using Richardson's central difference formula:

f'_i(x) \approx \frac{f(x_1, …, x_i + d, …, x_n) - f(x_1, …, x_i - d, …, x_n)}{2d}

f''_i(x) \approx \frac{f(x_1, …, x_i + d, …, x_n) - 2f(x_1, …, x_n) + f(x_1, …, x_i - d, …, x_n)}{d^2}

Note

The two functions are modified versions of the genD function in the 'numDeriv' package, but a bit more easy to handle because they use expressions and the function's x value must not be defined as splitted scalar values x[1], x[2], ... x[n] in the body of the function.

Author(s)

Andrej-Nikolai Spiess

Examples

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 ## Check for equality of symbolic ## and numerical derivatives. EXPR <- expression(2^x + sin(2 * y) - cos(z)) x <- 5 y <- 10 z <- 20 symGRAD <- evalDerivs(makeGrad(EXPR)) numGRAD <- numGrad(EXPR) all.equal(symGRAD, numGRAD) symHESS <- evalDerivs(makeHess(EXPR)) numHESS <- numHess(EXPR) all.equal(symHESS, numHESS) 

propagate documentation built on May 7, 2018, 1:03 a.m.