PDF version (NAG web site
, 64-bit version, 64-bit version)
NAG Toolbox: nag_lapack_dtgsja (f08ye)
Purpose
nag_lapack_dtgsja (f08ye) computes the generalized singular value decomposition (GSVD) of two real upper trapezoidal matrices and , where is an by matrix and is a by matrix.
and
are assumed to be in the form returned by
nag_lapack_dggsvp (f08ve).
Syntax
[
a,
b,
alpha,
beta,
u,
v,
q,
ncycle,
info] = f08ye(
jobu,
jobv,
jobq,
k,
l,
a,
b,
tola,
tolb,
u,
v,
q, 'm',
m, 'p',
p, 'n',
n)
[
a,
b,
alpha,
beta,
u,
v,
q,
ncycle,
info] = nag_lapack_dtgsja(
jobu,
jobv,
jobq,
k,
l,
a,
b,
tola,
tolb,
u,
v,
q, 'm',
m, 'p',
p, 'n',
n)
Description
nag_lapack_dtgsja (f08ye) computes the GSVD of the matrices
and
which are assumed to have the form as returned by
nag_lapack_dggsvp (f08ve)
where the
by
matrix
and the
by
matrix
are nonsingular upper triangular,
is
by
upper triangular if
and is
by
upper trapezoidal otherwise.
nag_lapack_dtgsja (f08ye) computes orthogonal matrices
,
and
, diagonal matrices
and
, and an upper triangular matrix
such that
Optionally , and may or may not be computed, or they may be premultiplied by matrices , and respectively.
If
then
,
and
have the form
where
.
If
then
,
and
have the form
where
.
In both cases the diagonal matrix
has non-negative diagonal elements, the diagonal matrix
has positive diagonal elements, so that
is nonsingular, and
. See Section 2.3.5.3 of
Anderson et al. (1999) for further information.
References
Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J J, Du Croz J J, Greenbaum A, Hammarling S, McKenney A and Sorensen D (1999)
LAPACK Users' Guide (3rd Edition) SIAM, Philadelphia
http://www.netlib.org/lapack/lug
Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
Parameters
Compulsory Input Parameters
- 1:
– string (length ≥ 1)
-
If
,
u must contain an orthogonal matrix
on entry, and the product
is returned.
If
,
u is initialized to the unit matrix, and the orthogonal matrix
is returned.
If , is not computed.
Constraint:
, or .
- 2:
– string (length ≥ 1)
-
If
,
v must contain an orthogonal matrix
on entry, and the product
is returned.
If
,
v is initialized to the unit matrix, and the orthogonal matrix
is returned.
If , is not computed.
Constraint:
, or .
- 3:
– string (length ≥ 1)
-
If
,
q must contain an orthogonal matrix
on entry, and the product
is returned.
If
,
q is initialized to the unit matrix, and the orthogonal matrix
is returned.
If , is not computed.
Constraint:
, or .
- 4:
– int64int32nag_int scalar
- 5:
– int64int32nag_int scalar
-
k and
l specify the sizes,
and
, of the subblocks of
and
, whose GSVD is to be computed by
nag_lapack_dtgsja (f08ye).
- 6:
– double array
-
The first dimension of the array
a must be at least
.
The second dimension of the array
a must be at least
.
The by matrix .
- 7:
– double array
-
The first dimension of the array
b must be at least
.
The second dimension of the array
b must be at least
.
The by matrix .
- 8:
– double scalar
- 9:
– double scalar
-
tola and
tolb are the convergence criteria for the Jacobi–Kogbetliantz iteration procedure. Generally, they should be the same as used in the preprocessing step performed by
nag_lapack_zggsvp (f08vs), say
where
is the
machine precision.
- 10:
– double array
-
The first dimension,
, of the array
u must satisfy
- if or , ;
- otherwise .
The second dimension of the array
u must be at least
if
or
, and at least
otherwise.
If
,
u must contain an
by
matrix
(usually the orthogonal matrix returned by
nag_lapack_dggsvp (f08ve)).
- 11:
– double array
-
The first dimension,
, of the array
v must satisfy
- if or , ;
- otherwise .
The second dimension of the array
v must be at least
if
or
, and at least
otherwise.
If
,
v must contain an
by
matrix
(usually the orthogonal matrix returned by
nag_lapack_dggsvp (f08ve)).
- 12:
– double array
-
The first dimension,
, of the array
q must satisfy
- if or , ;
- otherwise .
The second dimension of the array
q must be at least
if
or
, and at least
otherwise.
If
,
q must contain an
by
matrix
(usually the orthogonal matrix returned by
nag_lapack_dggsvp (f08ve)).
Optional Input Parameters
- 1:
– int64int32nag_int scalar
-
Default:
the first dimension of the array
a.
, the number of rows of the matrix .
Constraint:
.
- 2:
– int64int32nag_int scalar
-
Default:
the first dimension of the array
b.
, the number of rows of the matrix .
Constraint:
.
- 3:
– int64int32nag_int scalar
-
Default:
the second dimension of the array
a.
, the number of columns of the matrices and .
Constraint:
.
Output Parameters
- 1:
– double array
-
The first dimension of the array
a will be
.
The second dimension of the array
a will be
.
If
,
contains the
by
upper triangular matrix
.
If , contains the first rows of the by upper triangular matrix , and the submatrix is returned in .
- 2:
– double array
-
The first dimension of the array
b will be
.
The second dimension of the array
b will be
.
If , contains the submatrix of .
- 3:
– double array
-
See the description of
beta.
- 4:
– double array
-
alpha and
beta contain the generalized singular value pairs of
and
;
- , , for , and
- if ,
, , for , or
- if ,
, , for and
, , for .
Furthermore, if ,
, for .
- 5:
– double array
-
The first dimension,
, of the array
u will be
- if or , ;
- otherwise .
The second dimension of the array
u will be
if
or
and
otherwise.
If
,
u contains the product
.
If
,
u contains the orthogonal matrix
.
If
,
u is not referenced.
- 6:
– double array
-
The first dimension,
, of the array
v will be
- if or , ;
- otherwise .
The second dimension of the array
v will be
if
or
and
otherwise.
If
,
v contains the orthogonal matrix
.
If
,
v contains the product
.
If
,
v is not referenced.
- 7:
– double array
-
The first dimension,
, of the array
q will be
- if or , ;
- otherwise .
The second dimension of the array
q will be
if
or
and
otherwise.
If
,
q contains the orthogonal matrix
.
If
,
q contains the product
.
If
,
q is not referenced.
- 8:
– int64int32nag_int scalar
-
The number of cycles required for convergence.
- 9:
– int64int32nag_int scalar
unless the function detects an error (see
Error Indicators and Warnings).
Error Indicators and Warnings
-
If , parameter had an illegal value on entry. The parameters are numbered as follows:
1:
jobu, 2:
jobv, 3:
jobq, 4:
m, 5:
p, 6:
n, 7:
k, 8:
l, 9:
a, 10:
lda, 11:
b, 12:
ldb, 13:
tola, 14:
tolb, 15:
alpha, 16:
beta, 17:
u, 18:
ldu, 19:
v, 20:
ldv, 21:
q, 22:
ldq, 23:
work, 24:
ncycle, 25:
info.
It is possible that
info refers to a parameter that is omitted from the MATLAB interface. This usually indicates that an error in one of the other input parameters has caused an incorrect value to be inferred.
-
-
The procedure does not converge after cycles.
Accuracy
The computed generalized singular value decomposition is nearly the exact generalized singular value decomposition for nearby matrices
and
, where
and
is the
machine precision. See Section 4.12 of
Anderson et al. (1999) for further details.
Further Comments
The complex analogue of this function is
nag_lapack_ztgsja (f08ys).
Example
This example finds the generalized singular value decomposition
of the matrix pair
, where
Open in the MATLAB editor:
f08ye_example
function f08ye_example
fprintf('f08ye example results\n\n');
m = 4;
n = 3;
a = [ 1 2 3;
3 2 1;
4 5 6;
7 8 8];
p = 2;
b = [-2 -3 3;
4 6 5];
tola = max(m,n)*norm(a,1)*x02aj;
tolb = max(p,n)*norm(a,1)*x02aj;
[S, T, k, l, U, V, Q, info] = ...
f08ve( ...
'U', 'V', 'Q', a, b, tola, tolb);
[S, T, alpha, beta, U, V, Q, ncycle, info] = ...
f08ye( ...
'U', 'V', 'Q', k, l, S, T, tola, tolb, U, V, Q);
fprintf('Number of infinite generalized singular values = %3d\n',k);
fprintf('Number of finite generalized singular values = %3d\n',l);
fprintf('Effective rank of the matrix pair (A^T B^T)^T = %3d\n',k+l);
fprintf('Number of cycles of the Kogbetliantz method = %3d\n\n',ncycle);
disp('Finite generalized singular values');
disp(alpha(k+1:k+l)./beta(k+1:k+l));
f08ye example results
Number of infinite generalized singular values = 1
Number of finite generalized singular values = 2
Effective rank of the matrix pair (A^T B^T)^T = 3
Number of cycles of the Kogbetliantz method = 2
Finite generalized singular values
1.3151
0.0802
PDF version (NAG web site
, 64-bit version, 64-bit version)
© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015