R: Utility functions for creating Gradient- and Hessian-like...

makeDerivs {propagate} | R Documentation

## Utility functions for creating Gradient- and Hessian-like matrices with symbolic derivatives and evaluating them in an environment

### Description

These are three different utility functions that create matrices containing the symbolic partial derivatives of first (`makeGrad`) and second (`makeHess`) order and a function for evaluating these matrices in an environment. The evaluations of the symbolic derivatives are used within the `propagate` function to calculate the propagated uncertainty, but these functions may also be useful for other applications.

### Usage

    makeGrad(expr, order = NULL)
    makeHess(expr, order = NULL)
    evalDerivs(deriv, envir)

### Arguments

`expr` | an expression, such as `expression(x/y)`.
`order` | order of creating partial derivatives, i.e. `c(2, 1)`. See 'Examples'.
`deriv` | a matrix returned from `makeGrad` or `makeHess`.
`envir` | an environment to evaluate in. By default the workspace.

### Details

Given a function f(x_1, x_2, …, x_n), the following matrices containing symbolic derivatives of f are returned:

makeGrad:

\nabla(f) = ≤ft[\frac{\partial f}{\partial x_1}, …, \frac{\partial f}{\partial x_n}\right]

makeHess:

H(f) = ≤ft[ \begin{array}{cccc} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1\,\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1\,\partial x_n} \\ \frac{\partial^2 f}{\partial x_2\,\partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2\,\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n\,\partial x_1} & \frac{\partial^2 f}{\partial x_n\,\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{array} \right]

### Value

The symbolic or evaluated Gradient/Hessian matrices.

### Author(s)

Andrej-Nikolai Spiess

### References

The Matrix Cookbook (Version November 2012).
Petersen KB & Pedersen MS.
http://ais.informatik.uni-freiburg.de/teaching/ws12/mapping/pdf/imm3274.pdf

### Examples

    EXPR <- expression(a^b + sin(c))
    ENVIR <- list(a = 2, b = 3, c = 4)

    ## First-order partial derivatives: Gradient.
    GRAD <- makeGrad(EXPR)

    ## This will evaluate the Gradient.
    evalDerivs(GRAD, ENVIR)

    ## Second-order partial derivatives: Hessian.
    HESS <- makeHess(EXPR)

    ## This will evaluate the Hessian.
    evalDerivs(HESS, ENVIR)

    ## Change derivatives order.
    GRAD <- makeGrad(EXPR, order = c(2,1,3))
    evalDerivs(GRAD, ENVIR)

[Package propagate version 1.0-6 Index]