2017-07-18 81 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