Note, that| * * 0 ... 0 | | 0 | | . . . . . | | . | Q*A*Q ' = H = | * ... ... * 0 |, Q*b = q = | . |, c*Q = ( *, ..., * ) | * ... ... * * | | 0 | | * ... ... * * | | * |
and thatrank(b, A*b, ..., An-1*b) = rank(q, H*q, ..., Hn-1*q)
is a lower triangular matrix and has full rank if and only if none of the elements in the diagonal is zero. That is, that neither qn or hi,i+1, i = 1,..., n-1 may be zero.(q, H*q, ..., Hn-1*q)
encapsulated function isControllableSISO import Modelica_LinearSystems2; import Modelica_LinearSystems2.StateSpace; input StateSpace ss "State space system"; output Boolean controllable; end isControllableSISO;