Symbolic and Algorithmic Derivatives of Simple Expressions

Usage

D(expr, namevec)
deriv(expr, namevec, function.arg = NULL, tag = ".expr")

Arguments

expr expression which should be derivated
namevec character vector, giving the variable names with respect to which derivatives will be computed.
function.arg ... ?? ...
tag ... ?? ...

Description

D is modelled after its S pendant for taking simple symbolic derivatives.

deriv is a generic function with a default and a formula method. It returns a call for computing the expr and its (partial) derivatives, simultaneously. It uses so-called ``algorithmic derivatives''.

Currently, deriv.formula just calls deriv.default after extracting the expression to the right of ~.

Value

D returns an expression and therefore can easily be iterated for higher derivatives.

deriv returns a call object which becomes an expression when evaluated once. Evaluation of the latter expression returns the function values with a ".gradient" attribute containing the gradient matrix.

Note

This help page should be fixed up by one of R&R or someone else who fluently speaks the language in `$RHOME/src/main/deriv.c'.

It's author, MM, has only got a vague idea and thinks that a help page is better than none.

References

A. Griewank, G. F. Corliss (1991). Automatic Differentiation of Algorithms: Theory, Implementation, and Application. SIAM proceedings, Philadelphia.

See Also

nlm for numeric minimization which should make use of derivatives.

Examples

## formula argument :
dx2x <- deriv(~ x^2, "x") ; dx2x
##- expression({
##-         .value <- x^2
##-         .grad <- array(0, c(length(.value), 1), list(NULL, c("x")))
##-         .grad[, "x"] <- 2 * x
##-         attr(.value, "gradient") <- .grad
##-         .value
##- })
mode(dx2x)
x <- -1:2
eval(dx2x)

## Something `tougher':
trig.exp <- expression(sin(cos(x + y^2)))
( D.sc <- D(trig.exp, c("x", "y")) )

( dxy <- deriv(trig.exp, c("x", "y")) )
y <- 1
eval(dxy)
eval(D.sc)


[Package Contents]