Этот пример показывает, как вывести символическое стационарное распределение тривиальной марковской цепи путем вычисления ее собственного разложения.
Стационарное распределение представляет ограничение, независимое от времени, распределение состояний для марковского процесса, когда количество шагов или переходов увеличивается.
Задайте (положительные) вероятности перехода между состояниями A
через F
как показано на вышеописанном изображении.
syms a b c d e f cCA cCB positive;
Добавьте дополнительные допущения, ограничивающие вероятности перехода. Это будет полезно при выборе желаемых стационарных распределений позже.
assumeAlso([a, b, c, e, f, cCA, cCB] < 1 & d == 1);
Задайте матрицу переходов. Состояния A
через F
сопоставлены со столбцами и строками 1
через 6
. Обратите внимание на значения в каждой строке до единицы.
P = sym(zeros(6,6)); P(1,1:2) = [a 1-a]; P(2,1:2) = [1-b b]; P(3,1:4) = [cCA cCB c (1-cCA-cCB-c)]; P(4,4) = d; P(5,5:6) = [e 1-e]; P(6,5:6) = [1-f f]; P
P =
Вычислите все возможные аналитические стационарные распределения состояний марковской цепи. Это задача извлечения собственных векторов с соответствующими собственными значениями, которые могут быть равны 1 для некоторого значения вероятностей перехода.
[V,D] = eig(P');
Аналитические собственные векторы
V
V =
Аналитические собственные значения
diag(D)
ans =
Найдите собственные значения, которые в точности равны 1. Если есть какая-либо неоднозначность в определении этого условия для любого собственного значения, остановитесь с ошибкой - так мы уверены, что ниже список индексов надежен, когда этот шаг успешен.
ix = find(isAlways(diag(D) == 1,'Unknown','error')); diag(D(ix,ix))
ans =
Извлеките аналитические стационарные распределения. Собственные векторы нормированы 1-нормой или sum(abs(X))
перед отображением .
for k = ix' V(:,k) = simplify(V(:,k)/norm(V(:,k)),1); end Probability = V(:,ix)
Probability =
Вероятность того, что установившееся состояние A
или B
в первом собственном векторном случае является функцией вероятностей перехода a
и b
. Визуализируйте эту зависимость.
fsurf(Probability(1), [0 1 0 1]); xlabel a ylabel b title('Probability of A');
figure(2); fsurf(Probability(2), [0 1 0 1]); xlabel a ylabel b title('Probability of B');
Стационарные распределения подтверждают следующее (Состояния отзыва A
через F
соответствуют индексам строк 1
через 6
):
Конечные C
не достигается и поэтому является переходной, т.е. третья строка полностью равна нулю.
Остальные состояния образуют три группы, {A ,
B
}, {D
} и {E ,
F
}, которые не взаимодействуют друг с другом и являются повторяющимися.