Какой октавный эквивалент eig (X, 'nobalance')

Я пытаюсь найти равновесное распределение цепи Маркова, что означает нахождение собственных значений матрицы перехода, представляющей ее, однако функция eig автоматически нормализует собственные векторы, которые она возвращает, в MatLab есть флаг, который вы можете передать функции чтобы остановить это поведение

eig (X, 'нобаланс')

Где X - матрица. См. http://www.mathworks.com/help/techdoc/ref/eig.html. Однако, когда я пробую это в октаве, я просто получаю сообщение об ошибке:

ошибка: eig: неверный тип аргумента `sq_string '

Есть ли другая функция, которую я должен вызвать?

Ваше здоровье


person Alex jg    schedule 13.11.2010    source источник


Ответы (1)


Если ваша цель - вычислить равновесное распределение цепи Маркова, взгляните на mcStatDist из набора инструментов PMTK3. Он показывает четыре различных способа вычисления результата. Пример:

TR = rand(3,3);                          %# random transition matrix
TR = bsxfun(@rdivide, TR, sum(TR,2));    %# normalize so that rows sum to one

[V,D] = eig(TR');                        %'# eigen-decomposition
EQ = V(:,1) ./ sum(V(:,1));              %# state equilibrium distribution

Как отмечено в комментариях к связанному коду, этот метод может быть численно нестабильным в некоторых случаях, поэтому вы можете рассмотреть один из других вариантов ...

person Amro    schedule 13.11.2010