LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
ctmc_randomization.m
1%{ @file ctmc_randomization.m
2 % @brief Uniformization (randomization) of a continuous-time Markov chain
3 %
4 % @author LINE Development Team
5%}
6
7%{
8 % @brief Uniformization (randomization) of a continuous-time Markov chain
9 %
10 % @details
11 % Applies uniformization to transform a CTMC into a DTMC.
12 %
13 % @par Syntax:
14 % @code
15 % [P, q] = ctmc_randomization(Q)
16 % [P, q] = ctmc_randomization(Q, q)
17 % @endcode
18 %
19 % @par Parameters:
20 % <table>
21 % <tr><th>Name<th>Description
22 % <tr><td>Q<td>Infinitesimal generator matrix
23 % <tr><td>q<td>(Optional) Uniformization rate. Default: max(|diag(Q)|) + rand
24 % </table>
25 %
26 % @par Returns:
27 % <table>
28 % <tr><th>Name<th>Description
29 % <tr><td>P<td>Uniformized discrete-time stochastic matrix
30 % <tr><td>q<td>The rate used for uniformization
31 % </table>
32%}
33function [P, q] = ctmc_randomization(Q, q)
34 if nargin == 1
35 q = (max(max(abs(Q)))) + rand;
36 end
37 if issparse(Q)
38 P = Q / q + speye(size(Q));
39 else
40 P = Q / q + eye(size(Q));
41 end
42 P = dtmc_makestochastic(P);
43end