nloptr (version 1.0.0)

grad, jacobian: Numerical Gradients and Jacobians

Description

Provides numerical gradients and jacobians.

Usage

nl.grad(x0, fn, heps = .Machine$double.eps^(1/3), ...)
nl.jacobian(x0, fn, heps = .Machine$double.eps^(1/3), ...)

Arguments

x0
point as a vector where the gradient is to be calculated.
fn
scalar function of one or several variables.
heps
step size to be used.
...
additional arguments passed to the function.

Value

  • grad returns the gradient as a vector; jacobian returns the Jacobian as a matrix of usual dimensions.

Details

Both functions apply the ``central difference formula'' with step size as recommended in the literature.

Examples

Run this code
fn1 <- function(x) sum(x^2)
  nl.grad(seq(0, 1, by = 0.2), fn1)
  ## [1] 0.0  0.4  0.8  1.2  1.6  2.0
  nl.grad(rep(1, 5), fn1)
  ## [1] 2  2  2  2  2

  fn2 <- function(x) c(sin(x), cos(x))
  x <- (0:1)*2*pi
  nl.jacobian(x, fn2)
  ##      [,1] [,2]
  ## [1,]    1    0
  ## [2,]    0    1
  ## [3,]    0    0
  ## [4,]    0    0

Run the code above in your browser using DataCamp Workspace