[Python] Matrix convergence
Robert Israel
israel at math.MyUniversitysInitials.ca
Mon Oct 1 01:51:06 CEST 2007
Zhengzheng Pan <panzhengzheng at gmail.com> writes:
> Hi all,
>
> I'm trying to check whether a (stochastic/transition) matrix
> converges, i.e. a function/method that will return True if the input
> matrix sequence shows convergence and False otherwise. The background
> is a Markov progress, so the special thing about the transition matrix
> is the values of elements in each row add up to be 1. Fail to find any
> relevant build-in methods in Python...
>
> Currently the standard theorem on convergence in Markov chain
> literature is involved with the properties of aperiodic and
> connectivity, which I'm not able to implement with Python either...
> Therefore I'm actually also looking for alternative conditions to
> check for convergence, and am willing to sacrifice a little bit of
> precision.
>
> If you have any ideas/suggestions on how to examine the convergence of
> a matrix in general or specifically about this kind of matrices, and
> are willing to share, that'd be really great.
>
Do you mean you have an n x n stochastic matrix T and you're trying to find
out whether the sequence T^j converges?
Let A = (I + T)^(n-1) and B = T^((n-1)^2+1). Powers of matrices are easy
to compute using repeated squaring.
i and j are in the same class iff A_{ij} > 0 and A_{ji} > 0. A class
containing state i is recurrent iff A_{ij} = 0 for all j not in the class.
A recurrent class containing state i is aperiodic iff
B_{ij} > 0 for all j in the class.
T^j converges iff all recurrent classes are aperiodic. Thus the test
can be written as follows:
For each i, either there is some j for which A_{ij} > 0 but A_{ji} = 0,
or there is no j for which A_{ij} > 0 but B_{ij} = 0.
--
Robert Israel israel at math.MyUniversitysInitials.ca
Department of Mathematics http://www.math.ubc.ca/~israel
University of British Columbia Vancouver, BC, Canada
More information about the Python-list
mailing list