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