Вот решение для вычисления A^k
:
Предположим, у вас уже есть матрицы P
и P_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
. Здесь снова есть много альтернатив.