{ } Raw JSON

bundles / scipy latest / scipy / linalg / interpolative / interp_decomp

function

scipy.linalg.interpolative:interp_decomp

source: /scipy/linalg/interpolative.py :403

Signature

def   interp_decomp ( A eps_or_k rand = True rng = None )

Summary

Compute ID of a matrix.

Extended Summary

An ID of a matrix A is a factorization defined by a rank k, a column index array idx, and interpolation coefficients proj such that

numpy.dot(A[:,idx[:k]], proj) = A[:,idx[k:]]

The original matrix can then be reconstructed as

numpy.hstack([A[:,idx[:k]],
                            numpy.dot(A[:,idx[:k]], proj)]
                        )[:,numpy.argsort(idx)]

or via the routine reconstruct_matrix_from_id. This can equivalently be written as

numpy.dot(A[:,idx[:k]],
                    numpy.hstack([numpy.eye(k), proj])
                  )[:,np.argsort(idx)]

in terms of the skeleton and interpolation matrices

B = A[:,idx[:k]]

and

P = numpy.hstack([numpy.eye(k), proj])[:,np.argsort(idx)]

respectively. See also reconstruct_interp_matrix and reconstruct_skel_matrix.

The ID can be computed to any relative precision or rank (depending on the value of eps_or_k). If a precision is specified (eps_or_k < 1), then this function has the output signature

k, idx, proj = interp_decomp(A, eps_or_k)

Otherwise, if a rank is specified (eps_or_k >= 1), then the output signature is

idx, proj = interp_decomp(A, eps_or_k)

Parameters

A : :class:`numpy.ndarray` or :class:`scipy.sparse.linalg.LinearOperator` with `rmatvec`

Matrix to be factored

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

k : int

Rank required to achieve specified relative precision if eps_or_k < 1.

idx : :class:`numpy.ndarray`

Column index array.

proj : :class:`numpy.ndarray`

Interpolation coefficients.

Aliases

  • scipy.linalg.interpolative.interp_decomp