Overview
Atlassian Sourcetree is a free Git and Mercurial client for Windows.
Atlassian Sourcetree is a free Git and Mercurial client for Mac.
PGDoubling-quad
This is a fork of pgdoubling in which we introduce the ability to work with quad-bases, that is, using a triple (A,B,C) \in ℂ^{(n-k) × k} × ℂ^{(n-k) × t} × ℂ^{r × k} to represent the quasidefinite matrix
X=[ -C^T*C A^T ] [ A B*B^T ]
appearing in the context of principal pivot transforms and permuted Riccati bases of Lagrangian subspaces.
The theory behind these algorithms is described in [Poloni, Strabić, Principal pivot transforms of quasidefinite matrices and semidefinite Lagrangian subspaces (provisional title, still to be submitted)].
Usage
A quad basis is a structure containing the boolean vector quad.v
, which is to be interpreted in the same way as sym.v
in a symbasis from pgdoubling
, and the matrix quad.X=[C *; A B]
. The first block of this partition corresponds to indices for which quad.v==true
, while the second block corresponds to indices for which quad.v==false
. The block labelled *
is arbitrary (and the algorithms are free to modify it for performance reasons).
The function formQuadBasis
can be used to obtain a quadBasis from a triple $(A,B,C)$ coming from a control theory problem. Then, the function optimizeQuadBasis
can be used to obtain an alternative one with a smaller $|X|$. Conversion functions symBasisFromQuadBasis
, hamiltonianPencilFromSymBasis
and symplecticSubspaceFromSymBasis
(slightly misnamed, since it produces a Lagrangian subspace) are provided to switch between the different formats used in the algorithm.
The functions reduceChuLM07CAREX
and getFigures
are used to generate the numerical experiments in the papers.
Authors
Federico Poloni fpoloni@di.unipi.it and Nataša Strabić natasa.strabic@manchester.ac.uk.