# slicot\_ab01od

Staircase form for multi-input systems using orthogonal state and input transformations.

## Syntax

* \[A\_OUT, B\_OUT, U\_OUT, V, NCONT\_OUT, INDCON\_OUT, KSTAIR\_OUT, INFO] = slicot\_ab01od(STAGES, JOBU, JOBV, A\_IN, B\_IN, U\_IN, NCONT\_IN, INDCON\_IN, KSTAIR\_IN, TOL)

## Input argument

* STAGES - Specifies the reduction stage: 'F': Perform the forward stage only; 'B': Perform the backward stage only; 'A': Perform both (all) stages.
* JOBU - Indicates whether the user wishes to accumulate in a matrix U the state-space transformations: 'N': Do not form U; 'I': U is internally initialized to the unit matrix
* JOBV - Indicates whether the user wishes to accumulate in a matrix V the input-space transformations: 'N': Do not form V; I': V is initialized to the unit matrix and the orthogonal transformation matrix V is returned.
* A\_IN - the leading N-by-N part of this array must contain the state transition matrix A to be transformed
* B\_IN - the leading N-by-M part of this array must contain the input matrix B to be transformed.
* U\_IN - If STAGES \~= 'B' or JOBU = 'N', then U need not be set on entry. If STAGES = 'B' and JOBU = 'I', then, on entry, the leading N-by-N part of this array must contain the transformation matrix U that reduced the pair to the orthogonal canonical form.
* NCONT\_IN - The order of the controllable state-space representation. NCONT\_IN is input only if STAGES = 'B'.
* INDCON\_IN - The number of stairs in the staircase form (also, the controllability index of the controllable part of the system representation).
* TOL - The tolerance to be used in rank determination when transforming (A, B).

## Output argument

* A\*OUT - On exit, the leading N-by-N part of this array contains the transformed state transition matrix U' \* A \_ U. The leading NCONT-by-NCONT part contains the upper block Hessenberg state matrix Acont in Ac, given by U' \_ A \_ U, of a controllable realization for the original system. The elements below the first block-subdiagonal are set to zero. If STAGES \~='F', the subdiagonal blocks of A are triangularized by RQ factorization, and the annihilated elements are explicitly zeroed.
* B\*OUT - On exit with STAGES = 'F', the leading N-by-M part of this array contains the transformed input matrix U' \* B, with all elements but the first block set to zero. On exit with STAGES \~= 'F', the leading N-by-M part of this array contains the transformed input matrix U' \_ B \* V, with all elements but the first block set to zero and the first block in upper triangular form.
* U\_OUT - if JOBU = 'I', the leading N-by-N part of this array contains the transformation matrix U that performed the specified reduction. If JOBU = 'N', the array U is not referenced and can be supplied as a dummy array.
* V - If JOBV = 'I', then the leading M-by-M part of this array contains the transformation matrix V.
* NCONT\_OUT - NCONT\_OUT is input only if STAGES = 'B'.
* INDCON\_OUT - INDCON is input only if STAGES = 'B'.
* KSTAIR\_OUT - KSTAIR is input if STAGES = 'B', and output otherwise.
* INFO - 0: successful exit; if INFO = -i, the i-th argument had an illegal value.

## Description

To reduce the matrices A and B using (and optionally accumulating) state-space and input-space transformations U and V respectively, such that the pair of matrices

Ac = U' \* A \* U, Bc = U' \* B \* V

Used function(s)

AB01OD

Bibliography

http://slicot.org/objects/software/shared/doc/AB01OD.html

## Example

```matlab
N = 5;
M = 2;
TOL = 0.
STAGES = 'F';
JOBU = 'N';
JOBV = 'N';
A_IN = [17.0   24.0    1.0    8.0   15.0;
   23.0    5.0    7.0   14.0   16.0;
   4.0    6.0   13.0   20.0   22.0;
   10.0   12.0   19.0   21.0    3.0;
   11.0   18.0   25.0    2.0    9.0];

% SLICOT 5.0 have an error in the example.
A_IN = A_IN.';

B_IN = [   -1.0   -4.0;
    4.0    9.0;
   -9.0  -16.0;
   16.0   25.0;
  -25.0  -36.0];

U_IN = zeros(N, N);
INDCON_IN = N;
NCONT_IN = 1;
KSTAIR_IN = zeros(1,N);
[A_OUT, B_OUT, U_OUT, V, NCONT_OUT, INDCON_OUT, KSTAIR_OUT, INFO] = slicot_ab01od(STAGES, JOBU, JOBV, A_IN, B_IN, U_IN, NCONT_IN, INDCON_IN, KSTAIR_IN, TOL)
```

## History

| Version | Description     |
| ------- | --------------- |
| 1.0.0   | initial version |

## Author

SLICOT Documentation
