我想尝试在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在间隔(lbound_ex,ubound_ex)中的上限。有人知道如何在R中找到上限和下限吗?
在此先感谢您的帮助! 瑞安
答案 0 :(得分:4)
我不认为绿线代表最大值(或最小值)。将它们定义为切线的斜率为0的点,以及该斜率。
您的函数不是单峰的(仅一个峰),最大值和最小值超出了您的范围。
函数优化将搜索上下间隔,并在该间隔中的连续函数中查找最大值和最小值。 如果您扩展功能,则会发现(0,0)还有另一个最大值