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