Найти максимум функции в R - PullRequest
0 голосов
/ 16 июня 2020

Я построил функцию в R, которая вычисляет значение плотности phi стандартной нормали. Вот он:

f<-function(x){
  v<-1/sqrt(2*pi)*exp(-0.5*x**2)
  return (v)
}

затем я построил последовательность значений и применил функцию f к каждому из этих значений:

x<-seq(-10,10,length=100)
f(x)
plot(f(x),t="l")

Теперь я хочу продемонстрировать, что максимум этой функции находится в 0; как я могу сделать, , используя функцию nlm?

1 Ответ

2 голосов
/ 16 июня 2020

Как вы, вероятно, знаете из документации , nlm выполняет минимизацию , а не максимизацию . Поэтому вам нужно обернуть его, чтобы инвертировать знак вашей функции:

nlmax = function (f, p, ...) {
    res = nlm(function(x, ...) -f(x, ...), p, ...)
    res$maximum = -res$minimum
    res$minimum = NULL
    res
}

Обратите внимание, как мы инвертируем две вещи:

  1. Значение функции f когда вызов nlm
  2. Полученная оценка minimum.

И теперь вы можете запустить его в своей функции:

nlmax(f, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...