2016-07-28 53 views
2

在本徵,如果我們有對稱正定矩陣A那麼我們就可以通過本徵對稱正定矩陣的高效逆

A.inverse(); 

A.llt().solve(I); 

計算的A逆其中I是與A大小相同的單位矩陣。但是有沒有更有效的方法來計算對稱正定矩陣的逆?

例如,如果我們寫的A的Cholesky分解爲A = LL^{T},然後L^{-T} L^{-1}是因爲A L^{-T} L^{-1} = LL^{T} L^{-T} L^{-1} = I(和其中L^{-T}表示的L轉置的倒數)的A倒數。因此,我們可以獲得A的Cholesky分解,計算其逆,然後獲得該逆的叉積來找到A的逆。但我的直覺是,計算這些明確的步驟將比上述使用A.llt().solve(I)慢。

而在任何人問起之前,我的確需要明確的反轉 - 它是對Gibbs採樣器的一部分進行計算。

+0

雖然接受的答案沒有說明是否有更快的方法來計算具有特徵的對稱正定矩陣的逆,但我在問題中提到的顯式方法是最快的方法(並且有序O((1/3)n^3 + 2n^2)) - 這顯然是Eigen所做的。 – dpritch

回答

3

使用A.llt().solve(I),假定A是SPD矩陣,並應用Cholesky分解來解決方程式Ax=I。求解方程的數學過程與你明確的方式完全相同。所以如果你正確地做了每一步,性能應該是一樣的。

另一方面,與A.inverse(),你正在做一般矩陣反演,它使用LU分解大矩陣。因此性能應該低於A.llt().solve(I);

+0

感謝這節省了我大量的時間分析Cholesky解決方法與明確的方法,並在一天結束時仍然不知道它們是相同的。 – dpritch