给定以下马尔可夫矩阵:
import numpy, scipy.linalg
A = numpy.array([[0.9, 0.1],[0.15, 0.85]])
平稳概率存在且等于[.6, .4]
。通过取矩阵的大幂可以很容易地验证这一点:
B = A.copy()
for _ in xrange(10): B = numpy.dot(B,B)
Here B[0] = [0.6, 0.4]
。到目前为止,一切都很好。根据维基百科 http://en.wikipedia.org/wiki/Stochastic_matrix:
平稳概率向量被定义为在转移矩阵的应用下不改变的向量;也就是说,它被定义为概率矩阵的左特征向量,与特征值 1 相关:
所以我应该能够计算出left的特征向量A
特征值为 1,这也应该给我平稳概率。Scipy的实现eig http://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.eig.html#scipy.linalg.eig有一个 left 关键字:
scipy.linalg.eig(A,left=True,right=False)
Gives:
(array([ 1.00+0.j, 0.75+0.j]), array([[ 0.83205029, -0.70710678],
[ 0.5547002 , 0.70710678]]))
这表明主导左特征向量是:[0.83205029, 0.5547002]
。我读错了吗?我如何获得[0.6, 0.4]
使用特征值分解?