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

问题描述 投票:1回答:1

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次,因此在循环或函数中写入时需要帮助。

r function loops matrix
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.