LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
ctmc_transient_sens.h File Reference

Sensitivity of the transient distribution of a CTMC to a scalar parameter. More...

#include <cstddef>
#include <vector>
#include "line/api/mc/ctmc_transient.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for ctmc_transient_sens.h:

Go to the source code of this file.

Classes

struct  line::mc::TransientSensResult< T >

Namespaces

namespace  line
namespace  line::mc

Functions

template<class T>
TransientSensResult< T > line::mc::ctmc_transient_sens (const Matrix< T > &Q, const Matrix< T > &dQ, const std::vector< T > &pi0, const T &t0, const T &t1, double rtol=1e-3, double atol=1e-6)
 Sensitivity of the transient distribution of a CTMC to a scalar parameter.
template<class T>
TransientSensResult< T > line::mc::ctmc_transient_sens (const Matrix< T > &Q, const Matrix< T > &dQ, const T &t0, const T &t1, double rtol=1e-3, double atol=1e-6)
 Overload starting from the uniform distribution, as MATLAB's short forms do.

Detailed Description

Sensitivity of the transient distribution of a CTMC to a scalar parameter.

Templated port of matlab/src/api/mc/ctmc_transient_sens.m. Differentiating the forward equations with respect to theta, with an initial vector that does not depend on theta, gives Trivedi and Bobbio (2017), Eq. (9.82),

d/dt (dpi/dtheta) = (dpi/dtheta) Q + pi (dQ/dtheta), dpi(0)/dtheta = 0.

The sensitivity equation is driven by pi(t), so the two cannot be advanced separately: state and sensitivity are integrated as ONE augmented system of size 2n on a single adaptive grid, which is also what keeps the two consistent at every returned time point.

GATED ON TRANSCENDENTAL ARITHMETIC, for the same reason as ctmc_transient: it is the same ode23 controller on a larger system.

Definition in file ctmc_transient_sens.h.