我有一个矩阵:
P <- matrix(c(0, 0.5, 0, 0, 0.5, 0,
0.5, 0, 0.5, 0, 0, 0,
0, 0.5, 0, 0.5, 0, 0,
0, 0, 0.5, 0, 0, 0.5,
0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 1),
nrow = 6, ncol = 6, byrow = TRUE)
任何人都可以帮我找到代码,找到P^n = P^n+1
的n,精确到4位小数。
这里的代码是我如何尝试这个问题。虽然,我不太擅长编码所以最后一部分是不正确的。有什么东西我可以添加到它,所以它有效吗?或者还有另一种解决方法吗?如果是这样,请解释您编写的代码。
mpow <- function(P, n) {
if (n == 0) {
return(diag(nrow(P)))}
else if (n == 1){
return(P)
} else {
return(P %*% mpow(P, n - 1))
}
}
matrices_equal <- function(A, B, d = 4) {
A_new <- trunc(A * 10^d)
B_new <-trunc(B * 10^d)
if (all(A_new == B_new)) {
return(TRUE) }
else {
return(FALSE) } }
when_converged <- function(P)
for (n in 1:50) {{
A <- mpow(P, n)
B <- mpow(P, n+1)
}
{ if matrices_equal(A, B, 4)
return(n)
}}
谢谢。