NAG CL Interface
g13exc (trans_​hessenberg_​controller)

Settings help

CL Name Style:


1 Purpose

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>
void  g13exc (Integer n, Integer m, Nag_ControllerForm reduceto, double a[], Integer tda, double b[], Integer tdb, double u[], Integer tdu, NagError *fail)
The function may be called by the names: g13exc, nag_tsa_trans_hessenberg_controller or nag_trans_hessenberg_controller.

3 Description

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 (UBUAUT) = ( * . . . * * . . . . . . * . . . . . . . . . . . . * * . . * . . . . . . . * . . * ) n  
if reduceto=Nag_UH_Controller, or
n m (UAUTUB) = ( * . . * . . . . . . . * . . * . . . . . . . . . . . . * . . . . . . * * . . . ) 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 Integer Input
On entry: the actual state dimension, n , i.e., the order of the matrix A .
Constraint: n1 .
2: m Integer Input
On entry: the actual input dimension, m .
Constraint: m1 .
3: reduceto Nag_ControllerForm Input
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] double Input/Output
Note: the (i,j)th element of the matrix A is stored in a[(i-1)×tda+j-1].
On entry: the leading n × n part of this array must contain the state transition matrix A to be transformed.
On exit: the leading n × n part of this array contains the transformed state transition matrix U A UT .
5: tda Integer Input
On entry: the stride separating matrix column elements in the array a.
Constraint: tdan .
6: b[n×tdb] double Input/Output
Note: the (i,j)th element of the matrix B is stored in b[(i-1)×tdb+j-1].
On entry: the leading n × m part of this array must contain the input matrix B to be transformed.
On exit: the leading n × m part of this array contains the transformed input matrix U B .
7: tdb Integer Input
On entry: the stride separating matrix column elements in the array b.
Constraint: tdbm .
8: u[n×tdu] double Input/Output
Note: the (i,j)th 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 × 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 × 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 Integer Input
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 7 in the Introduction to the NAG Library CL Interface).

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

Background information to multithreading can be found in the Multithreading documentation.
g13exc makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the Users' Note for your implementation for any additional implementation-specific information.

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)