2013-07-29 43 views
7

我不确定python-numpy是否可以帮助我们决定矩阵是否单数。我试图根据行列式来决定,但numpy在1.e-10附近产生了一些值,并且不确定我们应该选择什么样的临界值。如何判断矩阵在python-numpy中是否单数?

+0

是的,有人问同样的问题,但我在这里有一个更优雅的回答:-) –

回答

11

使用np.linalg.matrix_rank具有默认容差。有一个关于该功能对什么是合适的截止考虑奇异值为零的文档字符串一些讨论:

>>> a = np.random.rand(10, 10) 
>>> b = np.random.rand(10, 10) 
>>> b[-1] = b[0] + b[1] # one row is a linear combination of two others 
>>> np.linalg.matrix_rank(a) 
10 
>>> np.linalg.matrix_rank(b) 
9 
>>> def is_invertible(a): 
...  return a.shape[0] == a.shape[1] and np.linalg.matrix_rank(a) == a.shape[0] 
... 
>>> is_invertible(a) 
True 
>>> is_invertible(b) 
False 
相关问题