This help topic is for R version 0.60. For the current version of R, try https://stat.ethz.ch/R-manual/R-patched/library/base/html/deriv.html
deriv {base}R Documentation

Symbolic and Algorithmic Derivatives of Simple Expressions

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 ~.

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

... ?? ...

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)
e.dx2x <- eval(dx2x); mode(e.dx2x)
x <- -1:2
eval(e.dx2x)

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

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

[Package base version 0.60 ]