Как решить марковскую матрицу скоростей перехода? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть некоторые переменные для поиска, такие как x = [1x16 (x1, x2, x3, .... x16 переменные)] с условием, что x1 + x2 + x3 + .... x16 = 1.У меня также 16x16 матрица Q = [16x16 (реальные значения)].

Мне нужно решить уравнение 'x * Q = x' , как показано здесь .Как я могу решить это в Matlab или на любом другом языке легко?

1 Ответ

0 голосов
/ 15 ноября 2018

В результате транспонирования ваше уравнение эквивалентно Q'y = 1y, где y: = x '(вектор столбца), где Q' - транспонирование Q (нотация matlab ...), что означает, что y является ассоциированным собственным вектором с собственным значением 1 для матрицы Q '. Такой собственный вектор всегда существует для марковской матрицы. Пусть s будет суммой записей вектора столбца y. Возможны два случая:

  • либо s не равно 0; тогда достаточно разделить все координаты y на s: мы получим вектор, который все еще является собственным вектором, с суммой координат, равной 1.

  • или s = 0, и ваша проблема не решена.

Вот программа Matlab, которая выполняет работу для матрицы 3 x 3:

M=[.2 .3 .5
   .1 .8 .1
   .4 .4 .2]
[P,D]=eig(M')
Y=P(:,3)
M'*Y - Y,% should be 0
Z=Y/sum(Y),%the sum of Z's coordinates is 1
M'*Z-Z,% should be 0
...