我想找到双变量函数的数值导数。
是否有包或内置函数来执行此操作?
答案 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计算如何完成的更多信息,请参阅帮助页面。