任意定义函数的数值导数

时间:2013-08-28 16:43:51

标签: r derivative

我想找到双变量函数的数值导数。

  • 该功能由我自己定义
  • 我需要关于每个参数的第一个导数和交叉二阶导数

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

1 个答案:

答案 0 :(得分:13)

安装并加载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计算如何完成的更多信息,请参阅帮助页面。