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


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


gives the k largest singular values of m.


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]].


open allclose all

Basic Examples  (1)

There are only two nonzero singular values since the matrix is singular:

Scope  (4)

Exact input:

m is a 4×3 matrix:

Singular values computed using exact arithmetic:

Singular values computed using machine arithmetic:

Singular values computed using 30-digit precision arithmetic:

Singular values for a random complex-valued 2×5 matrix:

Find the 4 largest singular values, or as many as there are if fewer:

Generalizations & Extensions  (2)

Find the largest 3 singular values for a large sparse matrix:

Symbolic input:

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  (1)

m is a random 10×10 matrix:

Find the singular values of m:

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:

The condition number of the matrix is equal to the ratio of largest to smallest singular values:

Properties & Relations  (1)

m is a matrix of random size having random entries:

Find the singular values of m:

These are equal to the square roots of the nonzero eigenvalues of m.Transpose[m]:

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, (updated 2015).


Wolfram Research (2003), SingularValueList, Wolfram Language function, (updated 2015).


@misc{reference.wolfram_2020_singularvaluelist, author="Wolfram Research", title="{SingularValueList}", year="2015", howpublished="\url{}", note=[Accessed: 27-February-2021 ]}


@online{reference.wolfram_2020_singularvaluelist, organization={Wolfram Research}, title={SingularValueList}, year={2015}, url={}, note=[Accessed: 27-February-2021 ]}


Wolfram Language. 2003. "SingularValueList." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015.


Wolfram Language. (2003). SingularValueList. Wolfram Language & System Documentation Center. Retrieved from