SingularValueDecomposition

gives the singular value decomposition for a numerical matrix m as a list of matrices {u,σ,v}, where σ is a diagonal matrix and m can be written as u.σ.ConjugateTranspose[v].
SingularValueDecomposition[{m,a}]
gives the generalized singular value decomposition of m with respect to a.
SingularValueDecomposition[m,k]
gives the singular value decomposition associated with the k largest singular values of m.
SingularValueDecomposition[m,UpTo[k]]
gives the decomposition for the k largest singular values, or as many as are available.
Details and Options

- The matrix m may be rectangular.
- The diagonal elements of σ are the singular values of m.
- SingularValueDecomposition sets to zero any singular values that would be dropped by SingularValueList.
- The option Tolerance can be used as in SingularValueList to determine which singular values will be considered to be zero. »
- u and v are column orthonormal matrices, whose transposes can be considered as lists of orthonormal vectors.
- SingularValueDecomposition[{m,a}] gives a list of matrices {{u,ua},{w,wa},v} such that m can be written as u.w.ConjugateTranspose[v] and a can be written as ua.wa.ConjugateTranspose[v]. »
- SingularValueDecomposition[m,UpTo[k]] gives the decomposition for the k largest singular values, or as many as are available.
- With the setting TargetStructure->"Structured", SingularValueDecomposition[m] returns the matrices {u,σ,v} as structured matrices.
Examples
open allclose allBasic Examples (3)
Scope (18)
Basic Uses (7)
Find the singular value decomposition of a machine-precision matrix:
Singular value decomposition of a complex matrix:
Singular value decomposition for an exact matrix:
Singular value decomposition for an arbitrary-precision matrix:
Singular value decomposition of a symbolic matrix:
The singular value decomposition of a large numerical matrix is computed efficiently:
Subsets of Singular Values (5)
Find the singular value decomposition associated with the three largest singular values of a matrix:
Unlike the full decomposition, these matrices do not recreate any part of the matrix exactly:
Find singular value decomposition associated with the three smallest singular values:
Find the "compact" decomposition associated with the nonzero singular values:
This decomposition still has sufficient information to reconstruct the matrix:
The full singular value decomposition contains a row of zeros:
Find the "thin" decomposition of a non-rectangular matrix:
This decomposition still has sufficient information to reconstruct the matrix:
The full singular value decomposition contains rows or columns of zeros in a rectangular :
Find the decomposition associated with the three largest singular values, or as many as there are if fewer:
Compute a truncated singular value decomposition for a matrix with repeated singular values:
Repeated singular values are counted separately when doing a partial decomposition:
Generalized Singular Value Decomposition (2)
Special Matrices (4)
Singular value decomposition of sparse matrices:
Find the decomposition associated to the three largest singular values:
Visualize the three right-singular vectors:
Singular value decomposition of structured matrices:
The units go with the singular values:
Singular value decomposition of an identity matrix:
and
could have been chosen to be identity matrices—the decomposition is not unique:
Singular value decomposition of HilbertMatrix:
Options (3)
Tolerance (1)
TargetStructure (2)
With TargetStructure->"Dense", the result of SingularValueDecomposition is a list of three dense matrices:
With TargetStructure->"Structured", the result of SingularValueDecomposition is a list containing two OrthogonalMatrix objects and a DiagonalMatrix:
With TargetStructure->"Dense", the result of SingularValueDecomposition is a list of three dense matrices:
With TargetStructure->"Structured", the result of SingularValueDecomposition is a list containing two UnitaryMatrix objects and a DiagonalMatrix:
Applications (11)
Geometry of SVD (5)
Compute the singular value decomposition of the 2×2 matrix
:
The action of is a rotation and possibly—as happens for the
axis in this case—a reflection:
The action of is a scaling—either a dilation or compression—along each axis:
The action of is a rotation and possibly—though not in this case—a reflection in the target space:
Compute the singular value decomposition of the 3×2 matrix :
After the rotation in the plane by the matrix, the
matrix embeds the unit circle as an ellipse in 3D:
The matrix rotates the ellipse in three dimensions:
Compute the singular value decomposition of the 2×2 matrix :
Let and
denote the columns, respectively, of
and
:
is the direction in which
is maximized, and the maximum value is
:
Similarly, is the direction in which
is minimized, and the minimum value is
:
Visualize ,
and the unit circle along with their image under the multiplication on the left by
:
is the direction in which
is maximized, and again the maximum value is
:
Similarly, is the direction in which
is minimized, and again the minimum value is
:
Visualize ,
and the unit circle along with their image under the multiplication on the right by
:
Compute the singular value decomposition of the 3×2 matrix :
Let and
denote the columns, respectively, of
and
:
is the direction in which
is maximized, and the maximum value is
:
Similarly, is the direction in which
is minimized, and the minimum value is
:
Visualize ,
and the image of the unit circle in the plane under left-multiplication by
:
is the direction in which
is maximized, and again the maximum value is
:
minimizes
—the minimum is zero, as the sphere is compressed into an ellipse in the plane:
maximizes
subject to the constraint
, and the maximum value is
:
Visualize ,
,
and the image of the unit sphere in the plane under right-multiplication by
:
Compute the singular value decomposition of the 3×3 matrix :
Let and
denote the columns, respectively, of
and
:
is the direction in which
is maximized, and the maximum value is
:
is the direction in which
is maximized if
, and the maximum value is
:
Similarly, is the direction in which
is minimized, and the minimum value is
:
Visualize ,
,
and the unit sphere along with their image under the multiplication on the left by
:
is the direction in which
is maximized, and again the maximum value is
:
is the direction in which
is maximized if
, and again the maximum value is
:
Similarly, is the direction in which
is minimized, and again the minimum value is
:
Visualize ,
,
and the unit sphere along with their image under the multiplication on the right by
:
Least Squares and Curve Fitting (6)
If the linear system has no solution, the best approximate solution is the least-squares solution. That is the solution to
, where
is the orthogonal projection of
onto the column space of
, which can be computed using the singular value decomposition. Consider the following
and
:
The linear system is inconsistent:

