.Modelica_LinearSystems2.StateSpace.Internal.isStabilizableSISO

Information

This function checks whether a SISO state space system is stabilizable or not.

A system is stabilizable for the continuous-time case if all of the uncontrollable eigenvalues have neagtive real part or for the discrete-time case if all of the uncontrollable eigenvalues are in the complex unit circle respectively. Hence, a controllable system is always stabilizable of course.

To check stabilizability, ths system is transformed to to upper controller Hessenberg form

              | *   *   ...   ...    * |               | * |
              | *   *   ...   ...    * |               | 0 |
Q*A*Q ' = H = | 0   *   ...   ...    * |,    Q*b = q = | . |,   c*Q = ( *, ..., * )
              | .   .    .     .     . |               | . |
              | 0  ...   0     *     * |               | 0 |

The system can be partitioned to

H=[H11,H12; H21, H22], q=[q1;0],

where the pair (H11, q1) contains the controllable part of the system, that is, rank(H) = rank(H11). For stabilizability the H22 has to be stable.

Interface

encapsulated function isStabilizableSISO
  import Modelica;
  import Modelica_LinearSystems2;
  import Modelica_LinearSystems2.StateSpace;
  import Modelica_LinearSystems2.Math.Complex;
  input StateSpace ss "State space system";
  output Boolean stabilizable;
end isStabilizableSISO;

Generated at 2024-04-25T18:15:59Z by OpenModelicaOpenModelica 1.22.3 using GenerateDoc.mos