2012-12-10 215 views
4

錯誤Numpy error: Matrix is singular具體是指什麼意思(使用linalg.solve函數時)?我曾看過谷歌,但找不到發生此錯誤的任何事情。Numpy錯誤:奇異矩陣

+0

如果你有一個奇異矩陣,那麼它可能表明你有你的矩陣填充日常一些錯誤。如果你的矩陣確實是奇異的,那麼你可以使用奇異值分解得到一些有用的信息。然而在這種情況下,你需要對線性代數和數值計算概念有一個很好的理解。 – DaveP

回答

12

奇異矩陣是不可逆的。這意味着你試圖解決的方程組沒有獨特的解決方案; linalg.solve無法處理此問題。

您可能會發現linalg.lstsq提供了一個可用的解決方案。

+0

「沒有獨特的解決方案」是否意味着它可能有多種解決方案? – KaliMa

+0

@KaliMa這就是我的意思。 –

+0

@MichaelJBarber有沒有辦法讓它返回所有可能的解決方案?這是linalg.lstsq做的嗎? – KaliMa

0

此功能反轉使用numpy.linalg.lstsq以及奇異矩陣:

def inv(m): 
    a, b = m.shape 
    if a != b: 
     raise ValueError("Only square matrices are invertible.") 

    i = np.eye(a, a) 
    return np.linalg.lstsq(m, i)[0]