.Modelica_LinearSystems2.StateSpace.Analysis.isControllable

Information

Syntax

controllable = StateSpace.Analysis.isControllable(ss, method)

Description

Function StateSpace.Analysis.isControllable checks the controllability of a state space system. Therefore, the system is transformed into staircase form, i.e. the system matrix H of the transformed system has block upper Hessenberg form:

     | H11    H12     H13    ...     H1k |
     | H21    H22     H23    ...     H2k |
 H = |  0     H32     ...    ...     ... |
     | ...    ...     ...    ...     ... |
     |  0     ...      0    Hk,k-1   Hkk |

where, if Hk,k-1 has full rank, indicating whether the system is controllable or not.

For single input systems the staircase form is a usual upper Hessenberg form, i.e. th blocks are of dimension one.
The boolean input method defines for multi output systems the method to generate the staircase form of the system, whereas Types.StaircaseMethod.QR and Types.StaircaseMethod.SVD denotes QR-factorization and singular value decomposition respectively. Since staircase algorithm contains rank decisions QR-factorization should be restricted to well conditioned systems of lower order (<5). Default is SVD.

Since controllability is dual to observability of the dual system (A', C', B', D'), proof of observability is referred to proof of controllability of the dual system.

Example

  Modelica_LinearSystems2.StateSpace ss=Modelica_LinearSystems2.StateSpace(
    A=[-1, 1, 1;0, -1, 1;0,0,-1],
    B=[0;0;1],
    C=[0,1,0],
    D=[0]);

  Types.Method method=Modelica_LinearSystems2.Types.StaircaseMethod.SVD

  Boolean controllable;

algorithm
  controllable := Modelica_LinearSystems2.StateSpace.Analysis.isControllable(ss, method);
// controllable = true

Interface

encapsulated function isControllable
  import Modelica_LinearSystems2;
  import Modelica_LinearSystems2.StateSpace;
  input StateSpace ss;
  input Modelica_LinearSystems2.Utilities.Types.StaircaseMethod method = Modelica_LinearSystems2.Utilities.Types.StaircaseMethod.SVD;
  output Boolean controllable;
end isControllable;

Revisions

Date Author Comment
2010-05-31 Marcus Baur, DLR-RM Realization

Generated at 2024-03-28T19:15:55Z by OpenModelicaOpenModelica 1.22.3 using GenerateDoc.mos