【发布时间】:2016-03-29 05:45:32
【问题描述】:
我有以下sn-p来计算转移矩阵的稳态:
import numpy as np
import scipy.linalg as la
if __name__ == "__main__":
P = np.array([[0.5, 0.2 , 0.3, 0],
[0.5, 0 , 0.1 , 0.4],
[0.6, 0.1, 0, 0.3],
[0.5, 0.2, 0.3, 0]])
# Sanity check:
assert np.sum(P, axis=1).all() == 1.0
print la.eig(P,left=True)[1]
然后打印出来:
[[ -8.78275813e-01 -7.07106781e-01 -5.00000000e-01 1.47441956e-01]
[ -2.51874610e-01 -1.58270385e-16 -5.00000000e-01 -2.94883912e-01]
[ -3.50434239e-01 -2.60486675e-16 5.00000000e-01 -5.89767825e-01]
[ -2.05880116e-01 7.07106781e-01 5.00000000e-01 7.37209781e-01]]
如果我理解正确的话,第一列确实是稳定状态。对我来说,处于一种状态的概率为负是没有意义的。我错过了什么?
【问题讨论】:
-
不管你的例子是否正确,我觉得有必要注意特征向量的任何非零标量倍数都是特征向量。因此,这也包括 v = -n * w 形式的向量,n in R \ {0} 和 w 一个特征向量。
-
哈哈你是对的,我可以乘以 -1 并将它们归一化(不是在矢量意义上),因为改变方向仍然满足特征值 P -KI = 0 !非常感谢我有点傻...很好的线性代数复习...
-
如果 N. Wouda 的回答解决了您的问题,那么您应该点击旁边的勾号接受它,而不是在问题标题中写下“[已解决]”。
标签: python numpy linear-algebra probability markov-chains