.Modelica_LinearSystems2.StateSpace.Transformation.toSimilarForm

Information

Syntax

tss = StateSpace.Transformation.toSimilarForm(ss, T, inverted)

Description

This function calculates a similar state space system, i.e.

der(z) = T*A*inv(T)*z + T*B*u
     y = C*T*z + D*u

if inverted==false and

der(z) = inv(T)*A*T*z + inv(T)*B*u
     y = C*inv(T)*z + D*u

if inverted=true. Matrix T has to be invertible. The transformed system has the same eigenvalues.

Example

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

  Real T[2,2]=[1, 1;0, sqrt(2)];

algorithm
  tss:=Modelica_LinearSystems2.StateSpace.Transformation.toSimilarForm(ss, T, false);
//  tss=StateSpace(
      A=[-1, 0; 0, -2],
      B=[1; 0],
      C=[0, 1/sqrt82)],
      D=[0])

See also

State space analysis

Interface

encapsulated function toSimilarForm
  import Modelica;
  import Modelica_LinearSystems2;
  import Modelica_LinearSystems2.StateSpace;
  import Modelica.Math.Matrices;
  import Modelica_LinearSystems2.Math.Matrices.LAPACK;
  input StateSpace ss "State space system";
  input Real T[size(ss.A, 2), size(ss.A, 1)] = identity(size(ss.A, 1)) "Transformation matrix";
  input Boolean inverted = false "Is false (default) for transformation z = Tx, true for x = Tz" annotation(
    choices(checkBox = true));
  output StateSpace tss(redeclare Real A[size(ss.A, 1), size(ss.A, 2)], redeclare Real B[size(ss.B, 1), size(ss.B, 2)], redeclare Real C[size(ss.C, 1), size(ss.C, 2)], redeclare Real D[size(ss.D, 1), size(ss.D, 2)]);
end toSimilarForm;

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