В этом примере показано, как вывести символическое стационарное распределение тривиальной цепи Маркова путем вычисления ее собственного разложения.
Стационарное распределение представляет собой ограничивающее, не зависящее от времени, распределение состояний для марковского процесса по мере увеличения числа шагов или переходов.

Определение (положительных) вероятностей перехода между состояниями 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 }, которые не общаются друг с другом и являются повторяющимися.