import numpy as np
P = np.array([[1/2, 1/2, 1/4], [1/4, 0, 1/4], [1/4, 1/2, 1/2]])
P
array([[0.5 , 0.5 , 0.25], [0.25, 0. , 0.25], [0.25, 0.5 , 0.5 ]])
pi = np.random.dirichlet(np.ones(3),size=1).flatten()
pi
array([0.38661374, 0.5182709 , 0.09511536])
遍历定理证明:通过N次迭代,状态分布趋于平稳
epochs = 15
print(0, pi)
for i in range(epochs):
pi = np.dot(P, pi)
print(i, pi)
0 [0.38661374 0.5182709 0.09511536] 0 [0.47622116 0.12043227 0.40334657] 1 [0.39916336 0.21989193 0.38094471] 2 [0.40476382 0.19502702 0.40020916] 3 [0.39994771 0.20124325 0.39880904] 4 [0.40029774 0.19968919 0.40001307] 5 [0.39999673 0.2000777 0.39992557] 6 [0.40001861 0.19998057 0.40000082] 7 [0.3999998 0.20000486 0.39999535] 8 [0.40000116 0.19999879 0.40000005] 9 [0.39999999 0.2000003 0.39999971] 10 [0.40000007 0.19999992 0.4 ] 11 [0.4 0.20000002 0.39999998] 12 [0.4 0.2 0.4] 13 [0.4 0.2 0.4] 14 [0.4 0.2 0.4]