# Consider the following function
fn <- function(par, a = 1, b = 2)
{
val <- par[1] * par[2] - a * par[1] ^ 2 - b * par[2] ^ 2
}
# Calculate the gradient at point (2, 5) respect to 'par'
# when 'a = 1' and 'b = 1'
par <- c(2, 5)
fn.args = list(a = 1, b = 1)
gena.grad(fn = fn, par = par, fn.args = fn.args)
# Calculate Hessian at the same point
gena.hessian(fn = fn, par = par, fn.args = fn.args)
# Repeat calculation of the Hessian using analytical gradient
gr <- function(par, a = 1, b = 2)
{
val <- c(par[2] - 2 * a * par[1],
par[1] - 2 * b * par[2])
}
gena.hessian(gr = gr, par = par, gr.args = fn.args)
Run the code above in your browser using DataLab