2013-07-29 71 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 
相關問題