SciPy

scipy.linalg.interpolative.svd

scipy.linalg.interpolative.svd(A, eps_or_k, rand=True)[source]

Compute SVD of a matrix via an ID.

An SVD of a matrix A is a factorization:

A = numpy.dot(U, numpy.dot(numpy.diag(S), V.conj().T))

where U and V have orthonormal columns and S is nonnegative.

The SVD can be computed to any relative precision or rank (depending on the value of eps_or_k).

See also interp_decomp and id_to_svd.

Parameters:

A : numpy.ndarray or scipy.sparse.linalg.LinearOperator

Matrix to be factored, given as either a numpy.ndarray or a scipy.sparse.linalg.LinearOperator with the matvec and rmatvec methods (to apply the matrix and its adjoint).

eps_or_k : float or int

Relative error (if eps_or_k < 1) or rank (if eps_or_k >= 1) of approximation.

rand : bool, optional

Whether to use random sampling if A is of type numpy.ndarray (randomized algorithms are always used if A is of type scipy.sparse.linalg.LinearOperator).

Returns:

U : numpy.ndarray

Left singular vectors.

S : numpy.ndarray

Singular values.

V : numpy.ndarray

Right singular vectors.