[R] Derivative of a Function Expression
Alberto Monteiro
albmont at centroin.com.br
Mon Sep 3 23:45:40 CEST 2007
Rory Winston wrote:
>
> 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.
>
If it's pedagogical, maybe returning to basics could help.
What is f'(x)?
It's the limit of (f(x + h) - f(x)) / h when h tends to zero.
So, do it numerically: take a sufficiently small h and
compute the limit. h must be small enough
that h^2 f''(x) is much smaller than h f'(x), but big
enough that f(x+h) is not f(x)
numerical.derivative <- function(f, x, h = 0.0001)
{
# test something
(f(x + h) - f(x)) / h
}
Ex:
numerical.derivative(cos, pi) = 5e-05 # should be -sin(pi) = 0
numerical.derivative(sin, pi) = -1 # ok
numerical.derivative(exp, 0) = 1.00005 # close enough
numerical.derivative(sqrt, 0) = 100 # should be Inf
Alberto Monteiro
More information about the R-help
mailing list