上一主题

numpy.linalg.norm

下一主题

numpy.linalg.det

numpy.linalg.cond

numpy.linalg.cond(x, p=None)[source]

计算矩阵的条件数。

此函数能够根据p的值(参见下面的参数)使用七种不同范数中的一种返回条件编号。

参数:

x:(...,M,N)array_like

要求条件数的矩阵。

p:{None,1,-1,2,-2,inf,-inf,'fro'},可选

规范的顺序:

p 矩阵的范数
没有 2范数,使用SVD直接计算
'fro' Frobenius范数
inf max(sum(abs(x),axis = 1))
-inf min(sum(abs(x),axis = 1))
1 max(sum(abs(x),axis = 0))
-1 min(sum(abs(x),axis = 0))
2 2范数(最大唱。值)
-2 最小奇异值

inf表示numpy.inf对象,Frobenius范数是平方和范数的根。

返回:

c:{float,inf}

矩阵的条件数。可能是无限的。

也可以看看

numpy.linalg.norm

笔记

条件数x被定义为x乘以x [R37] t3的倒数范数的范数>;该范数可以是通常的L2范数(平方和的根)或多个其他矩阵范数中的一个。

参考文献

[R37]12 G.Strang,Linear Algebra and Its Applications,Orlando,FL,Academic Press, Inc.,1980,285.

例子

>>> from numpy import linalg as LA
>>> a = np.array([[1, 0, -1], [0, 1, 0], [1, 0, 1]])
>>> a
array([[ 1,  0, -1],
       [ 0,  1,  0],
       [ 1,  0,  1]])
>>> LA.cond(a)
1.4142135623730951
>>> LA.cond(a, 'fro')
3.1622776601683795
>>> LA.cond(a, np.inf)
2.0
>>> LA.cond(a, -np.inf)
1.0
>>> LA.cond(a, 1)
2.0
>>> LA.cond(a, -1)
1.0
>>> LA.cond(a, 2)
1.4142135623730951
>>> LA.cond(a, -2)
0.70710678118654746
>>> min(LA.svd(a, compute_uv=0))*min(LA.svd(LA.inv(a), compute_uv=0))
0.70710678118654746