scipy.sparse.linalg.

onenormest#

scipy.sparse.linalg.onenormest(A, t=2, itmax=5, compute_v=False, compute_w=False)[source]#

计算稀疏矩阵 1-范数的下界。

参数:
Andarray 或其他线性算子

可以转置并产生矩阵乘积的线性算子。

tint,可选

一个正参数,控制精度与时间和内存使用之间的权衡。较大的值需要更长的时间并使用更多内存,但会给出更准确的输出。

itmaxint,可选

最多使用此迭代次数。

compute_vbool,可选

如果为 True,则请求一个范数最大化线性算子输入向量。

compute_wbool,可选

如果为 True,则请求一个范数最大化线性算子输出向量。

返回值:
estfloat

稀疏矩阵 1-范数的低估。

vndarray,可选

使得 ||Av||_1 == est*||v||_1 的向量。可以将其视为线性算子的输入,该输入给出具有特别大范数的输出。

wndarray,可选

向量 Av,其具有相对较大的 1-范数。可以将其视为线性算子的输出,与输入相比,其范数相对较大。

备注

这是 [1] 中的算法 2.4。

在 [2] 中,它被描述如下。“这种算法通常需要评估大约 4t 个矩阵-向量乘积,并且几乎总是会产生一个范数估计(实际上是范数的下界),其精度在 3 个因子内。”

在版本 0.13.0 中添加。

参考资料

[1]

Nicholas J. Higham 和 Francoise Tisseur (2000), “用于矩阵 1-范数估计的块算法及其在 1-范数伪谱中的应用”。SIAM J. Matrix Anal. Appl. 第 21 卷,第 4 期,第 1185-1201 页。

[2]

Awad H. Al-Mohy 和 Nicholas J. Higham (2009), “用于矩阵指数的新缩放和平方算法”。SIAM J. Matrix Anal. Appl. 第 31 卷,第 3 期,第 970-989 页。

示例

>>> import numpy as np
>>> from scipy.sparse import csc_matrix
>>> from scipy.sparse.linalg import onenormest
>>> A = csc_matrix([[1., 0., 0.], [5., 8., 2.], [0., -1., 0.]], dtype=float)
>>> A.toarray()
array([[ 1.,  0.,  0.],
       [ 5.,  8.,  2.],
       [ 0., -1.,  0.]])
>>> onenormest(A)
9.0
>>> np.linalg.norm(A.toarray(), ord=1)
9.0