In [1]:
import numpy as np
In [55]:
#
# define a transition matrix
#
T = np.array([[0.1, 0.2, 0.3],
[0.5,0.3,0.6],
[0.4,0.5,0.1]])
T
Out[55]:
In [56]:
#
# Start out with a random prob distribution vector
#
x0 = np.array([np.random.rand(3)]).T
x0 = x0/x0.sum()
x0
Out[56]:
In [57]:
x1 = T.dot(x0)
x1
Out[57]:
In [58]:
x2 = T.dot(x1)
x2
Out[58]:
In [59]:
x3 = T.dot(x2)
x3
Out[59]:
In [60]:
xn = x3
for i in range(100):
xn = T.dot(xn)
xn
Out[60]:
In [61]:
vals, vecs = np.linalg.eig(T)
vals
Out[61]:
In [62]:
vecs
Out[62]:
In [63]:
vecs.sum(axis=0)
Out[63]:
In [64]:
vecs/vecs.sum(axis=0)[0]
Out[64]:
In [ ]: