2017-07-18 114 views
6

計算對稱稠密矩陣求逆的對角線的最佳方法是什麼(2000 * 2000)?目前我首先使用solve(x)計算逆,然後提取對角線(diag(y))。即使它可行,但我想知道是否有更好的方法來實現它,以便代碼運行更快。我試過chol2inv(),但它沒有用,因爲我的矩陣不是正定的。計算矩陣求逆對角線的有效方法

更新: 對於任何可能感興趣的人,我都能夠通過使用優化的數學庫英特爾MKL來加速矩陣求逆。在我的機器上反轉2000 * 2000矩陣需要3秒鐘的時間。英特爾MKL可用於Microsoft R Open。

+0

在短的谷歌搜索我做了我發現相當一些鏈接到算法和其他實現相關的這個問題。你明確需要對角線的每個元素還是打算在另一個計算中使用它?如果你想在進一步的計算中使用它,這些知識對於加快執行速度至關重要。 – Vandenman

+0

我在其他計算中使用對角線。具體來說,我將逆矩陣的對角線的每個元素分解到另一個向量中的每個元素,並將它們相加。 – Katherine

+0

你怎麼知道逆的對角線的每個元素都是非零的?矩陣是否有保證這一點的一些屬性? – dmuir

回答

0

如果你的矩陣沒有很好的特性就像是對稱的,對角線,或正定的,你唯一的選擇黯然是做sum(diag(solve(x)))

多久是需要在您的矩陣運行?

+0

它是對稱的,但不幸的是不是肯定的。 Chol2inv會快很多。大概需要15秒鐘。運行時並不可怕,但它會快速加起來,因爲我有一個迭代過程,所以矩陣在過程中每次都被反轉。 – Katherine