在MATLAB中查找大型稀疏矩阵的空间

时间:2013-08-28 11:02:56

标签: matlab matrix sparse-matrix

椭圆方程的有限差分离散过程 并且Neumann BC在2D域的各个方面的应用我都很大 稀疏矩阵。我需要找到其转置的空格来强制执行 任何一方的一致性条件。对于50X50的计算域 和100X100我能够使用32 GB的可用内存 Mathematica和MATLAB分别使用NullSpace和null的可用全矩阵命令。

如果计算域是500X250(其为 我一般的顺序)存储所需的RAM 尺寸矩阵(500X250)X(500X250)为125 GB,非常令人望而却步。我使用稀疏矩阵来存储这个超级矩阵,我不再有空间约束。但我不能在此使用'null'命令,因为它只用于完整矩阵.MATLAB建议在稀疏矩阵上使用“SVDS”命令.SVDS(A)只给出前6个奇异值和奇异向量。另一个命令SVDS(A,k,sigma)给出“k”奇异值和围绕“sigma”的标量奇异值的向量。当我使用sigma = 0以便找到对应于“零”值的奇异向量时,这将是从零空间基础的向量我得到一个错误,“西格玛”太接近矩阵的本征值。

我的矩阵是奇异的,因此它的一个特征值是“零”。我该如何规避这个错误?或者使用手头的工具有更好的方法。我手边有MATLAB和Mathematica。

提前感谢您的帮助和建议。

最佳

Trinath

1 个答案:

答案 0 :(得分:1)

我猜你可以尝试某种分解。

http://www.mathworks.co.uk/matlabcentral/fileexchange/11120-null-space-of-a-sparse-matrix

你试过这个吗?

或许这个?

http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/249467

我相信他们应该工作,但我自己没有尝试过。另一种进行的方法是进入QR分解(如果k是矩阵的秩,则可以给出前k个独立列的排列。然后从k + 1到n的向量将为你的null提供基础空间)。

希望这有帮助。

干杯,

GL