当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy interpolative.interp_decomp用法及代码示例


本文简要介绍 python 语言中 scipy.linalg.interpolative.interp_decomp 的用法。

用法:

scipy.linalg.interpolative.interp_decomp(A, eps_or_k, rand=True)#

计算矩阵的 ID。

矩阵 A 的 ID 是由秩 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_matrix reconstruct_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.ndarray或者scipy.sparse.linalg.LinearOperatorrmatvec

要分解的矩阵

eps_or_k 浮点数或int

近似的相对误差(如果eps_or_k < 1)或等级(如果eps_or_k >= 1)。

rand 布尔型,可选

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

返回

k int

如果eps_or_k < 1,则达到指定的相对精度所需的等级。

idx numpy.ndarray

列索引数组。

proj numpy.ndarray

插值系数。

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.interpolative.interp_decomp。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。