bundles / scipy 1.17.1 / scipy / linalg / interpolative / interp_decomp
function
scipy.linalg.interpolative:interp_decomp
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 intRelative error (if
eps_or_k < 1) or rank (ifeps_or_k >= 1) of approximation.rand: bool, optionalWhether to use random sampling if
Ais of type numpy.ndarray (randomized algorithms are always used ifAis of type scipy.sparse.linalg.LinearOperator).rng: `numpy.random.Generator`, optionalPseudorandom number generator state. When
rngis 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 aGenerator. IfrandisFalse, the argument is ignored.
Returns
k: intRank 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