Find the matrix of the compact singular value decomposition of
. Its columns are orthonormal and span
:
Compute the orthogonal projection of
onto the space spanned by the columns of
:
Visualize , its projections
onto the columns of
and
:
Confirm the result using LeastSquares:
Solve the least-squares problem for the following and
using only the singular value decomposition:
Compute the compact singular value decomposition where only the nonzero singular values are kept:
By definition, , so
, the orthogonal projection of
onto
:
Thus, is the solution to the least-squares problem, as confirmed by LeastSquares:
Solve the least-squares problem for the following and
two different ways: by projecting onto the column space of
using just the
matrix of the singular value decomposition, and the direct solution using the full decomposition. Compare and explain the results:
Compute the compact singular value decomposition of:
Compute the orthogonal projection of
onto
:
The direct solution can be found using , as both
and
are real-valued:
While x and xPerp are different, both solve the least-squares problem because m.x==m.xPerp:
The two solutions differ by an element of NullSpace[m]:
Note that LeastSquares[m,b] gives the result using the direct method:
For the matrices and
that follow, find a matrix
that minimizes
:
One solution, in this case unique, is given by :
This result could also have been obtained using LeastSquares[m,b]:
Confirm the answer using Minimize:
SingularValueDecomposition can be used to find a best-fit curve to data. Consider the following data:
Extract the and
coordinates from the data:
Construct a design matrix, whose columns are and
, for fitting to a line
:
Get the coefficients and
for a linear least‐squares fit using a thin singular value decomposition:
Verify the coefficients using Fit:
Plot the best-fit curve along with the data:
Find the best-fit parabola to the following data:
Extract the and
coordinates from the data:
Construct a design matrix, whose columns are ,
and
, for fitting to a line
:
Get the coefficients ,
and
for a least‐squares fit:
Verify the coefficients using Fit:
Properties & Relations (13)
The singular value decomposition {u,σ,v} of m decomposes m as u.σ.ConjugateTranspose[v]:
If a is an n×m matrix with decomposition {u,σ,v}, then u is an n×n matrix:
SingularValueDecomposition[m] is built from the eigensystems of and
:
The columns of are the eigenvectors:
The columns of are the eigenvectors:
Since has fewer rows than columns, the diagonal entries of
are
:
The first right singular vector can be found by maximizing over all unit vectors:
Each subsequent vector is a maximizer with the constraint that it is perpendicular to all previous vectors:
Compare the with the
found by SingularValueDecomposition; they are the same up to sign:
The analogous statement holds for the left singular vectors with :
The diagonal entries of are the respective maximum values:
If is the smaller of the dimensions of
, the first
columns of
and
are related by
:
The first columns of
and
are also related by
:
If m is a square matrix, the product of the diagonal elements of equals Abs[Det[m]]:
If is a normal matrix, both
and
are composed of the same vectors:
The vectors will appear in a different order unless is positive semidefinite and Hermitian:
The diagonal entries of equal Abs[Eigenvalues[m]]:
For positive definite and Hermitian , SingularValueDecomposition and Eigensystem coincide:
Their columns are unit eigenvectors of :
The nonzero elements of are the eigenvalues of
:
MatrixRank[m] equals the number of nonzero singular values:
The compact decomposition that only keeps nonzero singular values can compute PseudoInverse[m]:
A matrix m that is an outer product of two vectors has MatrixRank[m]==1:
The nonzero singular value of m is the product of the norms of the vectors:
The corresponding left and right singular vectors are the input vectors, normalized:
SingularValueDecomposition[{m,a}] decomposes m as u.w.ConjugateTranspose[v]:
It decomposes a as ua.wa.ConjugateTranspose[v]:
SingularValueDecomposition[{m,a}] can be related to Eigensystem[{m.m,a.a}]:
The diagonal elements of w are /
:
The diagonal elements of wa are 1/:
The columns of v are scaled multiples of the columns of Conjugate[Inverse[vλ]]:
The magnitude of the scaling is the ratio of the corresponding diagonal elements of w and vλ.m.m.vλ:
Equivalently, it is the ratio of the corresponding diagonal elements of wa and vλ.ma.ma.vλ:
Text
Wolfram Research (2003), SingularValueDecomposition, Wolfram Language function, https://reference.wolfram.com/language/ref/SingularValueDecomposition.html (updated 2024).
CMS
Wolfram Language. 2003. "SingularValueDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/SingularValueDecomposition.html.
APA
Wolfram Language. (2003). SingularValueDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SingularValueDecomposition.html