我想找到二元函数的数值导数。
- 函数是我自己定义的
- 我需要关于每个参数的一阶导数并交叉二阶导数
是否有包或内置函数来执行此操作?
安装并加载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 计算的更多信息,请参阅帮助页面。