#### Previous topic

scipy.linalg.interpolative.id_to_svd

#### Next topic

scipy.linalg.interpolative.estimate_spectral_norm

# scipy.linalg.interpolative.svd

`scipy.linalg.interpolative.``svd`(A, eps_or_k, rand=True)

  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.