[R] Minimization of the distance

Petr Savicky savicky at cs.cas.cz
Fri Dec 10 10:47:15 CET 2010

On Thu, Dec 09, 2010 at 07:43:52PM -0800, bluesky wrote:
> I just contect R,and still learn how to write the code.
> I have a problem with argmin sum d(pi,p)/n 
> for example I have 3 points (a1,b1)(a2,b2)(a3,b3) ,then I want to find
> p(x,y) make sure that 
> (sqrt((a1-x)^2+(b1-y)^2)+sqrt((a2-x)^2+(b2-y)^2)+sqrt((a3-x)^2+(b3-y)^2))/3
> is the minimum.

The following code solves the example as i understand it.

  # rows of matrix "a" are three points in the plane
  a <- rbind(
  c(1, 1),
  c(2.3, 1),
  c(3, 3))

  d <- function(x, a) mean(sqrt(rowSums((a - rep(x, each=nrow(a)))^2)))

  xinit <- colMeans(a)
  x <- optim(xinit, d, a=a)$par
  points(rbind(x), col=2)

Is this, what you mean?

Function optim() has further parameters, which influence efficiency
and accuracy, and there are also other optimization functions.

Petr Savicky.

More information about the R-help mailing list