Как найти верхнюю и нижнюю границы функции в R - PullRequest
0 голосов
/ 14 января 2019

Я хочу попробовать найти верхнюю и нижнюю границы функции в R.

Я пытаюсь использовать встроенную функцию R «оптимизировать», но функция пытается найти, где тангенс функции равен нулю. Например, если вы запустите следующий код:

phi_function <- function(x) {
  return(((x^6)/8) - ((3*(x^2))/4))
}

lbound_ex <- -1.79550879355662
ubound_ex <- 0.168144378782495

LX_ex <- optimise(phi_function, interval = c(lbound_ex, ubound_ex), maximum = FALSE)$objective
UX_ex <- optimise(phi_function, interval = c(lbound_ex, ubound_ex), maximum = TRUE)$objective

curve(phi_function, from = lbound_ex, to = ubound_ex)
abline(v = lbound_ex)
abline(v = ubound_ex)
abline(h = LX_ex, col = 'red')
abline(h = UX_ex, col = 'red')
abline(h = phi_function(-1.79550879355662), col = 'green')

Вы получите следующий график:

phi_function plot

Красные линии - это минимум и максимум, заданные функцией 'optimize', а зеленая линия - это верхняя граница функции phi_function в интервале (lbound_ex, ubound_ex). Кто-нибудь знает, как найти верхнюю и нижнюю оценки в R?

Заранее спасибо за любую помощь! Райан

1 Ответ

0 голосов
/ 14 января 2019

Я не думаю, что зеленая линия представляет максимум (или минимум). Они определяются как точка, в которой наклон касательной равен 0, а угол наклона.

Ваша функция не является унимодальной (только один пик), а максимальные и минимальные значения находятся за пределами вашего диапазона.

Функция оптимизации будет искать верхний и нижний интервал и искать максимумы и минимумы в непрерывной функции в интервале. Если вы расширите свою функцию, вы обнаружите еще один максимум в (0,0)

...