优化矩阵中的所有值

时间:2016-11-22 19:36:03

标签: r matrix optimization

我试图编写代码以基于优化有效地解决矩阵中的所有值。我试图找到最小化等式的x值:

(x - (1 / ((1 / x) - sqrt(1 / x))))^2

我写了一些代码来完成这项任务,但它并不漂亮(也不快)。

mSS <- function(x)
{
   #Sum of squares for X and the transformation
  (x - (1 / ((1 / test_mat[rows, cols]) - sqrt(1 / x))))^2  
}

n = 151
m = 50000
test_mat  = matrix(rnorm(n * m, mean = 0, sd = 1), n, m)
trans_mat = matrix(data = NA, n, m)

#Go through each row/col position in array, find value that minimizes mSS function
for (cols in 1:ncol(test_mat)) {
  for (rows in 1:nrow(test_mat)) {
    trans_mat[rows, cols] = optimize(mSS, c(0, 3))$minimum
  }
}

我精神上陷入困境,试图找出最好的办法让它变得更快。我在想也许使用一些自定义功能的应用可能是路线,但我很难找到一个可行的解决方案。任何指向正确的方向将不胜感激。

1 个答案:

答案 0 :(得分:2)

试试这个:

mSS<-function(x, a)
{
  #Sum of squares for X and the transformation
  (x-(1/((1/a)-sqrt(1/x))))^2  
}
y <- as.numeric(test_mat)
ty <- sapply(y, function(x) optimize(mSS,c(0,3),a=x)$minimum)
trans_mat <- matrix(ty, nrow=nrow(test_mat))