创建一个二变量函数的图像并在 R 中找到它的最优值

模式在这里

我正在为我的学位做一些任务,并且遇到了一个多变量函数成像的问题。下列的:

fb<-function(x) {5*x[1]^2+2*x[1]*x[2]+4*x[2]^2+4*x[1]-2*x[2]-2}
> x<--50:50
> y<--50:50
> z<-outer(x,y,fb)
Error in FUN(X, Y, ...) : unused argument (Y)

不仅如此,我还需要找到一个具有最大点的最优值,但是当我尝试不使用向量时,它会给出下一个:

 optim(c(0,0), fb, control=list(fnscale=-5))
Error in fn(par, ...) : argument "y" is missing, with no default

请指教。

艾伦·卡梅伦

看起来好像你有两个变量的函数,x[1]并且x[2],你作为一个向量传递给你的函数,x这将导致输出矢量化出现问题。更好的写法是

fb <- function(x, y) {
  5 * x^2 + 2*x * y + 4 * y^2 + 4 * x - 2 * y - 2
}

这使您可以将函数可视化为表面,例如使用persp

x <- -50:50
y <- -50:50
z <- outer(x, y, fb)

persp(x, y, z)

要使其与 一起使用optim,请创建一个包装函数,将 x 和 y 放入单个向量中,使其在功能上与您的原始函数等效:

result <- optim(c(0, 0), function(x) fb(x[1], x[2]))$par
result
#> [1] -0.4736532  0.3684892

为了证明这是正确的结果,我们将在表面的 2D 表示上绘制最佳点。

library(ggplot2)

ggplot(cbind(expand.grid(x = x, y = y), z = c(z)), aes(x, y, fill = z)) +
  geom_raster() +
  scale_fill_viridis_c() +
  geom_point(x = result[1], y = result[2], color = "white")

reprex 包于 2022-06-15 创建(v2.0.1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在R中找到函数的最大值

从 r 中的变量中找到最大值

如何在R中找到凹函数的最大值

R在数据框中找到小于另一个向量中的值的值

在r中找到第n个最低值的列

确定是否在另一个向量中找到R中向量的任何值

在向量中找到小于R中另一个向量的值的最大元素

宏/函数,在一列中找到一个字符串,然后在工作表2中的一个句子中找到它,并在第3列中返回各自的值

在每一列中找到唯一的行並在 r 中標記它們

R:在另一个矢量中找到一个矢量的值以及相应的值

如何在嵌套的对象数组中找到一个值并更新它?

在R中找到重叠值

如何在R中的向量中找到一个值与其最接近的值之间的差?

如何在R中变量的每个级别中找到归一化值

像R的is.na函数一样在Julia中找到缺失的值

在R和Rcpp中找到最大的n个唯一值及其频率

Purrr In R在满足条件的组中找到最后一行,然后从该行中提取一个值

R - ddply(): 使用一列的最小值在不同的列中找到对应的值

检查数据框中是否存在值,并在字典中找到它

在R中找到下一个实例的时间

是否有在 R 中查找反成像相关矩阵的函数?我可以通过excel找到它,但不能在R中找到

如何在R中的一个函数中找到多个解决方案?

当before值不为1时,则将before值代入当前值,直到在R中找到下一个非1值

在R中的循环序列中找到3个连续的最大值

在R中的距离矩阵中找到x个最小值

在R的3列中找到每一行的最大值

如何在R中的分组数据中找到某个观测值的最后一次出现?

R如何在向量中找到一系列共同值(确定生长季节)

在R中:在以逗号分隔的列中找到所有唯一值