Как известно, Градиентом функции является следующий вектор:
а гессиан - это следующая матрица:
Теперь мне интересно, есть ли способ вычислить их в R для пользовательской функции в заданной точке?
Во-первых, я нашел пакет с именем numDeriv
, который, похоже, имеет необходимые функции. grad
и hessian
, но теперь я не могу получить правильные результаты... Итак, вот мой рабочий процесс:
Допустим, нам дана функция f(x,y) = x^2 * x^3, и нам нужно вычислить градиент и гессиан в точке (x=1, y=2).
Как уже было сказано, я определяю эту функцию в 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
Так вот вопрос, что я делаю не так?
Спасибо.