R: Generalized Singular Value Decomposition

gsvd {geigen} | R Documentation

## Generalized Singular Value Decomposition

### Description

Computes the generalized singular value decomposition of a pair of matrices.

### Usage

    gsvd(A,B)

### Arguments

`A` | a matrix with m rows and n columns.
`B` | a matrix with p rows and n columns.

### Details

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] * t(Q)

and

B = V * D_2 * [0 R] * t(Q)

where

U

  an m-by-m orthogonal matrix.

V

  a p-by-p orthogonal matrix.

Q

  an n-by-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 rbind(A,B) with r <= n.

D_1,D_2

  are quasi diagonal matrices and nonnegative and satisfy t(D_1)%*% D_1 + t(D_2) %*% D_2. 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] * t(Q)

and

B = V * D_2 * [0 R] * t(Q)

where

U

  an m-by-m unitary matrix.

V

  a p-by-p unitary matrix.

Q

  an n-by-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 rbind(A,B) with r <= n.

D_1,D_2

  are quasi diagonal matrices and nonnegative and satisfy t(D_1)%*% D_1 + t(D_2) %*% D_2. 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.

### Value

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.

### Source

`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.

### References

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).

### See Also

gsvd.aux

### Examples

    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

[Package geigen version 2.3 Index]