我有一個 50x49 的矩陣A,它有 49 個線性獨立的列。但是,我的軟體 (octave) 告訴我它的排名是 44:

是不是因為一些計算錯誤?如果是這樣,那么如何防止此類錯誤?
如果軟體能夠正確計算
rref(A),那么為什么會失敗rank(A)?這是否意味著計算rank(A)比計算更容易出錯rref(A),反之亦然?我的意思是rref(A)實際上告訴你排名,但這里有一個矛盾。
PS我檢查過,Python犯了同樣的錯誤。
編輯 1:這是矩陣 A本身。給出了前 9 列。其余部分是通過多項式特征獲得的。
編輯 2:我發現了一個類似的問題。這是秩為 10 的 10x10矩陣 B(并且八度正確計算其秩)。但是,八度音程表示rank(B * B) = 9這是不可能的。
uj5u.com熱心網友回復:
可逆矩陣(即滿秩)和不可逆矩陣之間的區別在理論上是明確的,但在實踐中并非如此。可以反轉B具有大條件數的矩陣(如您的示例),但計算逆矩陣在數值上是不穩定的。它大致對應于B具有“小”的行列式(使用適當的“小”相對度量),因此矩陣幾乎是奇異的。結果,逆矩陣的計算精度會很差。在您的示例中B,條件編號(用 計算cond)是2.069e9。
看待這個問題的另一種方式是:當條件數很大時,它很可能B是“真正”奇異的,但先前計算中的小數值誤差使它看起來幾乎不是非奇異的。所以你不能確定。
的rank和rref功能使用不同的演算法(奇異值分解為rank,高斯-約旦消去與用于部分樞轉rref)。對于行為良好的矩陣,這兩種情況下的數值誤差都會很小,并且結果將是一致的。但是對于條件不好的矩陣,數值誤差會很大,并且在每種情況下都可能不同,從而產生不一致的結果。
這是數值代數的一個眾所周知的問題。通常,避免對條件數較大的矩陣求逆。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336441.html
下一篇:在二維圖中顯示NxM矩陣
