Как вы знаете, градиент функции является следующим вектором:вычисления градиента и матриц Гесса в R
и Гесс является следующей матрицей:
Теперь, интересно, есть ли способ вычислить их в 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 вместо матрицы 2х2
[,1] [,2]
[1,] 16 24
[2,] 24 12
Итак, вопрос, что я делаю неправильно?
спасибо.
На стороне записки, я также [попытался] (http://reference.wolfram.com/language/tutorial/Differentiation.html) ** Wolfram | Альфа **, но также не удалось получить правильные результаты ... –
'dummy <- function (x) {(x [1]^2) * (x [2]^3)}; grad (func = dummy, x = c (1,2)); hessian (func = dummy, x = c (1,2)) ' – Khashaa
Хаша, да, теперь я понимаю свою ошибку, спасибо :). –