# quaskro

quasi-Kronecker form

## Calling Sequence

    [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(F)
                [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(E,A)
                [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(F,tol)
                [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(E,A,tol)

## Arguments

F

  real matrix pencil `F=s*E-A` (`s=poly(0,'s')`)

E,A

  two real matrices of same dimensions

tol

  a real number (tolerance, default value=1.d-10)

Q,Z

  two square orthogonal matrices

Qd,Zd

  two vectors of integers

numbeps

  vector of integers

## Description

Quasi-Kronecker form of matrix pencil: `quaskro` computes two orthogonal matrices `Q, Z` which put the pencil `F=s*E -A` into upper-triangular form:

               | sE(eps)-A(eps) |        X       |      X     |
               |----------------|----------------|------------|
               |        O       | sE(inf)-A(inf) |      X     |
    Q(sE-A)Z = |=================================|============|
               |                                 |            |
               |                O                | sE(r)-A(r) |

The dimensions of the blocks are given by:

`eps=Qd(1) x Zd(1)`, `inf=Qd(2) x Zd(2)`, `r = Qd(3) x Zd(3)`

The `inf` block contains the infinite modes of the pencil.

The `f` block contains the finite modes of the pencil

The structure of epsilon blocks are given by:

`numbeps(1)` = `#` of eps blocks of size 0 x 1

`numbeps(2)` = `#` of eps blocks of size 1 x 2

`numbeps(3)` = `#` of eps blocks of size 2 x 3 etc...

The complete (four blocks) Kronecker form is given by the function `kroneck` which calls `quaskro` on the (pertransposed) pencil `sE(r)-A(r)`.

The code is taken from T. Beelen

## See Also

- kroneck
- gschur
- gspec