# SingularValueList

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(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: