如何计算一组不同的矩阵和矩阵之间的差异

时间:2019-03-06 15:40:49

标签: r for-loop matrix

我已经获得了以下代码

P <- matrix(c(0.8,0.2,0.5,0.5),2,2,byrow=TRUE)
ev <- eigen(P)
rvec <- ev$vectors
lvec <- ginv(rvec)
pi_eig <-lvec[1,]/sum(lvec[1,])
powers <- 0:20
upowers <- lapply(powers, function(k) P %^% k)
A <- for (i in 1:20) {upowers[i]-pi_eig}

我想根据P的不同幂减去P的平稳分布来计算不同的A,如图所示。

enter image description here

最后一个代码是错误的,我不知道如何解决此问题。

1 个答案:

答案 0 :(得分:0)

以下是计算A^k的解决方案:

假设您已经有了矩阵PP_infty,我将其称为Q。然后,您可以执行以下操作

# Data
set.seed(123)
P <- matrix(runif(9), 3L, 3L)
Q <- matrix(runif(9), 3L, 3L)
# Computes P^k (matrix multiplication, not R's P^k!)
matMultK <- function (k) {
  txt <- paste("P", paste(rep("%*% P", k), collapse = " "))
  eval(expr = parse(text = txt))
}
# Compute the results
lapply(1:3, function (k) matMultK(k) - Q)

函数matMultK将计算P^k的矩阵幂P 不是 R的版本(在R P^k中是按元素进行的) 。请注意,通过一些小的修改,您还可以将P作为参数。

最后,使用lapply是计算序列A^k的便捷方法。同样,这里有很多选择。

相关问题