Utilities
System operators
The struct Operators
provides a convenient way to organize and store the full and reduced operators.
LiftAndLearn.Operators
— Typemutable struct Operators
Organize the operators of the system in a structure. The operators currently supported are up to second order.
Fields
A
: linear state operatorB
: linear input operatorC
: linear output operatorD
: linear input-output coupling operatorA2
: quadratic state operator with redundancyA3
: cubic state operator with redundancyA4
: quartic state operator with redundancyA2u
: quadratic state operator with no redundancyA3u
: cubic state operator with no redundancyA4u
: quartic state operator with no redundancyA2t
: quadratic state operator with redundancy in 3-dim tensor formN
: bilinear (state-input) operatorK
: constant operatorf
: 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)
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.