0

我想计算一些大块对角稀疏矩阵的逆。行数和列数略高于 50,000。这些块是 12 x 12 并且是稀疏的(27 个非零元素)。

我试图计算整个矩阵的逆(使用求解)​​。这是不可能的,整个矩阵太大了。

之后,我使用了一个 for 循环。在每次迭代中,我取出一个块,计算其逆并将其放回原处。

该方法有效,但我需要大约 5 分钟。我想知道是否有更快的方法。

提前谢谢了。

4

2 回答 2

0

我通过代码制作得更快,通过:

1) 将块对角矩阵的逆矩阵存储在列表中,而不是将它们放回大矩阵中。最后,我使用 bdiag() 命令从列表中构建了整个矩阵。2)通过考虑块对角矩阵不是一个一个,而是以大约10个为一组所以,我反复计算由10个块对角矩阵组成的子矩阵的逆矩阵。

在最初的问题中,我没有说我不仅取每个块的逆,而且我还在每个块上应用了一些变换。现在提前对整个块对角矩阵进行变换,也节省了时间。

于 2014-04-10T00:03:04.337 回答
0

你如何得到一个 50k x 50k 的矩阵?

反转 12 x 12 既简单又快速。是反转导致矩阵对象的缓慢或访问吗?

你打算怎么处理你的大反转?

于 2014-04-04T18:12:33.257 回答