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$.