As described in §2.4.7, there are several problems closely related to the SVD whose solutions we describe here. This list is not exhaustive, because the use of low rank approximations to matrices (for which the ``optimal'' one is supplied by the truncated SVD) is very widespread in applications. Depending on the application, it may be appropriate to use an SVD algorithm described here or another low rank approximation.
Software using transformation methods (i.e., suitable for dense matrices)
is available in LAPACK driver routine xGGSVD, for the more general
case of being singular or
by
. It is also available as
the MATLAB command gsvd. No ScaLAPACK software is available.
The advantage of using these algorithms is accuracy only; that is,
when
is ill-conditioned they can be much more accurate than
simply forming
and computing its SVD. But they are also
rather slower, so if
is well-conditioned, it is better to
just form and compute the SVD of
.
When and
are large and sparse and
is square, nonsingular,
and can be factored, we recommend applying SVD algorithms discussed above
that only require multiplication by the product
and its transpose.
If is not square, we recommend finding the eigenvalues and
eigenvectors of the generalized Hermitian eigenvalue problem
, using techniques from Chapter 5.
This is because the eigendecomposition of
is
and
.
It is not necessary to compute the thin or truncated SVD of explicitly
to solve the least squares problem. For dense problems, LAPACK driver
routine xGELSD is the method of choice,
using divide-and-conquer to solve the least squares problem quickly
without forming an explicit thin SVD. In ScaLAPACK, there is only a
routine for computing a thin SVD, PxGESVD, which could then be
used for the least squares problem.
For sparse problems, we can use
the approximate factorization
derived from
equations (6.7) or (6.8) to get
.