Function File: bool = isstabilizable (sys)
Function File: bool = isstabilizable (sys, tol)
Function File: bool = isstabilizable (a, b)
Function File: bool = isstabilizable (a, b, e)
Function File: bool = isstabilizable (a, b, [], tol)
Function File: bool = isstabilizable (a, b, e, tol)
Function File: bool = isstabilizable (a, b, [], [], dflg)
Function File: bool = isstabilizable (a, b, e, [], dflg)
Function File: bool = isstabilizable (a, b, [], tol, dflg)
Function File: bool = isstabilizable (a, b, e, tol, dflg)

Logical check for system stabilizability. All unstable modes must be controllable or all uncontrollable states must be stable.

Inputs

sys

LTI system. If sys is not a state-space system, it is converted to a minimal state-space realization, so beware of pole-zero cancellations which may lead to wrong results!

a

State transition matrix.

b

Input matrix.

e

Descriptor matrix. If e is empty [] or not specified, an identity matrix is assumed.

tol

Optional tolerance for stability. Default value is 0.

dflg = 0

Matrices (a, b) are part of a continuous-time system. Default Value.

dflg = 1

Matrices (a, b) are part of a discrete-time system.

Outputs

bool = 0

System is not stabilizable.

bool = 1

System is stabilizable.

Algorithm
Uses SLICOT AB01OD and TG01HD by courtesy of NICONET e.V.

* Calculate staircase form (SLICOT AB01OD)
* Extract unobservable part of state transition matrix
* Calculate eigenvalues of unobservable part
* Check whether
  real (ev) < -tol*(1 + abs (ev))   continuous-time
  abs (ev) < 1 - tol                discrete-time

See also: isdetectable, isstable, isctrb, isobsv.

Package: control