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.
  • SingularValueList[m,UpTo[k]] gives k singular values, or as many as are available.
  • 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  (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:

Introduced in 2003
 (5.0)
 |
Updated in 2007
 (6.0)
2014
 (10.0)
2015
 (10.3)