flopscope.numpy.linalg.cond
fnp.linalg.cond(x, p=None)[flopscope source][numpy source]
Compute the condition number of a matrix.
Adapted from NumPy docs np.linalg.cond
Condition number. Cost: m*n*min(m,n) (via SVD).
This function is capable of returning the condition number using
one of seven different norms, depending on the value of p (see
Parameters below).
Parameters
- x:(..., M, N) array_like
The matrix whose condition number is sought.
- p:{None, 1, -1, 2, -2, inf, -inf, 'fro'}, optional
Order of the norm used in the condition number computation:
tablep norm for matrices None 2-norm, computed directly using the SVD 'fro' Frobenius norm 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-norm (largest sing. value) -2 smallest singular valueinf means the flops.inf object, and the Frobenius norm is the root-of-sum-of-squares norm.
Returns
- c:{float, inf}
The condition number of the matrix. May be infinite.
See also
Notes
The condition number of x is defined as the norm of x times the
norm of the inverse of x [1]_; the norm can be the usual L2-norm
(root-of-sum-of-squares) or one of a number of other matrix norms.
References
1
G. Strang, Linear Algebra and Its Applications, Orlando, FL,
Academic Press, Inc., 1980, pg. 285.Examples
>>> import flopscope.numpy as fnp
>>> from numpy import linalg as LA
>>> a = flops.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, flops.inf)
2.0
>>> LA.cond(a, -flops.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