.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 |
| 0 H32 H33 H3k |
H = | |
| 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. the 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.Utilities.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 "State space system";
  input Modelica_LinearSystems2.Utilities.Types.StaircaseMethod method = Modelica_LinearSystems2.Utilities.Types.StaircaseMethod.SVD "Staircase algorithm method";
  output Boolean controllable "= true, if system is controllable";
end isControllable;

Revisions

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

Generated at 2024-11-26T19:26:15Z by OpenModelicaOpenModelica 1.24.2 using GenerateDoc.mos