NAG CL Interface
g13ewc (trans_​hessenberg_​observer)

Settings help

CL Name Style:


1 Purpose

g13ewc reduces the matrix pair (A,C) to lower or upper observer Hessenberg form using (and optionally accumulating) the unitary state-space transformations.

2 Specification

#include <nag.h>
void  g13ewc (Integer n, Integer p, Nag_ObserverForm reduceto, double a[], Integer tda, double c[], Integer tdc, double u[], Integer tdu, NagError *fail)
The function may be called by the names: g13ewc, nag_tsa_trans_hessenberg_observer or nag_trans_hessenberg_observer.

3 Description

g13ewc computes a unitary state-space transformation U, which reduces the matrix pair (A,C) to give a compound matrix in one of the following observer Hessenberg forms:
n ( U A UT C UT ) = ( * . . . . . . * . . . . . . * . . . . . * . . . * * . . * . . . . * ) n p  
if reduceto=Nag_UH_Observer, or
n ( C UT U A UT ) = ( * . . . . * . . * * . . . * . . . . . * . . . . . . * . . . . . . * ) p n  
if reduceto=Nag_LH_Observer. If p>n , then the matrix C UT is trapezoidal and if p + 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: p Integer Input
On entry: the actual output dimension, p .
Constraint: p1 .
3: reduceto Nag_ObserverForm Input
On entry: indicates whether the matrix pair (A,C) is to be reduced to upper or lower observer Hessenberg form
reduceto=Nag_UH_Observer
Upper observer Hessenberg form).
reduceto=Nag_LH_Observer
Lower observer Hessenberg form).
Constraint: reduceto=Nag_UH_Observer or Nag_LH_Observer.
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: c[p×tdc] double Input/Output
Note: the (i,j)th element of the matrix C is stored in c[(i-1)×tdc+j-1].
On entry: the leading p × n part of this array must contain the output matrix C to be transformed.
On exit: the leading p × n part of this array contains the transformed output matrix C UT .
7: tdc Integer Input
On entry: the stride separating matrix column elements in the array c.
Constraint: tdcn .
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 tdc=value while n=value . These arguments must satisfy tdcn .
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, n=value.
Constraint: n1.
On entry, p=value.
Constraint: p1.

7 Accuracy

The algorithm is backward stable.

8 Parallelism and Performance

Background information to multithreading can be found in the Multithreading documentation.
g13ewc 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 (A,C) to upper observer Hessenberg form.

10.1 Program Text

Program Text (g13ewce.c)

10.2 Program Data

Program Data (g13ewce.d)

10.3 Program Results

Program Results (g13ewce.r)