DSGSVD#

Dense Generalized Singular Value Decomposition.

Notes#

The problem is expressed as AX = UC, BX = VS, where A and B are matrices with the same number of columns, m, U and V are orthogonal (unitary), and X is an mxm invertible matrix. The DS object does not expose matrices C and S, instead the singular values sigma, which are the ratios c_i/s_i, are returned in the arguments of DSSolve(). Note that the number of columns of the returned X, U, V may be smaller in the case that some c_i or s_i are zero.

The number of rows of A (and U) is the value n passed with DSSetDimensions(). The number of columns m and the number of rows of B (and V) must be set via DSGSVDSetDimensions().

Internally, LAPACK’s representation is used, U’AQ = C*[0 R], V’BQ = S*[0 R], where X = Q*inv(R) is computed at the end of DSSolve().

If the compact storage format is selected, then a simplified problem is solved, where A and B are bidiagonal (possibly with an arrow), and [A;B] is assumed to have orthonormal columns. We consider two cases: (1) A and B are square mxm upper bidiagonal, and (2) A is lower bidiagonal with m+1 rows and B is square upper bidiagonal. In these cases, R=I so it corresponds to the CS decomposition. The first matrix is stored in two diagonals of DS_MAT_T, while the second matrix is stored in DS_MAT_D and the remaining diagonal of DS_MAT_T.

Allowed arguments of DSVectors() are DS_MAT_U, DS_MAT_V and DS_MAT_X.

Used DS matrices#

  • DS_MAT_A - first problem matrix

  • DS_MAT_B - second problem matrix

  • DS_MAT_T - first upper bidiagonal matrix (if compact storage is selected)

  • DS_MAT_D - second upper bidiagonal matrix (if compact storage is selected)

  • DS_MAT_U - (upper) left generalized singular vectors

  • DS_MAT_V - (lower) left generalized singular vectors

  • DS_MAT_X - right generalized singular vectors

Implemented methods#

  • 0 - Lapack (_ggsvd3 if available, or _ggsvd)

See Also#

DSCreate(), DSSetType(), DSType, DSGSVDSetDimensions()

Level#

beginner

Location#

src/sys/classes/ds/impls/gsvd/dsgsvd.c


Index of all DS routines Table of Contents for all manual pages Index of all manual pages