Scilab Function

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)`

### Parameters

- `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` ,