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

Compute SVD of a matrix via an ID.

An SVD of a matrix A is a factorization:

A = U @ np.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.

Anumpy.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_kfloat or int

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

randbool, 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).


NumPy generator for the randomization steps in the algorithm. If rand is False, the argument is ignored.


2D array of left singular vectors.


1D array of singular values.


2D array right singular vectors.