hide long namesshow long names
hide short namesshow short names
Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

NAG Toolbox: nag_matop_real_gen_rq_formq (f01qk)

 Contents

    1  Purpose
    2  Syntax
    7  Accuracy
    9  Example

Purpose

nag_matop_real_gen_rq_formq (f01qk) returns the first  rows of the real n by n orthogonal matrix PT, where P is given as the product of Householder transformation matrices.
This function is intended for use following nag_matop_real_gen_rq (f01qj).

Syntax

[a, ifail] = f01qk(wheret, m, nrowp, a, zeta, 'n', n)
[a, ifail] = nag_matop_real_gen_rq_formq(wheret, m, nrowp, a, zeta, 'n', n)

Description

P is assumed to be given by
P=PmPm-1P1  
where
Pk = I - uk ukT , uk= wk ζk 0 zk ,  
ζk is a scalar, wk is a (k-1) element vector and zk is an (n-m) element vector. wk must be supplied in the kth row of a in elements ak1,,akk-1. zk must be supplied in the kth row of a in elements akm+1,,akn and ζk must be supplied either in akk or in zetak, depending upon the argument wheret.

References

Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
Wilkinson J H (1965) The Algebraic Eigenvalue Problem Oxford University Press, Oxford

Parameters

Compulsory Input Parameters

1:     wheret – string (length ≥ 1)
Indicates where the elements of ζ are to be found.
wheret='I' (In a)
The elements of ζ are in a.
wheret='S' (Separate)
The elements of ζ are separate from a, in zeta.
Constraint: wheret='I' or 'S'.
2:     m int64int32nag_int scalar
m, the number of rows of the matrix A.
Constraint: m0.
3:     nrowp int64int32nag_int scalar
, the required number of rows of P.
If nrowp=0, an immediate return is effected.
Constraint: 0nrowpn.
4:     alda: – double array
The first dimension of the array a must be at least max1,m,nrowp.
The second dimension of the array a must be at least max1,n.
The leading m by m strictly lower triangular part of the array a, and the m by n-m rectangular part of a with top left-hand corner at element a1m+1 must contain details of the matrix P. In addition, if wheret='I', the diagonal elements of a must contain the elements of ζ.
5:     zeta: – double array
The dimension of the array zeta must be at least max1,m if wheret='S', and at least 1 otherwise
With wheret='S', the array zeta must contain the elements of ζ. If zetak=0.0 then Pk is assumed to be I, otherwise zetak is assumed to contain ζk.
When wheret='I', the array zeta is not referenced.

Optional Input Parameters

1:     n int64int32nag_int scalar
Default: the second dimension of the array a.
n, the number of columns of the matrix A.
Constraint: nm.

Output Parameters

1:     alda: – double array
The first dimension of the array a will be max1,m,nrowp.
The second dimension of the array a will be max1,n.
The first nrowp rows of the array a store the first nrowp rows of the n by n orthogonal matrix PT.
2:     ifail int64int32nag_int scalar
ifail=0 unless the function detects an error (see Error Indicators and Warnings).

Error Indicators and Warnings

Errors or warnings detected by the function:
   ifail=-1
On entry,wheret'I' or 'S',
orm<0,
orn<m,
ornrowp<0 or nrowp>n,
orlda<maxm,nrowp.
   ifail=-99
An unexpected error has been triggered by this routine. Please contact NAG.
   ifail=-399
Your licence key may have expired or may not have been installed correctly.
   ifail=-999
Dynamic memory allocation failed.

Accuracy

The computed matrix P satisfies the relation
P=Q+E,  
where Q is an exactly orthogonal matrix and
Ecε,  
ε is the machine precision (see nag_machine_precision (x02aj)), c is a modest function of n, and . denotes the spectral (two) norm. See also Accuracy in nag_matop_real_gen_rq (f01qj).

Further Comments

The approximate number of floating-point operations is given by
23m3n-m2-m-m-m, if ​m, and ​ 2323n-, if ​<m.  

Example

This example obtains the 5 by 5 orthogonal matrix P following the RQ factorization of the 3 by 5 matrix A given by
A= 2.0 2.0 1.6 2.0 1.2 2.5 2.5 -0.4 -0.5 -0.3 2.5 2.5 2.8 0.5 -2.9 .  
function f01qk_example


fprintf('f01qk example results\n\n');

a = [2,   2,    1.6,  2,    1.2;
     2.5, 2.5, -0.4, -0.5, -0.3;
     2.5, 2.5,  2.8,  0.5, -2.9];

[RQ, zeta, ifail] = f01qj(a);

wheret = 'Separate';
m     = int64(size(a,1));
nrowp = int64(size(a,2));
RQ(m+1:nrowp,1:nrowp) = 0;

[PT, ifail] = f01qk( ...
                    wheret, m, nrowp, RQ, zeta);

P = PT';
disp('Matrix P');
disp(P);


f01qk example results

Matrix P
   -0.1310   -0.5170   -0.4642   -0.5054   -0.4946
   -0.1310   -0.5170   -0.4642    0.5054    0.4946
   -0.3276    0.5499   -0.5199   -0.3957    0.4043
   -0.6551    0.2494   -0.0928    0.4946   -0.5054
   -0.6551   -0.3175    0.5385   -0.2967    0.3032


PDF version (NAG web site, 64-bit version, 64-bit version)
Chapter Contents
Chapter Introduction
NAG Toolbox

© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015