Returns TRUE iff the drift matrix \(\boldsymbol{\Phi}\)
is Hurwitz-stable,
i.e., all eigenvalues have real parts strictly less than -eps.
Setting eps = 0 enforces the usual strict condition
\(\max \Re\{\lambda_i(\boldsymbol{\Phi})\} < 0\).
A small positive eps (e.g., 1e-12) can be used
to guard against floating-point round-off.
See also
Other Simulation of State Space Models Data Functions:
LinSDE2SSM(),
LinSDECovEta(),
LinSDECovY(),
LinSDEMeanEta(),
LinSDEMeanY(),
ProjectToHurwitz(),
ProjectToStability(),
SSMCovEta(),
SSMCovY(),
SSMMeanEta(),
SSMMeanY(),
SimAlphaN(),
SimBetaN(),
SimBetaN2(),
SimCovDiagN(),
SimCovN(),
SimIotaN(),
SimNuN(),
SimPhiN(),
SimPhiN2(),
SimSSMFixed(),
SimSSMIVary(),
SimSSMLinGrowth(),
SimSSMLinGrowthIVary(),
SimSSMLinSDEFixed(),
SimSSMLinSDEIVary(),
SimSSMOUFixed(),
SimSSMOUIVary(),
SimSSMVARFixed(),
SimSSMVARIVary(),
SpectralRadius(),
TestPhi(),
TestStability(),
TestStationarity()
Examples
# Unstable example (spectral abscissa >= 0):
phi <- matrix(
data = c(
0.10, -0.40,
0.50, 0.20
),
nrow = 2
)
TestPhiHurwitz(phi = phi) # FALSE
#> [1] FALSE
# Stable example (all real parts < 0):
phi <- matrix(
data = c(
-0.50, -0.20,
1.00, -0.30
),
nrow = 2
)
TestPhiHurwitz(phi = phi) # TRUE
#> [1] TRUE
TestPhiHurwitz(phi = phi, eps = 1e-12) # also TRUE with tolerance
#> [1] TRUE