В этом примере показано, как вывести символьное стационарное распределение тривиальной Цепи Маркова путем вычисления ее собственного разложения.
Стационарное распределение представляет ограничение, независимое от времени, распределение состояний для процесса Маркова как количество увеличения шагов или переходов.
Задайте (положительные) вероятности перехода между состояниями 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))
до display.
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
}, которые не связываются друг с другом и являются текущими.