如何在R中找到函数的上下限

时间:2019-01-14 16:58:57

标签: r optimization mathematical-optimization

我想尝试在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

红线是“优化”函数给定的最小和最大值,绿线是phi_function在间隔(lbound_ex,ubound_ex)中的上限。有人知道如何在R中找到上限和下限吗?

在此先感谢您的帮助! 瑞安

1 个答案:

答案 0 :(得分:4)

我不认为绿线代表最大值(或最小值)。将它们定义为切线的斜率为0的点,以及该斜率。

您的函数不是单峰的(仅一个峰),最大值和最小值超出了您的范围。

函数优化将搜索上下间隔,并在该间隔中的连续函数中查找最大值和最小值。 如果您扩展功能,则会发现(0,0)还有另一个最大值