> I need to find the root of the second derivative of many curves and do not > want to cut and paste the expression results from the deriv() or D() > functions every time. Below is an example. What I need to do is refer to > "fn2nd" in the uniroot() function, but when I try something like > uniroot(fn2nd,c(0,1)) I get an error, so I have resorted to pasting in the > expression, but this is highly inefficient. > > Thanks, J > > [...]
What is so wrong with using r <- uniroot(function(x) eval(fn2nd, list(x=x)), interval=c(0, 1), tol=0.0001) (I thought you were almost there) or even fn2nd_fun <- function(x) eval(fn2nd, list(x=x)) ex <- seq(from=0, to=1, length.out = 1000) y1 <- fn2nd_fun(ex) ... r <- uniroot(fn2nd_fun, interval=c(0, 1), tol=0.0001) --Hans Werner > r$root > abline(h=0, col = "red") > abline(v=r$root, col = "green") > arrows(0.6, -2, r$root,0, length = 0.1, angle = 30, code = 2, col = "red") > text(0.765,-2.3,paste("b = ",r$root,sep="")) > ______________________________________________ R-help@r-project.org 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.