Template for the Solution of Algebraic Eigenvalue Problems:
  A Practical Guide

Software Repository

Chapter 6: Singular Value Decomposition

In this chapter we consider the singular value decomposition (SVD) of the m-by-n matrix A. We assume without loss of generality that m > = n; if m < n consider A^*. As described in section 2.4, this decomposition may be written A = U Sigma V^*, where U = [u_1,...,u_m] is an m-by-m unitary matrix, V = [v_1,...,v_n] is an n-by-n unitary matrix, and Sigma is an m-by-n diagonal matrix with entries Sigma_{ii} = sigma_i for i=1,..,n. The u_i are the left singular vectors, the v_i are the right singular vectors, and the sigma_i are the singular values. The singular values are nonnegative and sorted so that sigma_1 >= sigma_2 >= ... >= sigma_n >= 0. The number r of nonzero singular values is the rank of A. If A is real, U and V are real and orthogonal.

Software

Section Package Name Language Comments
6.2 LAPACK Fortran 77,
C++ wrapper
direct methods
6.3 ARPACK/
PARPACK
Fortran 77,
C++ wrapper
implicitly restarted Lanczos method
6.3 PLANSO Fortran 77 thick-restart Lanczos, compare to PARPACK
6.3 SVDPACK Fortran 77, C four SVD methods for large sparse matrices
6.3 PROPACK Fortran 77,
MATLAB
SVD solver for large sparse matrices
(also Lanczos method)

list by chapter repository home