gsvd {geigen} | R Documentation |
Computes the generalized singular value decomposition of a pair of matrices.
gsvd(A,B)
A |
a matrix with |
B |
a matrix with |
The matrix A is a m
-by-n
matrix and the matrix B is a p
-by-n
matrix.
This function decomposes both matrices; if either one is complex than the other matrix
is coerced to be complex.
The Generalized Singular Value Decomposition of numeric matrices A
and B
is given as
A = U D_1 [0\, R] Q^T
and
B = V D_2 [0\, R] Q^T
where
U
an m\times m
orthogonal matrix.
V
a p\times p
orthogonal matrix.
Q
an n\times n
orthogonal matrix.
R
an r
-by-r
upper triangular non singular matrix and the matrix
[0\, R]
is an r
-by-n
matrix. The quantity r
is the rank of
the matrix \left( \begin{array}{c} A \\B \end{array} \right)
with r \le n
.
D_1
,D_2
are quasi diagonal matrices and nonnegative and satisfy
D_1^T D_1 + D_2^T D_2 = I
.
D_1
is an m
-by-r
matrix and D_2
is a p
-by-r
matrix.
The Generalized Singular Value Decomposition of complex matrices A
and B
is given as
A = U D_1 [0\, R] Q^H
and
B = V D_2 [0\, R] Q^H
where
U
an m\times m
unitary matrix.
V
a p\times p
unitary matrix.
Q
an n\times n
unitary matrix.
R
an r
-by-r
upper triangular non singular matrix and the matrix
[0\, R]
is an r
-by-n
matrix. The quantity r
is the rank of
the matrix \left( \begin{array}{c} A \\B \end{array} \right)
with r \le n
.
D_1
,D_2
are quasi diagonal matrices and nonnegative and satisfy
D_1^T D_1 + D_2^T D_2 = I
.
D_1
is an m
-by-r
matrix and D_2
is a p
-by-r
matrix.
For details on this decomposition and the structure of the matrices D_1
and D_2
see http://www.netlib.org/lapack/lug/node36.html.
The return value is a list containing the following components
A
the upper triangular matrix or a part of R
.
B
lower part of the triangular matrix R
if
k+l>m
(see below).
m
number of rows of A
.
k
r{-}l
. The number of rows of the matrix R
is k{+}l
.
The first k
generalized singular values are infinite.
l
effective rank of the input matrix B
.
The number of finite generalized singular values after the first k
infinite ones.
alpha
a numeric vector with length n
containing
the numerators of the generalized singular values in
the first (k{+}l)
entries.
beta
a numeric vector with length n
containing
the denominators of the generalized singular value in
the first (k{+}l)
entries.
U
the matrix U
.
V
the matrix V
.
Q
the matrix Q
.
For a detailed description of these items see http://www.netlib.org/lapack/lug/node36.html. Auxiliary functions are provided for extraction and manipulation of the various items.
gsvd
uses the LAPACK routines DGGSVD3
and ZGGSVD3
from Lapack 3.8.0.
LAPACK is from http://www.netlib.org/lapack.
The decomposition is fully explained in http://www.netlib.org/lapack/lug/node36.html.
Anderson. E. and ten others (1999)
LAPACK Users' Guide. Third Edition. SIAM.
Available on-line at
http://www.netlib.org/lapack/lug/lapack_lug.html.
See the section Generalized Eigenvalue and Singular Value Problems
(http://www.netlib.org/lapack/lug/node33.html) and
the section Generalized Singular Value Decomposition (GSVD)
(http://www.netlib.org/lapack/lug/node36.html).
A <- matrix(c(1,2,3,3,2,1,4,5,6,7,8,8), nrow=2, byrow=TRUE)
B <- matrix(1:18,byrow=TRUE, ncol=6)
A
B
z <- gsvd(A,B)
z