【发布时间】:2016-09-12 11:49:54
【问题描述】:
我正在尝试优化(最小化)具有两个参数的函数,该参数应该具有唯一的解决方案。
foo <- function(x) {
x1 <- x[1]
x2 <- x[2]
t=5-sqrt((0-x1)^2+(0-x2)^2);
u=4-sqrt((0-x1)^2+(4-x2)^2);
v=3-sqrt((3-x1)^2+(0-x2)^2);
return(sum(t,u,v))
}
optim(c(0,0), foo)
那些热爱中学数学的人可能会认出笛卡尔 (x,y) 坐标平面上两点之间距离的公式。函数 foo 是这样编写的,x1 是 x 坐标,x2 是我要查找的点的 y 坐标。在这种情况下,该点是 (3,4)。但是,我得到了一个奇怪的输出:
optim(c(0,0), foo)
$par
[1] -3.938866e+54 1.293779e+54
$value
[1] -1.243772e+55
$counts
function gradient
501 NA
$convergence
[1] 1
$message
NULL
知道出了什么问题吗?
【问题讨论】:
-
猜猜你把 solution 的概念(即寻找函数的零点)和寻找函数的最小值(或最大值)搞混了。
optim是后者,而我猜你对前者感兴趣。 -
如果你试图找到最小值,那么平方根应该是正数而不是负数。如果为负数,则最小值是距离这三个点最远的点。
标签: r optimization