我只是試圖創建一個3x3矩陣逆JAMA文檔後的矩陣。但每一次它給我下面的錯誤 -異常在線程「主」java.lang.RuntimeException:矩陣單數
Exception in thread "main" java.lang.RuntimeException: Matrix is singular
誰能幫助我在這方面?
我只是試圖創建一個3x3矩陣逆JAMA文檔後的矩陣。但每一次它給我下面的錯誤 -異常在線程「主」java.lang.RuntimeException:矩陣單數
Exception in thread "main" java.lang.RuntimeException: Matrix is singular
誰能幫助我在這方面?
如果你可以計算矩陣的行列式,你會發現它是零(或接近它)。
您可能可以通過檢查來判斷。如果一行與另一行成比例,則您的矩陣不可逆。
3x3很容易手工翻轉。嘗試一下,看看它出錯的地方。
試試SVD解決方案。它會告訴你什麼是你的矩陣的零空間。
Jama的文檔不是很好。
事實上,如果你看看通過源代碼,你會發現,Matrix.inverse()
最終調用LUDecomposition.solve(...)
和代碼說:
270 /** Solve A*X = B
271 @param B A Matrix with as many rows as A and any number of columns.
272 @return X so that L*U*X = B(piv,:)
273 @exception IllegalArgumentException Matrix row dimensions must agree.
274 @exception RuntimeException Matrix is singular.
275 */
277 public Matrix solve (Matrix B) {
278 if (B.getRowDimension() != m) {
279 throw new IllegalArgumentException("Matrix row dimensions must agree.");
280 }
281 if (!this.isNonsingular()) {
282 throw new RuntimeException("Matrix is singular.");
283 }
由於維基說:
「線性代數的如果存在n×n矩陣B使得AB = BA = 1,則n×n(正方形)矩陣A被稱爲可逆的或非奇異的或非簡併的n 其中I n表示n乘n的單位矩陣,所用的乘法是普通的矩陣乘法。
總之,單數意味着不可逆的。
如果你不滿意JAMA,看看在Apache共享數學庫,特別是Linear Algebra module。
謝謝......我會看看圖書館。 – Pow 2011-06-09 17:14:02
嗯,它告訴你你需要知道的一切:你想要反轉的矩陣是單數。
奇異矩陣是不可逆的。
如果您認爲您的矩陣不是單數,請發佈它,我們會看看。
你的3x3矩陣是什麼?我的猜測是它不可逆 - 見http://en.wikipedia.org/wiki/Invertible_matrix – 2011-06-09 09:09:39
這是模糊的:你的問題沒有引用任何源代碼,它沒有堆棧跟蹤。另外,您指的是什麼JAMA文檔? – 2011-06-09 09:13:55