给定以下马尔可夫矩阵:
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)
在这里B[0] = [0.6, 0.4]
。到现在为止还挺好。根据维基百科:
平稳概率向量被定义为在转移矩阵的应用下不改变的向量;也就是说,它被定义为概率矩阵的左特征向量,与特征值 1 相关联:
所以我应该能够计算特征值为 1 的左特征向量A
,这也应该给我平稳概率。Scipy 的实现eig
有一个 left 关键字:
scipy.linalg.eig(A,left=True,right=False)
给出:
(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]
使用特征值分解获得?