将矩阵与参考矩阵相乘n次

时间:2017-12-21 08:37:54

标签: r function loops matrix

x是所有迭代的参考矩阵。共有2个矩阵。

matrix A
1   4   1   4
4   2   4   2
2   3   2   3
3   3   3   3

matrix B
1   4   1   4
4   2   4   2
2   3   2   3
3   3   3   3


matrix x
4   1   4   3
2   4   2   2
3   2   3   5
3   5   1   1

这里矩阵A和B是相同的。我们需要在下面的矩阵中进行矩阵乘法:

C <- B %*% x
D <- C %*% x
E <- D %*% x 
F <- E %*% x 

x是所有迭代的参考矩阵。 这个乘法完成了15次,因此在循环或函数中写入时需要帮助。

1 个答案:

答案 0 :(得分:2)

如果您只想要最后一个矩阵,我们可以使用递归函数,如Sotos所示:

A <- matrix(runif(9), 3) 
X <- matrix(runif(9), 3) 

repmult <- function(A,x,reps)
{
  if(reps==0){
    return(A)
  }
  else
  {
    repmult(A%*%x,x,reps-1)
  }
}

repmult(A,X,15)

如果您希望列表中的所有中间结果,我们可以从this SO question上的答案修改该函数(尽管您可能想要更改其名称):

Mpow <- function(A,x, n) {
  L <- list(A%*%x)
  if (n==1) return(L)
  P <- A
  for (i in 1:n) L[[i]] <- (P <- P %*% x)
  return(L)
}

Mpow(A,X,3)