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 \(m\times m\) invertible matrix. The DS object does not
expose matrices \(C\) and \(S\), instead the singular values \(\sigma_i\), 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 = QR^{-1}\) 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 the stacked matrix \(\begin{bmatrix}A^* &B^*\end{bmatrix}^*\) is assumed to have orthonormal columns. We consider two cases,
\(A\) and \(B\) are square \(m\times m\) upper bidiagonal, or
\(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 [Golub and van Loan, 1996].
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 matrixDS_MAT_B- second problem matrixDS_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 vectorsDS_MAT_V- (lower) left generalized singular vectorsDS_MAT_X- right generalized singular vectors
Implemented methods#
0 - Lapack (
_ggsvd3if available, or_ggsvd)
References#
G. H. Golub and C. F. van Loan. Matrix Computations. The Johns Hopkins University Press, Baltimore, MD, third edition, 1996.
See Also#
DS: Direct Solver (or Dense System), 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