.Modelica_LinearSystems2.StateSpace.Internal.invariantZeros2

Information

Computes the invariant zeros of a system in state space form:

   der(x) = A*x + B*u
        y = C*x + D*u

The invariant zeros of this system are defined as the variables z that make the following matrix singular:

    | A B |     | I 0 |
    |     | - z*|     |
    | C D |     | 0 0 |

where I is the identity matrix of the same size as A and 0 are zero matrices of appropriate dimensions.

Unlike to function StateSpace.Analysis.invariantZeros for general systems, it is assumned in StateSpace.Analysis.invariantZeros that the generalized system matrix [A, B; C, D] has upper Hessenberg form. Especially for SISO system this is achieved when A is of upper Hessenberg form and [1, n] matrix C is of form C = k*[0, 0, ..., 0, 1].

The function uses the LAPACK routine DHGEQZ. Look at Modelica_LinearSystems2.Math.Matrices.LAPACK.dhgeqz for details.

The advantage of this function in comparison to the general invariantZeros function is the lower computatioal effort bacause systems with arbitrary system functions are first transformed into an upper Hessenberg form system.

This function is used in fromStateSpace transformation functions which use Hessenberg form systems anyway.

Currently, there is the restriction that the number of inputs and the number of outputs must be identical. Other systems have to be treated like p*q SISO systems where p is the number of putputs and q the number of inputs of the MIMO system.

Interface

encapsulated function invariantZeros2
  import Modelica;
  import Modelica_LinearSystems2.StateSpace;
  import Modelica_LinearSystems2.Math.Complex;
  import Modelica_LinearSystems2.Math.Matrices;
  import Modelica_LinearSystems2.Math.Matrices.LAPACK;
  input StateSpace ss "Linear system in state space form";
  output Complex Zeros[:] "Finite, invariant zeros of ss; size(Zeros,1) <= size(ss.A,1)";
end invariantZeros2;

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