0

離散時間マルコフ連鎖問題の場合、次のものがあります。

1) 遷移マトリックス:

0.6  0.4  0.0  0.0
0.0  0.4  0.6  0.0
0.0  0.0  0.8  0.2
1.0  0.0  0.0  0.0

2) 初期確率ベクトル:

1.0  0.0  0.0  0.0

そこで、静止ベクトルを取得するために次の SciLab コードを作成しました。

P = [0.6, 0.4, 0, 0; 0, 0.4, 0.6, 0; 0, 0, 0.8, 0.2; 1,0,0,0]
PI = [1,0,0,0]
R=PI*P
count=0;
for i = 1 : 35  // stationary vector is obtained at iteration 33, but i went futher to be sure
    R=R*P;
    count=count+1
    disp("count = "+string(count))
end

PI // shows initial probability vector
P // shows transition matrix
R // shows the resulting stationary vector

反復番号 の後33、次の静止ベクトルが得られます。

0.2459016    0.1639344    0.4918033    0.0983607

遷移行列を 33 回掛けてから結果を初期ベクトルで掛けずに上記の静止ベクトルを取得するには、どのような手動計算を実行する必要がありますか?

計算はとても簡単だと言われましたが、何冊か本を読んでも何をすべきか分かりませんでした。

もちろん、説明は大歓迎ですが、何よりも、この特定のケースに対する正確な答えが欲しいです。

4

1 に答える 1

0

次の短いコードを使用して、Octave で DTMC を解決できます。

P = [
  0.6, 0.4,   0,   0;
    0, 0.4, 0.6,   0;
    0,   0, 0.8, 0.2;
    1,   0,   0,   0
  ]

pis = [P' - eye(size(P)); ones(1, length(P))] \ [zeros(length(P), 1); 1]

または、このコードで SAGE を使用します。

P = matrix(RR, 4, [
  [0.6, 0.4,   0,   0],
  [  0, 0.4, 0.6,   0],
  [  0,   0, 0.8, 0.2],
  [  1,   0,   0,   0]
  ])

I = matrix(4, 4, 1); # I; I.parent()
s0, s1, s2, s3 = var('s0, s1, s2, s3')
eqs = vector((s0, s1, s2, s3)) * (P-I); eqs[0]; eqs[1]; eqs[2]; eqs[3]
pis = solve([
  eqs[0] == 0,
  eqs[1] == 0,
  eqs[2] == 0,
  eqs[3] == 0,
  s0+s1+s2+s3==1], s0, s1, s2, s3)

両方で、定常状態確率ベクトルの結果は次のようになります。

pis =
   0.245902
   0.163934
   0.491803
   0.098361

お役に立てば幸いです。

WBR、アルバート。

于 2014-05-25T05:22:57.360 に答える