Scilab Function
Last update : 20/12/2004

kroneck - Kronecker form of matrix pencil

### Calling Sequence

  `[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F)`
  `[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(E,A)`

### Parameters

- `F`: real matrix pencil `F=s*E-A`
- `E,A`: two real matrices of same dimensions
- `Q,Z`: two square orthogonal matrices
- `Qd,Zd`: two vectors of integers
- `numbeps,numeta`: two vectors of integers

### Description

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

               | sE(eps)-A(eps) |        X       |      X     |      X        |
               |----------------|----------------|------------|---------------|
               |        O       | sE(inf)-A(inf) |      X     |      X        |
    Q(sE-A)Z = |---------------------------------|----------------------------|
               |                |                |            |               |
               |        0       |       0        | sE(f)-A(f) |      X        |
               |--------------------------------------------------------------|
               |                |                |            |               |
               |        0       |       0        |      0     | sE(eta)-A(eta)|

The dimensions of the four blocks are given by:

`eps=Qd(1) x Zd(1)`, `inf=Qd(2) x Zd(2)`, `f = Qd(3) x Zd(3)`, `eta=Qd(4)xZd(4)`

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

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

The structure of epsilon and eta 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...

`numbeta(1)` = `#` of eta blocks of size 1 x 0

`numbeta(2)` = `#` of eta blocks of size 2 x 1

`numbeta(3)` = `#` of eta blocks of size 3 x 2 etc...

The code is taken from T. Beelen (Slicot-WGS group).

### Examples

    F=randpencil([1,1,2],[2,3],[-1,3,1],[0,3]);
    Q=rand(17,17);Z=rand(18,18);F=Q*F*Z;
    //random pencil with eps1=1,eps2=1,eps3=1; 2 J-blocks @ infty
    //with dimensions 2 and 3
    //3 finite eigenvalues at -1,3,1 and eta1=0,eta2=3
    [Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F);
    [Qd(1),Zd(1)]    //eps. part is sum(epsi) x (sum(epsi) + number of epsi)
    [Qd(2),Zd(2)]    //infinity part
    [Qd(3),Zd(3)]    //finite part
    [Qd(4),Zd(4)]    //eta part is (sum(etai) + number(eta1)) x sum(etai)
    numbeps
    numbeta

### See Also

`gschur`, `gspec`, `systmat`, `pencan`, `randpencil`, `trzeros`,