我正在尝试解决一组方程来确定遍历马尔可夫矩阵的平稳分布。
即,矩阵为
P=[0 0 0 0.5 0 0.5;
0.1 0.1 0 0.4 0 0.4;
0 0.2 0.2 0.3 0 0.3;
0 0 0.3 0.5 0 0.2;
0 0 0 0.4 0.6 0;
0 0 0 0 0.4 0.6];
方程组是来自以下定理的方程组
如何将上面的方程转换为有效的 Matlab 语法?
我正在尝试解决一组方程来确定遍历马尔可夫矩阵的平稳分布。
即,矩阵为
P=[0 0 0 0.5 0 0.5;
0.1 0.1 0 0.4 0 0.4;
0 0.2 0.2 0.3 0 0.3;
0 0 0.3 0.5 0 0.2;
0 0 0 0.4 0.6 0;
0 0 0 0 0.4 0.6];
方程组是来自以下定理的方程组
如何将上面的方程转换为有效的 Matlab 语法?
平稳分布由特征值为 1 的左特征向量给出。
>> [V D] = eig( P.' ); %// note the transpose .' - we are looking for the **left** EV
>> st = V(:,1).'; %//' the stationary distribution
st =
0.0051 0.0509 0.2291 0.6110 0.5346 0.5346
>> D(1)
1.0000
这与@Shai 的回答不同。
另一种方法是求解稳态的 Pi*P = Pi 方程,并忽略 pi_j 的总和必须为 1 的要求(目前)。
然后我们知道,如果没有“总和为 1”的要求,Pi 没有唯一的解决方案。Pi 必须在 (transpose(P) - I) 的零空间中。MATLAB 擅长这一点。之后的规范化给出了所需的结果(正如@LuisMendo 在评论中指出的那样)。
P=[0 0 0 0.5 0 0.5;
0.1 0.1 0 0.4 0 0.4;
0 0.2 0.2 0.3 0 0.3;
0 0 0.3 0.5 0 0.2;
0 0 0 0.4 0.6 0;
0 0 0 0 0.4 0.6];
I = eye(size(P));
Y = null(P'-I)
PI = Y./(sum(Y))
这很容易检查。
>> PI(:)' % Force into row vector
ans =
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
与 25 步转换矩阵进行比较。
P5 = P*P*P*P*P;
P25 = P5*P5*P5*P5*P5;
>>P25 =
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720