[R] Partial Derivatives in R
David Winsemius
dwinsemius at comcast.net
Sun May 10 23:06:31 CEST 2009
On May 10, 2009, at 10:05 AM, Paul Heinrich Dietrich wrote:
>
> Quick question:
>
> Which function do you use to calculate partial derivatives from a
> model
> equation?
>
> I've looked at deriv(), but think it gives derivatives, not partial
> derivatives.
Your reading of the help page and the examples differs from mine. It
says:
" It returns a call for computing the expr and its (partial)
derivatives, simultaneously."
> dx2x <- deriv(~ x^2, "x") ; dx2x # the example on the help page
expression({
.value <- x^2
.grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
.grad[, "x"] <- 2 * x
attr(.value, "gradient") <- .grad
.value
})
> dyx2.x <- deriv(~ y*x^2, "x") ; dyx2.x
expression({
.value <- y * x^2
.grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
.grad[, "x"] <- y * (2 * x)
attr(.value, "gradient") <- .grad
.value
})
> dy2x2.x <- deriv(~ y^2*x^2, "x") ; dy2x2.x
expression({
.expr1 <- y^2
.value <- .expr1 * x^2
.grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
.grad[, "x"] <- .expr1 * (2 * x)
attr(.value, "gradient") <- .grad
.value
})
> dy2x2.xy <- deriv(~ y^2*x^2, c("x","y")) ; dy2x2.xy
expression({
.expr1 <- y^2
.expr2 <- x^2
.value <- .expr1 * .expr2
.grad <- array(0, c(length(.value), 2L), list(NULL, c("x",
"y")))
.grad[, "x"] <- .expr1 * (2 * x)
.grad[, "y"] <- 2 * y * .expr2
attr(.value, "gradient") <- .grad
.value
})
> Of course my equation isn't this simple, but as an example,
> I'm looking for something that let's you control whether it's a
> partial or
> not, such as:
>
> somefunction(y~a+bx, with respect to x, partial=TRUE)
>
That appears to be precisely what your are offered with deriv, ....
just not needing the partial=TRUE
deriv(
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list