Моделируйте обходы состояния Цепи Маркова
X = simulate(mc,numSteps)
X = simulate(mc,numSteps,'X0',x0)
Рассмотрите эту теоретическую, правильно-стохастическую матрицу перехода стохастического процесса.
Создайте Цепь Маркова, которая характеризуется матрицей 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);
Моделируйте случайный обход с 20 шагами, который начинает со случайного состояния.
rng(1); % For reproducibility
numSteps = 20;
X = simulate(mc,numSteps)
X = 21×1
3
7
1
3
6
1
3
7
2
5
⋮
X
21 1 матрица. Строки соответствуют шагам в случайном обходе. Поскольку X(1)
является 3
, случайный обход начинается в состоянии 3.
Визуализируйте случайный обход.
figure; simplot(mc,X);
Создайте Цепь Маркова с четырьмя состояниями из случайным образом сгенерированной матрицы перехода, содержащей восемь неосуществимых переходов.
rng('default'); % For reproducibility mc = mcmix(4,'Zeros',8);
mc
является объектом dtmc
.
Постройте диграф Цепи Маркова.
figure; graphplot(mc);
4
состояния является абсорбирующим состоянием.
Запустите три симуляции с 10 шагами для каждого состояния.
x0 = 3*ones(1,mc.NumStates);
numSteps = 10;
X = simulate(mc,numSteps,'X0',x0);
X
11 12 матрица. Строки соответствуют шагам в случайном обходе. Столбцы 1-3 являются симуляциями, которые запускаются в состоянии 1; столбец 4-6 является симуляциями, которые запускаются в состоянии 2; столбцы 7-9 являются симуляциями, которые запускаются в состоянии 3; и столбцы 10-12 являются симуляциями, которые запускаются в состоянии 4.
В течение каждого раза постройте состояния пропорций, которые посещают по всем симуляциям.
figure; simplot(mc,X)
mc
— Дискретная цепь Марковаdtmc
Дискретная цепь Маркова с состояниями NumStates
и матрицей перехода P
, заданный как объект dtmc
.
numSteps
— Количество шагов дискретного времениНомер дискретного времени продвигается в каждую симуляцию, заданную как положительное целое число.
Типы данных: double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'X0',[1 0 2]
задает симуляцию три раза, первая симуляция запускается в состоянии 1, и итоговые два запускаются в состоянии 3.x0
Начальные состояния симуляцийНачальные состояния симуляций, заданных как пара, разделенная запятой, состоящая из 'X0'
и вектор неотрицательных целых чисел длины NumStates
. X0
обеспечивает счета для количества симуляций, чтобы начаться в каждом состоянии. Общим количеством симуляций (numSims
) является sum(X0)
.
Значением по умолчанию является одна симуляция, начинающаяся со случайного начального состояния.
Пример: 'X0',[10 10 0 5]
Типы данных: double
X
Индексы состоянийИндексы состояний посещают во время симуляций, возвращенных как (1 + numSteps)
-by-numSims
числовая матрица положительных целых чисел. Первая строка содержит начальные состояния. Столбцы, по порядку, являются всеми симуляциями, начинающимися в первом состоянии, затем все симуляции, начинающиеся во втором состоянии, и так далее.
Чтобы запустить симуляции n
с k
состояния, используйте:
X0 = zeros(1,NumStates); X0(k) = n;
Чтобы визуализировать данные, созданные simulate
, используйте simplot
.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.