使用循环打印中间乘法
printing intermediate multiplication using loop
我有数据框 'df',它有 8*8 行和列。
这里我直接得到第5次乘法的答案,我想要所有中间乘法的答案。
而且我还想把代码循环15次,所以会有15个中间乘法输出。
Code:
p <- eigen(df)$vector
d <- eigen(df)$values
n <- 5
p %*% diag(d^n) %*% solve(p)
预期输出将:如果我乘以 n = 15 次,那么每次中间乘法应该有 15 个矩阵。
请帮忙。
假设你的意思是幂(X^n)可以做到以下几点:
mat <- matrix(1:9, nrow=3)
n <- 5
pows <- list()
pows[[1]] <- mat
for (i in 2:n) {
pows[[i]] <- pows[[i - 1]] %*% pows[[1]]
}
p <- eigen(mat)$vector
d <- eigen(mat)$values
res <- p %*% diag(d^n) %*% solve(p)
all(res - pows[[n]] < 1e-6)
也可以使用:
library(expm)
mat %^% n
我有数据框 'df',它有 8*8 行和列。
这里我直接得到第5次乘法的答案,我想要所有中间乘法的答案。
而且我还想把代码循环15次,所以会有15个中间乘法输出。
Code:
p <- eigen(df)$vector
d <- eigen(df)$values
n <- 5
p %*% diag(d^n) %*% solve(p)
预期输出将:如果我乘以 n = 15 次,那么每次中间乘法应该有 15 个矩阵。
请帮忙。
假设你的意思是幂(X^n)可以做到以下几点:
mat <- matrix(1:9, nrow=3)
n <- 5
pows <- list()
pows[[1]] <- mat
for (i in 2:n) {
pows[[i]] <- pows[[i - 1]] %*% pows[[1]]
}
p <- eigen(mat)$vector
d <- eigen(mat)$values
res <- p %*% diag(d^n) %*% solve(p)
all(res - pows[[n]] < 1e-6)
也可以使用:
library(expm)
mat %^% n