In [1]:
from sympy import *; init_session()
In [2]:
from applpy import *; import numpy as np
In [3]:
'''
X = MarkovChain([[.3,.3,.4,0,0],
[0,.3,.3,.4,0],
[0,0,.3,.3,.4],
[.3,.3,.4,0,0],
[.3,.3,.4,0,0]])
'''
X = MarkovChain([[Rational(3,10),Rational(3,10),Rational(4,10),0,0],
[0,Rational(3,10),Rational(3,10),Rational(4,10),0],
[0,0,Rational(3,10),Rational(3,10),Rational(4,10)],
[Rational(3,10),Rational(3,10),Rational(4,10),0,0],
[Rational(3,10),Rational(3,10),Rational(4,10),0,0]],
states = ['blue','green','black', 'yellow','orange'])
In [4]:
X.display()
In [5]:
X.display(n=3,method = 'rational')
In [8]:
X.display(option='steady state',method='rational')
In [6]:
Pi = X.long_run_probs()
matrix_display(Pi, X.state_space)
Out[6]:
In [7]:
Y = MarkovChain(P=[[.97,.03],[.04,.96]],init=[.7,.3],states=['red','blue'])
In [8]:
Y.display()
In [9]:
Y.probability([(2,'blue'),(1,'red'),(0,'red')])
Out[9]:
In [10]:
Y.probability([(1,'blue')])
Out[10]:
In [11]:
Y.probability([(2,'blue')],given=[(1,'blue')])
Out[11]:
In [20]:
# DTMC with rationals
In [8]:
trans_mat = X.P; size = np.size(trans_mat,axis=0)
In [23]:
a = symbols('a0:%d'%(size),positive=True)
In [22]:
size
Out[22]:
In [43]:
eqns = []
norm_eqn = -1
for i in range(1,size):
current_eqn = 0
for j in range(size):
current_eqn += trans_mat[j][i]*a[j]
current_eqn -= a[i]
norm_eqn += a[i]
eqns.append(current_eqn)
eqns.append(norm_eqn+a[0])
In [58]:
solns = solve(eqns)
In [46]:
X.display(option='steady state')
In [26]:
trans_mat
Out[26]:
In [62]:
soln = [solns[a[i]] for i in range(size)]
In [63]:
soln
Out[63]:
In [10]:
np.dot(trans_mat,trans_mat)
Out[10]:
In [17]:
Y.init_print['Prob']
Out[17]:
In [ ]: