Uniformization.jl is a package for solving continuous-time Markov processes using uniformization, also known as randomization or Jensen's method. Solutions are approximated by converting the continuous-time problem to a discrete-time problem paired with a counting mechanism. Currently, standard uniformization, Erlangization or external uniformization, and method based on discrete observation times (Yoon & Shanthikumar, 1989, Probability in the Engineering and Informational Sciences) are implemented.
Begin by creating a generator matrix TransitionRateMatrix type is optional; ensuring that other
types of matrices have the correct properties can also be done using the
transitionratematrix and transitionratematrix! functions.
using Uniformization.jl
Q = TransitionRateMatrix([-1.0 1 0; 1 -2 1; 0 1 -1])
p0 = [1.0, 0, 0]From here, we can solve for the probability distribution at time
t = 0.5
k = 2^8
uniformize(Q, p0, k, t)The parameter
The erlangization method is the default, as it seems to be a good compromise between
efficiency and robustness on stiff problems.
Automatic differentiation using ForwardDiff.jl and ReverseDiff.jl should work as
expected.
Further information is available in the docstrings.
See CITATION.bib for the relevant reference(s).