Utilities

System operators

The struct Operators provides a convenient way to organize and store the full and reduced operators.

LiftAndLearn.OperatorsType
mutable struct Operators

Organize the operators of the system in a structure. The operators currently supported are up to second order.

Fields

  • A: linear state operator
  • B: linear input operator
  • C: linear output operator
  • D: linear input-output coupling operator
  • A2: quadratic state operator with redundancy
  • A3: cubic state operator with redundancy
  • A4: quartic state operator with redundancy
  • A2u: quadratic state operator with no redundancy
  • A3u: cubic state operator with no redundancy
  • A4u: quartic state operator with no redundancy
  • A2t: quadratic state operator with redundancy in 3-dim tensor form
  • N: bilinear (state-input) operator
  • K: constant operator
  • f: nonlinear function operator f(x,u)
  • dims: dimensions of the operators

Note

  • Currently only supports
    • state: up to 4th order
    • input: only B matrix
    • output: only C and D matrices
    • state-input-coupling: bilinear
    • constant term: K matrix
    • nonlinearity: f(x,u)
source

Math Operations

This package heavily relies on the following math operations

  • Kronecker Products $\otimes$
  • Vectorization $\text{vec}(\cdot)$

For Kronecker products we are very thankful to the Kronecker.jl package allowing fast Kronecker product arithmetic. We also, use what is called the unique Kronecker product which eliminates the redundant terms arising from the symmetry of Kronecker products. For details on the unique Kronecker product please refer to the package UniqueKronecker.jl.

Partial Differential Equation Models

Please also refer to the package PolynomialModelReductionDataset.jl providing a suite of polynomial-based systems arising from PDEs. We extensively use these models in our examples.