10

我想找到二元函数的数值导数。

  • 函数是我自己定义的
  • 我需要关于每个参数的一阶导数并交叉二阶导数

是否有包或内置函数来执行此操作?

4

1 回答 1

15

安装并加载numDeriv包。

library(numDeriv)
f <- function(x) {
    a <- x[1]; b <- x[2]; c <- x[3]
    sin(a^2*(abs(cos(b))^c))
}
grad(f,x=1:3)
## [1]  0.14376097  0.47118519 -0.06301885
hessian(f,x=1:3)
##            [,1]       [,2]        [,3]
## [1,]  0.1422651  0.9374675 -0.12538196
## [2,]  0.9374675  1.8274058 -0.25388515
## [3,] -0.1253820 -0.2538852  0.05496226

(我的例子是三元而不是二元,但它显然也适用于二元函数。)有关如何完成梯度,尤其是 Hessian 计算的更多信息,请参阅帮助页面。

于 2013-08-28T17:40:29.070 回答