NumPy参考 >例行程序 >线性代数(numpy.linalg) > numpy.linalg.cond
numpy.linalg.
cond
(x,p = None )[源代码] ¶计算矩阵的条件数。
根据p的值,此函数能够使用七个不同范数之一返回条件编号(请参见下面的参数)。
寻求条件编号的矩阵。
规范顺序:
p |
矩阵规范 |
---|---|
没有 |
2-范数,直接使用 |
“来回” |
Frobenius范数 |
信息 |
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),轴= 0)) |
2 |
2范数(最大单值) |
-2 |
最小奇异值 |
inf表示numpy.inf对象,Frobenius范数是平方和的平方根范数。
矩阵的条件号。可能是无限的。
也可以看看
笔记
的条件数X被定义为的范数X次的逆的范数X [1] ; 范数可以是通常的L2范数(平方和),也可以是许多其他矩阵范数之一。
参考文献
G. Strang,《线性代数及其应用》,佛罗里达州奥兰多市,Academic Press,Inc.,1980年,第1页。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