Skip to contents

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.

Usage

TestPhiHurwitz(phi, eps = 0)

Arguments

phi

Numeric matrix. The drift matrix (\(\boldsymbol{\Phi}\)).

eps

Nonnegative numeric tolerance (default 0.0). The test checks \(\Re(\lambda_i) < -\text{eps}\) for all eigenvalues.

Author

Ivan Jacob Agaloos Pesigan

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