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