【发布时间】:2011-09-24 10:57:08
【问题描述】:
我有很多大型(大约 5000 x 5000)矩阵需要在 Matlab 中求逆。我实际上需要倒数,所以我不能使用 mldivide 代替,这对于仅解决一个 b 的 Ax=b 来说要快得多。
我的矩阵来自一个问题,这意味着它们具有一些不错的属性。首先,它们的行列式是 1,所以它们绝对是可逆的。但是,它们不可对角化,或者我会尝试对它们进行对角化,反转它们,然后将它们放回原处。他们的条目都是实数(实际上是有理数)。
我正在使用 Matlab 来获取这些矩阵,为此我需要处理它们的逆矩阵,所以我更喜欢一种加快 Matlab 速度的方法。但是,如果我可以使用另一种更快的语言,请告诉我。我不懂很多其他语言(一点点C,一点点Java),所以如果它在其他语言中真的很复杂,那么我可能无法使用它。不过,请继续提出建议,以防万一。
【问题讨论】:
-
Matlab 的线性代数例程通常是非常优化的,因此您可能无法通过用另一种语言手动重新实现任何东西来提高速度。不过,您可能想查看 Eigen (c++)。对于 Matlab,您可能想尝试并行处理工具箱。
-
另外,如果您告诉我们您的矩阵具有哪些属性,或者您如何获得它们,这可能会有所帮助。也许在将其插入 MATLAB 之前进行一些线性代数操作可能比任何库都能为您提供更多帮助。
-
您可能想详细说明您的具体情况。你100%确定你需要逆吗?谢谢
-
我猜它们是稀疏的,因为大多数现实世界的问题都没有完整的 5000 x 5000 矩阵。假设它们是,你能以某种方式利用稀疏结构吗?你调查过这个吗?
-
矩阵有多稀疏?矩阵有什么特殊的形状,或者条目之间的关系吗?
标签: algorithm matlab matrix performance matrix-inverse