是否有R函数来寻找双变量函数的局部最小值?

时间:2020-04-09 14:25:19

标签: r function rstudio minima

我具有以下功能:

我有兴趣使用R中的代码查找该双变量函数的所有4个局部最小值。我该如何处理?

1 个答案:

答案 0 :(得分:1)

如果您对数值优化感兴趣,则可以采用几种方法。最直接的方法是使用optim。默认情况下,这是Nelder-Mead单纯形方法,但其他方法也已实现。

您需要从不同的起始值开始以收敛到不同的终点。我可以向您提出以下建议:

func <- function(a){
  x <- a[1]
  y <- a[2]
  return(
     0.5*(x^4 - 16*x^2 + 5*x + y^4 - 16*y^2 + 5*y)
  )
}

t0 <- rnorm(100, sd = 20)
t1 <- rnorm(100, sd = 20)

points <- do.call(rbind, lapply(1:100, function(i) optim(par = c(t0[i],t1[i]), fn = func)$par))

如果要以图形方式查看您的解决方案,则:

library(ggplot2)
ggplot(data.frame(points)) + geom_point(aes(x = X1, y = X2))

enter image description here

此输出中有四个局部最小值