Functions to Calculate Numeric Derivatives
Calculate (central) numeric gradient and Hessian, including of vector-valued functions.
numericGradient(f, t0, eps=1e-06, fixed, ...) numericHessian(f, grad=NULL, t0, eps=1e-06, fixed, ...) numericNHessian(f, t0, eps=1e-6, fixed, ...)
f |
function to be differentiated. The first argument must be
the parameter vector with respect to which it is differentiated.
For numeric gradient, |
grad |
function, gradient of |
t0 |
vector, the parameter values |
eps |
numeric, the step for numeric differentiation |
fixed |
logical index vector, fixed parameters.
Derivative is calculated only with respect to the parameters
for which |
... |
furter arguments for |
numericGradient
numerically differentiates a (vector valued)
function with respect to it's (vector valued) argument. If the
functions value is a \code{N_val * 1}
vector and the argument is
\code{N_par * 1} vector, the resulting
gradient
is a \code{NVal * NPar}
matrix.
numericHessian
checks whether a gradient function is present.
If yes, it calculates the gradient of the gradient, if not, it
calculates the full
numeric Hessian (numericNHessian
).
Matrix. For numericGradient
, the number of rows is equal to the
length of the function value vector, and the number of columns is
equal to the length of the parameter vector.
For the numericHessian
, both numer of rows and columns is
equal to the length of the parameter vector.
Be careful when using numerical differentiation in optimization routines. Although quite precise in simple cases, they may work very poorly in more complicated conditions.
Ott Toomet
# A simple example with Gaussian bell surface f0 <- function(t0) exp(-t0[1]^2 - t0[2]^2) numericGradient(f0, c(1,2)) numericHessian(f0, t0=c(1,2)) # An example with the analytic gradient gradf0 <- function(t0) -2*t0*f0(t0) numericHessian(f0, gradf0, t0=c(1,2)) # The results should be similar as in the previous case # The central numeric derivatives are often quite precise compareDerivatives(f0, gradf0, t0=1:2) # The difference is around 1e-10
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.