Transformations
This module provides functions to apply coordinate transformations to Systems using matrix decompositions.
Interface
This module exports a single function that works as an interface. It dispatches which transformation to apply using a string argument.
Reachability.Utils.transform
— Function.transform(problem::InitialValueProblem, options::Options)
Interface function that calls the respective transformation function.
Input
problem
– discrete or continuous initial-value problemoption
– problem options
Output
A tuple containing the transformed problem and the transformed options.
Notes
The functions that are called in the background should return a the transformed system components A
, X0
, and U
, and also an inverse transformation matrix M
. If the system has an invariant, it is transformed as well.
Schur transform
The real Schur decomposition is of the form
where $T_{ij}$ are 2x2 matrices
Reachability.Utils.schur_transform
— Function.schur_transform(problem::InitialValueProblem)
Applies a Schur transformation to a discrete or continuous initial-value problem.
Input
problem
– discrete or continuous initial-value problem
Output
Transformed problem.
Algorithm
We use Julia's default schurfact
function to compute a Schur decomposition of the coefficients matrix $A$.