nag_trans_hessenberg_controller (g13exc) (PDF version)
g13 Chapter Contents
g13 Chapter Introduction
NAG C Library Manual

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:     nIntegerInput
On entry: the actual state dimension, n , i.e., the order of the matrix A .
Constraint: n1 .
2:     mIntegerInput
On entry: the actual input dimension, m .
Constraint: m1 .
3:     reducetoNag_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:     tdaIntegerInput
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:     tdbIntegerInput
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 defined, 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 the null pointer, i.e., (double *)0.
On exit: if u is defined, 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:     tduIntegerInput
On entry: the stride separating matrix column elements in the array u.
Constraint: tdun  if u is defined.
10:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

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  Further Comments

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

9  Example

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

9.1  Program Text

Program Text (g13exce.c)

9.2  Program Data

Program Data (g13exce.d)

9.3  Program Results

Program Results (g13exce.r)


nag_trans_hessenberg_controller (g13exc) (PDF version)
g13 Chapter Contents
g13 Chapter Introduction
NAG C Library Manual

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