numpy.linalg.cond #

利纳尔格。cond ( x , p = None ) [来源] #

计算矩阵的条件数。

该函数能够使用七个不同范数之一返回条件数,具体取决于p的值(请参阅下面的参数)。

参数
x (…, M, N) 类似数组

求其条件数的矩阵。

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

条件数计算中使用的范数的阶数:

p

矩阵范数

没有任何

2-范数,直接使用SVD

‘来回’

弗罗贝尼乌斯范数

信息

最大值(总和(abs(x),轴= 1))

-inf

分钟(总和(abs(x),轴= 1))

1

最大值(总和(abs(x),轴= 0))

-1

分钟(总和(abs(x),轴= 0))

2

2-范数(最大单值)

-2

最小奇异值

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

返回
c {浮点数,inf}

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

也可以看看

numpy.linalg.norm

笔记

x的条件数定义为x的范数乘以x [1]的倒数范数;范数可以是通常的 L2 范数(平方和根)或许多其他矩阵范数之一。

参考

[ 1 ]

G. Strang,《线性代数及其应用》,佛罗里达州奥兰多,学术出版社,1980 年,第 17 页。 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 # may vary
>>> min(LA.svd(a, compute_uv=False))*min(LA.svd(LA.inv(a), compute_uv=False))
0.70710678118654746 # may vary