Это моя задача:Казино игры с матричными различными вероятностями
Питер идет в казино с 1 долларами. С шансом p Питер выигрывает 1 доллар и шанс (1-p) он теряет 1 доллар. Процесс можно рассматривать как цепь марков.
Если Питер доходит до 0 долларов, он уходит домой банкротом, если ему удается достичь 5 долларов, он идет домой счастливым.
Найти вероятность того, что Питер отправится домой с 5 долларами, если p = 30%, 40%, 50%, 60% & 70%. Построить матрицы для каждой вероятности, где первые 4 состояния являются переходным классом (1- 4 доллара), а два последних состояния - это два повторяющихся состояния (0 & 5 долларов).
Мой план в решении его
найти, когда каждый отдельный матрица сходится (Р^п = Р^п + 1) с when_converged.
Затем используйте, что п в MPOW, чтобы увидеть вероятность перехода от 1 доллара до 5 долларов, другими словами, от состояния 1 до 6.
Это мой код:
mpow <- function(P, n) {
if (n == 0) {
return(diag(nrow(P)))
} else if (n == 1) {
return(P)
} else {
return(P %*% mpow(P, n - 1))
}
}
when_converged <- function(P, tol=0.00005) {
n = 1; diff = 1
while (diff > tol) {
A <- mpow(P, n)
B <- mpow(P, n+1)
diff <- max(abs(A - B))
n <- n + 1
}
return(n)
}
P30 <- matrix(c(0, 0.3, 0, 0, 0.7, 0, 0.7, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0, 0.3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)
P40 <- matrix(c(0, 0.4, 0, 0, 0.6, 0, 0.6, 0, 0.4, 0, 0, 0, 0, 0.6, 0, 0.4, 0, 0, 0, 0, 0.6, 0, 0, 0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)
P50 <- 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)
P60 <- matrix(c(0, 0.6, 0, 0, 0.4, 0, 0.6, 0, 0.4, 0, 0, 0, 0, 0.6, 0, 0.4, 0, 0, 0, 0, 0.6, 0, 0, 0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)
P70 <- matrix(c(0, 0.7, 0, 0, 0.3, 0, 0.7, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0, 0.3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)
when_converged(P30, 0.00005)
Из Rstudio Я понимаю, что P30 сходится на 35.
when_converged(P40, 0.00005)
С Rstudio Я понимаю, что P40 сходится на 37.
when_converged(P50, 0.00005)
С Rstudio Я понимаю, что P50 сходится на 47.
when_converged(P60, 0.00005)
С Rstudio Я понимаю, что P60 сходится на 61.
when_converged(P70, 0.00005)
С Rstudio Я понимаю, что P70 является сходится на уровне 79.
mpow(P30, 35)
mpow(P40, 37)
mpow(P50, 47)
mpow(P60, 61)
mpow(P70, 79)
Что мне нужна помощь с
Что я получаю от Rstudio что для MPOW (P60, 61) & MPOW (P70, 79), то вероятность того, чтобы идти домой с 5 долларов становится меньше по сравнению с MPOW (P50, 47) & mpow (P40, 37). Где вероятность выигрыша 1 доллара меньше. Что неправильно. Есть ли что-то, что я делаю неправильно? Попробуйте решить его, используя мой метод & не со всем разным кодом.
Если что-то неясно, спрашивайте. – PeterNiklas
Как я вижу, вероятность остаться в состоянии 0 или 5 должна быть 1. Это то, что называется поглощающим состоянием. Там должны быть только переходы из состояния одного в 0 или 2, и они должны быть взаимодополняющими (т. Е. Суммой к одному). Твои матрицы не похожи на меня. –