SingularValueList

SingularValueList[m]

gives a list of the nonzero singular values of a matrix m.

SingularValueList[{m,a}]

gives the generalized singular values of m with respect to a.

SingularValueList[m,k]

gives the k largest singular values of m.

SingularValueList[{m,a},k]

gives the k largest generalized singular values of m.

Details and Options

  • Singular values are sorted from largest to smallest.
  • Repeated singular values appear with their appropriate multiplicity.
  • By default, singular values are kept only when they are larger than 100 times 10-p, where p is Precision[m].
  • SingularValueList[m,Tolerance->t] keeps only singular values that are at least t times the largest singular value.
  • SingularValueList[m,Tolerance->0] returns all singular values.
  • The matrix m can be rectangular; the total number of singular values is always Min[Dimensions[m]].
  • Exact and symbolic matrices can be used, with zero tolerance assumed by default.
  • The singular values can be obtained from Sqrt[Eigenvalues[ConjugateTranspose[m].m]].

Examples

open allclose all

Basic Examples  (2)

Compute the singular values of an invertible matrix:

Compute the nonzero singular values of a singular matrix:

There are only two, rather than three, because that is the rank of the matrix:

Scope  (19)

Basic Uses  (7)

Find the nonzero singular values of a machine-precision matrix:

Singular values of a complex matrix:

Singular values for an exact matrix:

Singular values for an arbitrary-precision matrix:

Singular values of a symbolic matrix:

The singular values of large numerical matrices are computed efficiently:

Singular values of a non-square matrix:

Subsets of Singular Values  (5)

Find the three largest singular values:

And the three smallest singular values:

Find the four largest singular values, including zero values, or as many as there are if fewer:

Zero singular values are included when computing the smallest singular values:

Repeated singular values are listed multiple times:

Repeated singular values are counted separately when extracting a subset of the singular values:

Generalized Singular Values  (3)

Generalized machine-precision singular values:

Find the two smallest generalized singular values:

Find the generalized singular values of a machine-precision complex matrix:

Special Matrices  (4)

Singular values of sparse matrices:

Find the three largest singular values:

Singular values of structured matrices:

Use a different structure:

The units go with the singular values:

IdentityMatrix always has all-one singular values:

Singular values of HilbertMatrix:

Options  (2)

Tolerance  (2)

Compute the singular values larger than of the largest singular value:

Setting Tolerance to will directly compute the same set of singular values:

m is a 16×16 Hilbert matrix:

The matrix is positive definite, so with exact arithmetic there are 16 nonzero singular values:

Many of the singular values are too small to show up at machine precision:

Setting the tolerance to zero will make them all show up:

Because of numerical roundoff, the values are not computed accurately:

Applications  (4)

Find the maximum value of TemplateBox[{{m, ., x}}, Norm]/TemplateBox[{x}, Norm] for the following matrix :

The maximum is equal to the largest singular value of :

Confirm the result using MaxValue:

Find the minimum value of TemplateBox[{{m, ., x}}, Norm] subject to TemplateBox[{x}, Norm]=1 for the following matrix :

Because the matrix has at least as many rows as columns, minimum is the smallest singular value of :

Confirm the result using MinValue:

The operator norm of a matrix, also called the spectral norm or 2-norm, is defined as the maximum value of TemplateBox[{{m, ., x}}, Norm] subject to to the constraint the TemplateBox[{x}, Norm]=1. Find the operator norm of the follow :

The maximum of TemplateBox[{{m, ., x}}, Norm], and thus the norm, is the largest singular value of :

Verify the result using Norm:

Use the singular values of to compute its norm, the norm of TemplateBox[{m}, Inverse], and the condition number of the matrices:

Find the singular values of :

The 2-norm of a matrix is equal to the largest singular value:

The 2-norm of the inverse is equal to the reciprocal of the smallest singular value:

Verify using Norm:

The condition number is TemplateBox[{m, 2}, Norm2] TemplateBox[{TemplateBox[{m}, Inverse, SyntaxForm -> SuperscriptBox], 2}, Norm2] and thus equals the ratio of largest to smallest singular values:

Properties & Relations  (8)

The nonzero singular values of are the square roots of the nonzero eigenvalues of m.TemplateBox[{m}, ConjugateTranspose]:

Equivalently, they are the square roots of the nonzero eigenvalues of TemplateBox[{m}, ConjugateTranspose].m:

The complete set of singular values of is the square root of the eigenvalues of either TemplateBox[{m}, ConjugateTranspose].m or TemplateBox[{{m, ., m}}, ConjugateTranspose]:

The product that produces the smaller square matrix, in this case TemplateBox[{m}, ConjugateTranspose].m, should be used:

The order that produces a larger square matrix has additional zero eigenvalues:

m and ConjugateTranspose[m] have the same singular values:

For a normal matrix n, the singular values equal Abs[Eigenvalues[n]]:

MatrixRank[m] equals the number of nonzero singular values:

The singular values of TemplateBox[{m}, Inverse] are the reciprocals of the singular values of in opposite order:

The generalized singular values of to equal the roots of the generalized eigenvalues of TemplateBox[{m}, ConjugateTranspose].m to TemplateBox[{a}, ConjugateTranspose].a:

Unlike ordinary singular values, they are not related to the generalized eigenvalues of TemplateBox[{{m, ., m}}, ConjugateTranspose] to TemplateBox[{{a, ., a}}, ConjugateTranspose]:

The generalized singular values of with respect to differ from those of TemplateBox[{m}, ConjugateTranspose] with respect to TemplateBox[{a}, ConjugateTranspose]:

Possible Issues  (1)

s is a large sparse matrix:

Computing all of the singular values uses dense linear algebra, which may be prohibitive:

Computing just a few will typically be much faster:

Wolfram Research (2003), SingularValueList, Wolfram Language function, https://reference.wolfram.com/language/ref/SingularValueList.html (updated 2015).

Text

Wolfram Research (2003), SingularValueList, Wolfram Language function, https://reference.wolfram.com/language/ref/SingularValueList.html (updated 2015).

CMS

Wolfram Language. 2003. "SingularValueList." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015. https://reference.wolfram.com/language/ref/SingularValueList.html.

APA

Wolfram Language. (2003). SingularValueList. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SingularValueList.html

BibTeX

@misc{reference.wolfram_2021_singularvaluelist, author="Wolfram Research", title="{SingularValueList}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/SingularValueList.html}", note=[Accessed: 25-May-2022 ]}

BibLaTeX

@online{reference.wolfram_2021_singularvaluelist, organization={Wolfram Research}, title={SingularValueList}, year={2015}, url={https://reference.wolfram.com/language/ref/SingularValueList.html}, note=[Accessed: 25-May-2022 ]}