scipy.linalg.interpolative.interp_decomp

scipy.linalg.interpolative.interp_decomp(A, eps_or_k, rand=True)[源代码]

矩阵的计算ID。

矩阵的ID A 是由等级定义的因子分解 k ,列索引数组 idx 和插值系数 proj 以便::

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

然后可以将原始矩阵重建为::

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

或者通过例程 reconstruct_matrix_from_id 。它可以等效地写成::

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

根据骨架和插值矩阵:

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

和:

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

分别为。另请参阅 reconstruct_interp_matrixreconstruct_skel_matrix

ID可以计算为任何相对精度或等级(取决于 eps_or_k )。如果指定了精度 (eps_or_k < 1 ),则此函数具有输出签名::

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

否则,如果指定了排名 (eps_or_k >= 1 ),则输出签名为::

idx, proj = interp_decomp(A, eps_or_k)
参数
A : numpy.ndarrayscipy.sparse.linalg.LinearOperator 使用 rmatvec带有rmatvec的numpy.ndarray或scipy.parse.linalg.LinearOperator

要分解的矩阵

eps_or_k浮点型或整型

相对误差(如果 eps_or_k < 1 )或排名(如果 eps_or_k >= 1 )的近似值。

rand布尔值,可选

如果出现以下情况,是否使用随机采样 A 类型为 numpy.ndarray (如果满足以下条件,则始终使用随机化算法 A 类型为 scipy.sparse.linalg.LinearOperator )。

退货
k集成

如果满足以下条件,则需要排名才能达到指定的相对精度 eps_or_k < 1

idx : numpy.ndarraynumpy.ndarray

列索引数组。

proj : numpy.ndarraynumpy.ndarray

插值系数。