2013-06-02 16 views
0

離散型馬爾可夫鏈的問題,我有以下幾點:DTMC馬爾可夫鏈 - 如何讓靜止矢量

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倍將結果乘以初始向量?

我被告知,該計算是很簡單,但我只是不知道該怎麼辦,甚至讀了一些書後。

當然歡迎解釋,但最重要的是,我希望對這個具體案例有確切的答案。

感謝您的幫助!

拉 - 羅克

回答

0

您可以通過使用該短碼上倍頻解決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, Albert。