Provides numerical gradients and Jacobians.
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
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
## [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
## [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
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
## [3,] 0 0
## [4,] 0 0