矩阵乘法用于n个月的循环

时间:2017-12-12 05:27:45

标签: r loops matrix

我有链式格式的矩阵乘法问题。 我只有输入矩阵A,将保存矩阵B< - Matrix A. 需要以下面的方式相乘

A * B = C
B * C = D
C * D = E
D * E = F

这个乘法链直到18个月。 我尝试了以下代码:但无法选择我应该选择哪个循环。

矩阵A:

2   3
4   2

代码:

a = matrix( c(2, 3, 4, 2), nrow=2, ncol=2, byrow = TRUE) 
a

b <- a
b

c = b %*% a
c

d <- c %*% b
d

e <- d %*% c
e

我手动进行这种乘法,直到我想以链循环方式进行18次。

预期产出:

  

      [,1] [,2]
[1,]    2    3
[2,]    4    2
  

B'/ P>

      [,1] [,2]
[1,]    2    3
[2,]    4    2
  

c = b%*%a

     

C

      [,1] [,2]
[1,]   16   12
[2,]   16   16
  

d&lt; - c%*%b

     

d

     [,1] [,2]
[1,]   80   72
[2,]   96   80
  

e&lt; - d%*%c

     

ë

     [,1] [,2]
[1,] 2432 2112
[2,] 2816 2432

所以这应该重复18次。请帮忙。提前致谢。

2 个答案:

答案 0 :(得分:1)

for循环将有助于

matA <- matrix(c(2,4,3,2), ncol=2,nrow=2)
output_var<- array(dim=c(2,2,18))
output_var[,,c(1:2)] <- matA
for (i in c(3:18))
{
  output_var[,,i] <- output_var[,,(i-1)]%*% output_var[,,(i-2)]
}
output_var

答案 1 :(得分:1)

乘法从第12个循环开始导致Inf,因为该值变得太大而无法存储在R中。

以下代码会将值存储在matmull列表中。它的前2个元素是原始值A和B.从第3个元素开始,它具有循环中的乘法结果

A <- matrix(c(2L, 4L, 3L, 2L), 2, 2)
matmull <- rep(list(A), 20)
for(i in 1:18){
 matmull[[i+2]] <- matmull[[i]]%*%matmull[[i+1]]
}