Transformations

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.

transform(problem::InitialValueProblem, options::Options)

Interface function that calls the respective transformation function.

Input

  • problem – discrete or continuous initial-value problem
  • option – 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.

source

Schur transform

The real Schur decomposition is of the form

\[U^TAU = \begin{pmatrix} T_{11} & T_{12} &\cdots & T_{1b} \\ 0 & T_{22} & \cdots & T_{2b} \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & T_{bb} \end{pmatrix}\]

where $T_{ij}$ are 2x2 matrices

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

source

Examples