当我感到无聊时,我检查了重新定义MARKOV链的转移矩阵的平稳定理。所以我定义了一个简单的例子:
>> T=[0.5 0.5 0; 0.5 0 0.5; 0.2 0.4 0.4];
静止定理说,如果你计算过渡矩阵到一个非常高的幂,那么你将得到静止矩阵,它的主要成分在行。所以试试吧:
>> T^1000
ans =
0.4211 0.3158 0.2632
0.4211 0.3158 0.2632
0.4211 0.3158 0.2632
到目前为止一切都很好。让我们继续:
>> T^1000000000
ans =
0.4211 0.3158 0.2632
0.4211 0.3158 0.2632
0.4211 0.3158 0.2632
好的......好的。我们再多花一点零:
>> T^10000000000
ans =
0.4210 0.3158 0.2632
0.4210 0.3158 0.2632
0.4210 0.3158 0.2632
???有些事情发生了变化......让我们尝试更多:
>> T^10000000000000000
ans =
1.0e-03 *
0.5387 0.4040 0.3367
0.5387 0.4040 0.3367
0.5387 0.4040 0.3367
这里发生了什么,甚至行数总和不再是1
>> T^10000000000000000000
ans =
0 0 0
0 0 0
0 0 0
Aaaand已经不见了。
我用R2011a尝试了这个。 我猜在背景中有一些奇特的算法,它近似于矩阵的这种高功率。但这怎么可能发生呢?哪种算法能够在这样的计算中快速执行,并且在这种极端情况下会出现这种错误?
答案 0 :(得分:1)
可以使用Eigen Decomposition以便可以达到这样的速度
实际计算负荷正在进行这种分解,然后通过计算本征值的功率,可以容易地计算功率。它还说明了为什么将计算分成像2这样的较小权力需要花费更多时间的原因。
答案 1 :(得分:1)
T=vpa([0.5 0.5 0; 0.5 0 0.5; 0.2 0.4 0.4],100);
从T^10000000000000000000
获得正确的输出:
[0.42105263157894736842099364708441, 0.31578947368421052631574523531331, 0.26315789473684210526312102942776]
[0.42105263157894736842099364708441, 0.31578947368421052631574523531331, 0.26315789473684210526312102942776]
[0.42105263157894736842099364708441, 0.31578947368421052631574523531331, 0.26315789473684210526312102942776]