Я использую функцию объединения c()
для определения gradient
:
eval_f <- function( x, param, n ) {
return(list("objective" = x[5] * (param[1] - param[2] / sum(x[1:4])),
"gradient" = c( x[5] * param[2] / (x[1] * x[1]),
x[5] * param[2] / (x[2] * x[2]),
x[5] * param[2] / (x[3] * x[3]),
x[5] * param[2] / (x[4] * x[4]),
param[1] - param[2] / sum(x[1:4])
) ) )
}
Можно видеть, что градиент включает элементы, имеющие одинаковую структуру: x[5] * param[2] / (x[...] * x[...])
Вопрос. Можно ли использовать стандартную функцию (например, rep(c(...), times=n)
) для создания gradient
?