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}
矩阵的条件数。可能是无限的。
也可以看看
笔记
条件数x被定义为x乘以x [R37] t3的倒数范数的范数>;该范数可以是通常的L2范数(平方和的根)或多个其他矩阵范数中的一个。
参考文献
[R37] (1,2) 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