Skip to main content
`Ctrl`+`K`
scipy.linalg.interpolative.

# svd

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

  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`.

  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`).

    rng `numpy.random.Generator`, optional

      Pseudorandom number generator state. When rng is None, a new `numpy.random.Generator` is created using entropy from the operating system. Types other than `numpy.random.Generator` are passed to `numpy.random.default_rng` to instantiate a `Generator`. If rand is `False`, the argument is ignored.

  Returns:
    U `numpy.ndarray`

      2D array of left singular vectors.

    S `numpy.ndarray`

      1D array of singular values.

    V `numpy.ndarray`

      2D array right singular vectors.