NAG Library Function Document

nag_trans_hessenberg_controller (g13exc)

 Contents

    1  Purpose
    7  Accuracy

1
Purpose

nag_trans_hessenberg_controller (g13exc) reduces the matrix pair B,A  to lower or upper controller Hessenberg form using (and optionally accumulating) the unitary state-space transformations.

2
Specification

#include <nag.h>
#include <nagg13.h>
void  nag_trans_hessenberg_controller (Integer n, Integer m, Nag_ControllerForm reduceto, double a[], Integer tda, double b[], Integer tdb, double u[], Integer tdu, NagError *fail)

3
Description

nag_trans_hessenberg_controller (g13exc) computes a unitary state-space transformation U, which reduces the matrix pair B,A  to give a compound matrix in one of the following controller Hessenberg forms:
m n U B U A UT = * . . . * * . . . . . . * . . . . . . . . . . . . * * . . * . . . . . . . * . . * n  
if reduceto=Nag_UH_Controller, or
n m U A UT U B = * . . * . . . . . . . * . . * . . . . . . . . . . . . * . . . . . . * * . . . n  
if reduceto=Nag_LH_Controller. If m>n , then the matrix U B  is trapezoidal and if m + 1 n  then the matrix U A UT  is full.

4
References

van Dooren P and Verhaegen M (1985) On the use of unitary state-space transformations. In: Contemporary Mathematics on Linear Algebra and its Role in Systems Theory 47 AMS, Providence

5
Arguments

1:     n IntegerInput
On entry: the actual state dimension, n , i.e., the order of the matrix A .
Constraint: n1 .
2:     m IntegerInput
On entry: the actual input dimension, m .
Constraint: m1 .
3:     reduceto Nag_ControllerFormInput
On entry: indicates whether the matrix pair B,A  is to be reduced to upper or lower controller Hessenberg form as follows:
reduceto=Nag_UH_Controller
Upper controller Hessenberg form).
reduceto=Nag_LH_Controller
Lower controller Hessenberg form).
Constraint: reduceto=Nag_UH_Controller or Nag_LH_Controller.
4:     a[n×tda] doubleInput/Output
Note: the i,jth element of the matrix A is stored in a[i-1×tda+j-1].
On entry: the leading n  by n  part of this array must contain the state transition matrix A  to be transformed.
On exit: the leading n  by n  part of this array contains the transformed state transition matrix U A UT .
5:     tda IntegerInput
On entry: the stride separating matrix column elements in the array a.
Constraint: tdan .
6:     b[n×tdb] doubleInput/Output
Note: the i,jth element of the matrix B is stored in b[i-1×tdb+j-1].
On entry: the leading n  by m  part of this array must contain the input matrix B  to be transformed.
On exit: the leading n  by m  part of this array contains the transformed input matrix U B .
7:     tdb IntegerInput
On entry: the stride separating matrix column elements in the array b.
Constraint: tdbm .
8:     u[n×tdu] doubleInput/Output
Note: the i,jth element of the matrix U is stored in u[i-1×tdu+j-1].
On entry: if u is not NULL, then the leading n  by n  part of this array must contain either a transformation matrix (e.g., from a previous call to this function) or be initialized as the identity matrix. If this information is not to be input then u must be set to NULL.
On exit: if u is not NULL, then the leading n  by n  part of this array contains the product of the input matrix U  and the state-space transformation matrix which reduces the given pair to observer Hessenberg form.
9:     tdu IntegerInput
On entry: the stride separating matrix column elements in the array u.
Constraint: tdun  if u is defined.
10:   fail NagError *Input/Output
The NAG error argument (see Section 3.7 in How to Use the NAG Library and its Documentation).

6
Error Indicators and Warnings

NE_2_INT_ARG_LT
On entry, tda=value  while n=value . These arguments must satisfy tdan . On entry tdb=value  while m=value . These arguments must satisfy tdbm . On entry tdu=value  while n=value . These arguments must satisfy tdun .
NE_BAD_PARAM
On entry, argument reduceto had an illegal value.
NE_INT_ARG_LT
On entry, m=value.
Constraint: m1.
On entry, n=value.
Constraint: n1.

7
Accuracy

The algorithm is backward stable.

8
Parallelism and Performance

nag_trans_hessenberg_controller (g13exc) is not threaded in any implementation.

9
Further Comments

The algorithm requires O n+m n 2  operations (see van Dooren and Verhaegen (1985)).

10
Example

To reduce the matrix pair B,A  to upper controller Hessenberg form, and return the unitary state-space transformation matrix U .

10.1
Program Text

Program Text (g13exce.c)

10.2
Program Data

Program Data (g13exce.d)

10.3
Program Results

Program Results (g13exce.r)

© The Numerical Algorithms Group Ltd, Oxford, UK. 2017