pub struct ContinuousTimeMarkov {
pub q: Vec<f64>,
pub n_states: usize,
}Expand description
Continuous-time Markov chain with infinitesimal generator matrix Q.
Fields§
§q: Vec<f64>Generator matrix Q (n x n). Rows sum to zero; off-diagonals >= 0.
n_states: usizeNumber of states.
Implementations§
Source§impl ContinuousTimeMarkov
impl ContinuousTimeMarkov
Sourcepub fn simulate(
&self,
init: usize,
t_max: f64,
seed: u64,
) -> (Vec<f64>, Vec<usize>)
pub fn simulate( &self, init: usize, t_max: f64, seed: u64, ) -> (Vec<f64>, Vec<usize>)
Simulate a CTMC trajectory up to time T using Gillespie’s algorithm.
Returns (times, states) pairs representing the jump times and new states.
Sourcepub fn kolmogorov_forward(&self, p0: &[f64], t: f64) -> Vec<f64>
pub fn kolmogorov_forward(&self, p0: &[f64], t: f64) -> Vec<f64>
Solve the Kolmogorov forward equations dp/dt = p * Q at time T.
Uses matrix exponentiation: p(T) = p(0) * exp(Q * T).
Sourcepub fn stationary_distribution(&self, tol: f64, max_iter: usize) -> Vec<f64>
pub fn stationary_distribution(&self, tol: f64, max_iter: usize) -> Vec<f64>
Compute the stationary distribution pi satisfying pi Q = 0, sum(pi) = 1.
Sourcepub fn mean_first_passage_time(&self, from: usize, to: usize) -> f64
pub fn mean_first_passage_time(&self, from: usize, to: usize) -> f64
Compute the mean first-passage time from state i to state j.
Uses the fundamental matrix method for ergodic CTMCs.
Sourcepub fn mean_sojourn_time(&self, state: usize) -> f64
pub fn mean_sojourn_time(&self, state: usize) -> f64
Compute the expected holding time in state i (mean sojourn time).
Auto Trait Implementations§
impl Freeze for ContinuousTimeMarkov
impl RefUnwindSafe for ContinuousTimeMarkov
impl Send for ContinuousTimeMarkov
impl Sync for ContinuousTimeMarkov
impl Unpin for ContinuousTimeMarkov
impl UnsafeUnpin for ContinuousTimeMarkov
impl UnwindSafe for ContinuousTimeMarkov
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.