Actually in thinking about this its pretty easy to do it without Ryacas too:
Df <- f body(Df) <- deriv(body(f), "x") Df On 9/3/07, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > 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 <[EMAIL PROTECTED]> 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@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. > > > ______________________________________________ R-help@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.