Как вы, вероятно, знаете из документации , nlm
выполняет минимизацию , а не максимизацию . Поэтому вам нужно обернуть его, чтобы инвертировать знак вашей функции:
nlmax = function (f, p, ...) {
res = nlm(function(x, ...) -f(x, ...), p, ...)
res$maximum = -res$minimum
res$minimum = NULL
res
}
Обратите внимание, как мы инвертируем две вещи:
- Значение функции
f
когда вызов nlm
- Полученная оценка
minimum
.
И теперь вы можете запустить его в своей функции:
nlmax(f, 1)