Ich versuche, eine Funktion mit zwei Parametern zu optimieren (minimieren), die eine eindeutige Lösung haben sollten.Optimieren einer Funktion in R mit mehr als einer Lösung
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)
Diejenigen, die Mittelschule Mathematik liebte die Formel für den Abstand zwischen zwei Punkten auf einer cartesianischen (x, y) Koordinatenebene kann erkennen. Die Funktion foo wird so geschrieben, dass x1 die x-Koordinate und x2 die y-Koordinate eines Punktes ist, den ich suche. In diesem Fall ist dieser Punkt (3,4). Jedoch bekomme ich eine whacky Ausgabe:
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
Irgendeine Idee, was schief geht?
Raten Sie das Konzept der * Lösung * sind vermasselt (das heißt die Nullen einer Funktion zu finden) mit dem von der mimimum zu finden (oder Maximum) einer Funktion. "optim" tut letzteres, während ich denke, dass Sie an ersterem interessiert sind. – nicola
Wenn Sie versuchen, das Minimum zu finden, sollten die Quadratwurzeln positiv und nicht negativ sein. Wenn negativ, ist das Minimum der am weitesten entfernte Punkt von diesen drei Punkten. –