我找不到解决问题的方法。我有矩阵A.
A<-matrix(c(1,0,0,1,1,0,0,1,1),3,3)
我想要计算A ^ 13,不是elelement元素,而是行有列。 A ^ 2
的示例A%*%A
我可以使用循环,但我的问题是:是否有简单的方法或函数来计算它?
我对A ^ 13的结果必须是:
[1 13 78]
[0 1 13]
[0 0 1]
答案 0 :(得分:3)
也许您正在寻找Reduce
:
Reduce("%*%", replicate(13, A, FALSE))
# [,1] [,2] [,3]
# [1,] 1 13 78
# [2,] 0 1 13
# [3,] 0 0 1
答案 1 :(得分:2)
您可以使用expm
library(expm)
A%^%13
# [,1] [,2] [,3]
#[1,] 1 13 78
#[2,] 0 1 13
#[3,] 0 0 1
在较小的矩阵上
set.seed(42)
A <- matrix(sample(0:1, 100*100, replace=TRUE), 100, 100)
f1 <- function() Reduce("%*%", replicate(200, A, FALSE))
f2 <- function() A%^%200
library(microbenchmark)
microbenchmark(f1(), f2(), unit="relative", times=25L)
# Unit: relative
#expr min lq median uq max neval
#f1() 237.8381 237.6059 235.6788 239.053 225.3443 25
#f2() 1.0000 1.0000 1.0000 1.000 1.0000 25