[R] Derivative of a Function Expression

Gabor Grothendieck ggrothendieck at gmail.com
Mon Sep 3 23:58:45 CEST 2007


The Ryacas package can do that (but the function must be one line
and it can't have brace brackets).  The first yacas call below registers f with
yacas, then we set up a function to act as a template to hold the
derivative and then we set its body calling yacas again to take the
derivative.

library(Ryacas)
f <- function(x)  2*cos(x)^2 + 3*sin(x) +  0.5
yacas(f) # register f with yacas
Df <- f
body(Df) <- yacas(expression(deriv(f(x))))[[1]]
Df

Here is the output:

> library(Ryacas)
> f <- function(x)  2*cos(x)^2 + 3*sin(x) +  0.5
> yacas(f)
[1] "Starting Yacas!"
expression(TRUE)
> Df <- f
> body(Df) <- yacas(expression(deriv(f(x))))[[1]]
> Df
function (x)
2 * (-2 * sin(x) * cos(x)) + 3 * cos(x)

Also see:

demo("Ryacas-Function")

and the other demos, vignette and home page:
   http://ryacas.googlecode.com



On 9/3/07, Rory Winston <rory.winston at gmail.com> wrote:
> Hi
>
> I am currently (for pedagogical purposes) writing a simple numerical
> analysis library in R. I have come unstuck when writing a simple
> Newton-Raphson implementation, that looks like this:
>
> f <- function(x) { 2*cos(x)^2 + 3*sin(x) +  0.5  }
>
> root <- newton(f, tol=0.0001, N=20, a=1)
>
> My issue is calculating the symbolic derivative of f() inside the newton()
> function. I cant seem to get R to do this...I can of course calculate the
> derivative by calling D() with an expression object containing the inner
> function definition, but I would like to just define the function once and
> then compute the derivative of the existing function. I have tried using
> deriv() and as.call(), but I am evidently misusing them, as they dont do
> what I want. Does anyone know how I can define a function, say foo, which
> manipulates one or more arguments, and then refer to that function later in
> my code in order to calculate a (partial) derivative?
>
> Thanks
> Rory
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list