Определите Цепь Маркова asymptotics
Рассмотрите эту теоретическую, правильно-стохастическую матрицу перехода стохастического процесса.
Создайте Цепь Маркова, которая характеризуется матрицей P перехода.
P = [ 0 0 1/2 1/4 1/4 0 0 ; 0 0 1/3 0 2/3 0 0 ; 0 0 0 0 0 1/3 2/3; 0 0 0 0 0 1/2 1/2; 0 0 0 0 0 3/4 1/4; 1/2 1/2 0 0 0 0 0 ; 1/4 3/4 0 0 0 0 0 ]; mc = dtmc(P);
Постройте ориентированного графа Цепи Маркова. Укажите на вероятность перехода при помощи цветов обводки.
figure;
graphplot(mc,'ColorEdges',true);
Определите стационарное распределение Цепи Маркова.
xFix = asymptotics(mc)
xFix = 1×7
0.1300 0.2034 0.1328 0.0325 0.1681 0.1866 0.1468
Поскольку xFix
вектор-строка, это - уникальное стационарное распределение mc
.
Создайте пять матриц переходов эмпирических количеств путем генерации матрицы диагонали блока, состоявшей из дискретной универсальной формы, чертит.
m = 100; % Maximal count rng(1); % For reproducibility P = blkdiag(randi(100,2) + 1,randi(100,3) + 1)
P = 5×5
43 2 0 0 0
74 32 0 0 0
0 0 16 36 43
0 0 11 41 70
0 0 20 55 22
Создайте и постройте диграф Цепи Маркова, которая характеризуется матрицей P перехода.
mc = dtmc(P); figure; graphplot(mc)
Определите стационарное распределение и смешивание времени Цепи Маркова.
[xFix,tMix] = asymptotics(mc)
xFix = 2×5
0.9401 0.0599 0 0 0
0 0 0.1497 0.4378 0.4125
tMix = 0.8558
Строки xFix
соответствуйте стационарным распределениям двух независимых текущих классов mc
.
Создайте отдельные Цепи Маркова, представляющие текущие подцепи mc
.
mc1 = subchain(mc,1); mc2 = subchain(mc,3);
mc1
и mc2
dtmc
объекты. mc1
текущий класс, содержащий 1
состояния, и
mc2
текущий класс, содержащий 3
состояния.
Сравните смесительные времена подцепей.
[x1,t1] = asymptotics(mc1)
x1 = 1×2
0.9401 0.0599
t1 = 0.7369
[x2,t2] = asymptotics(mc2)
x2 = 1×3
0.1497 0.4378 0.4125
t2 = 0.8558
mc1
приближается к его стационарному распределению более быстро, чем mc2
.
Создайте Цепь Маркова "гантели", содержащую 10 состояний в каждом "весе" и три состояния в "панели".
Задайте случайные вероятности перехода между состояниями в каждом весе.
Если Цепь Маркова достигает состояния в весе, который является самым близким к панели, то задайте высокую вероятность перехода к панели.
Задайте универсальные переходы между состояниями в панели.
rng(1); % For reproducibility w = 10; % Dumbbell weights DBar = [0 1 0; 1 0 1; 0 1 0]; % Dumbbell bar DB = blkdiag(rand(w),DBar,rand(w)); % Transition matrix % Connect dumbbell weights and bar DB(w,w+1) = 1; DB(w+1,w) = 1; DB(w+3,w+4) = 1; DB(w+4,w+3) = 1; mc = dtmc(DB);
Визуализируйте матрицу перехода использование тепловой карты.
figure;
imagesc(mc.P);
colormap(jet);
axis square;
colorbar;
Постройте ориентированного графа Цепи Маркова. Подавите метки узла.
figure; h = graphplot(mc); h.NodeLabel = {};
Постройте собственные значения цепи гантели.
figure; eigplot(mc);
Тонкий, красный диск в графике показывает спектральный разрыв (различие между двумя самыми большими модулями собственного значения). Спектральный разрыв определяет смесительное время Цепи Маркова. Большие разрывы указывают на более быстрое смешивание, тогда как тонкие разрывы указывают на более медленное смешивание. В этом случае спектральный разрыв является тонким, указывая долгое время смешивания.
Оцените смесительное время цепи гантели и определите, является ли цепь эргодической.
[~,tMix] = asymptotics(mc)
tMix = 85.3258
tf = isergodic(mc)
tf = logical
1
В среднем время это берет для общего расстояния изменения между любым начальным распределением и стационарным распределением, чтобы затухнуть фактором приблизительно 85 шагов.
mc
— Дискретная цепь Марковаdtmc
объектДискретная цепь Маркова с NumStates
состояния и матрица перехода P
, заданный как dtmc
объект. P
должен быть полностью задан (никакой NaN
записи).
xFix
— Стационарное распределениеСтационарное распределение, с xFix*P
= xFix
, возвращенный как неотрицательная числовая матрица с NumStates
столбцы. Количество строк xFix
количество независимых текущих классов в mc
.
Для unichains распределение уникально, и xFix
1
- NumStates
вектор.
В противном случае, каждая строка xFix
представляет отличное стационарное распределение в mc
.
tMix
— Смешивание времениСмешивание времени, возвращенного в виде положительного числа.
Если μ, второй по величине модуль собственного значения (SLEM) P
, существует и является ненулевым, затем предполагаемое время смешивания .
Если P
неотрицательная стохастическая матрица, затем Цепь Маркова mc
это характеризует, имеет левый собственный вектор xFix
с собственным значением 1
. Теорема Крыльца-Frobenius [2] подразумевает это если mc
unichain (цепь с одним текущим классом передачи), затем xFix
уникально. Для приводимых цепей с несколькими текущими классами, собственное значение 1
имеет более высокую кратность и xFix
является групповым. Если цепь является периодической, xFix
является стационарным, но не ограничивает, потому что произвольные начальные распределения не сходятся к нему. xFix
и уникально и ограничивает для эргодических цепей только. Смотрите classify
.
Для эргодических цепей, tMix
характеристическое время для любого начального распределения, чтобы сходиться к xFix
. А именно, это - время для общего расстояния изменения между начальным распределением и xFix
затухать фактором e
= exp(1)
. Смесительные времена являются мерой относительной возможности соединения структур перехода в различных цепях.
[1] Gallager, R.G. Стохастические процессы: теория для приложений. Кембридж, Великобритания: Издательство Кембриджского университета, 2013.
[2] Рог, R. и К. Р. Джонсон. Анализ матрицы. Кембридж, Великобритания: Издательство Кембриджского университета, 1985.
[3] Seneta, E. Неотрицательные матрицы и цепи Маркова. Нью-Йорк, Нью-Йорк: Springer-Verlag, 1981.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.