【发布时间】:2015-01-28 10:29:09
【问题描述】:
如你所知,函数的梯度是以下向量:
Hessian 矩阵如下:
现在,我想知道,有没有办法在 R 中为给定点的用户定义函数计算这些?
首先,我找到了一个名为 numDeriv 的包,它似乎具有必要的功能 grad 和 hessian 但现在我无法得到正确的结果......因此,这是我的工作流程:
假设给定函数 f(x,y) = x^2 * x^3,我们需要计算点 (x=1, y=2) 的 Gradient 和 Hessian。
说了这么多,我在R里面定义了这个函数:
dummy <- function(x,y) {
rez <- (z^2)*(y^3)
rez
}
然后按如下方式使用grad:
grad(func=dummy, x=1, y=2)
这给了我结果 16——问题是这只是梯度向量中的第一个值,其正确版本是
[16, 12]
hessian 也是如此:
hessian(func=dummy, x=1, y=2)
它给出了我的 1x1 矩阵,其值为 16 而不是 2x2 矩阵
[,1] [,2]
[1,] 16 24
[2,] 24 12
那么,问题是我做错了什么?
谢谢。
【问题讨论】:
-
附带说明,我也 tried Wolfram|Alpha 但也未能得到正确的结果...
-
dummy <- function(x) {(x[1]^2)*(x[2]^3)};grad(func=dummy, x=c(1,2));hessian(func=dummy, x=c(1,2)) -
Khashaa,是的,我现在明白我的错误了,谢谢 :)。
标签: r calculus derivative