为了简化问题,我将在此处使用一个玩具示例。我想导出诸如library(pracma)的多项式函数的梯度和Hessian
dummy <- function(x) {
z <- x[1]; y <- x[2]
rez <- (z^2)*(y^3)+3
rez
}
grad(dummy, c(1,2))
hessian(dummy, c(1,2))
我的问题是,有没有一种有效的方法,因此我可以从中的不同常数项导出梯度和Hessian dummy
?例如,梯度和从粗麻布(z^2)*(y^3)+a
在z=1
和y=2
,其中a=[0.01,3]
。
谢谢!
双方pracma::hessian
并pracma::grad
采取...
为“变量传递到f
”。如果要a
成为变量,则只需要dummy
函数即可将其作为参数:
dummy <- function(x, a) {
z <- x[1]; y <- x[2]
rez <- (z^2)*(y^3)+a
rez
}
grad(dummy, c(1,2), a = 0.01)
# [1] 16 12
hessian(dummy, c(1,2), a = 3)
# [,1] [,2]
# [1,] 16 24
# [2,] 24 12
sapply(seq(0.01, 3, length.out = 10), function(a) grad(dummy, c(1, 2), a = a))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 16 16 16 16 16 16 16 16 16 16
# [2,] 12 12 12 12 12 12 12 12 12 12
当然,结果都是一样的,您要更改一个常数项,然后求导数。任何常数的导数为0。但是这种想法将推广到更有趣的情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句