2

マルコフ連鎖の平衡分布を見つけようとしています。つまり、それを表す遷移行列の固有値を見つけることを意味しますが、eig関数は、返す固有ベクトルを自動的に正規化します。MatLabには、関数に渡すことができるフラグがあります。この動作を停止するには

eig(X、'nobalance')

ここで、Xは行列です。http://www.mathworks.com/help/techdoc/ref/eig.htmlを参照してください。ただし、これをオクターブで試してみると、エラーが発生します。

エラー:eig:間違った型引数 `sq_string '

他に呼び出すべき関数はありますか?

乾杯

4

1 に答える 1

1

マルコフ連鎖の平衡分布を計算することが目標である場合は、 PMTK3ツールボックスからのmcStatDist関数の実装を確認してください。結果を計算する4つの異なる方法を示しています。例:

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

リンクされたコードのコメントに記載されているように、このメソッドは場合によっては数値的に不安定になる可能性があるため、他のオプションの1つを検討することをお勧めします...

于 2010-11-13T22:11:53.077 に答える