MATLAB\
通常会尝试几种方法来解决问题。首先,如果它发现矩阵的结构是对称的,它会尝试 Cholesky 分解。经过几个步骤如果找不到合适的答案,当前版本的 Matlab 使用 UMFPACK Suitsparse包。
UMFPack 是一种特定的 LU 实现,它在实践中以其速度和良好的内存使用而闻名。它还尝试减少填充并保持矩阵尽可能稀疏。这就是 MATLAB 使用此代码的原因。(我正在攻读 UMFPACK,在其创建者 Tim Davis 博士的监督下攻读博士学位)
因此,使用另一个 LU 分解将无济于事。它已经是一个 LU 分解。解决问题的最简单方法之一是在另一台具有更好内存的设备上测试您的问题,看看它是否有效。
我猜matlab会做一些垃圾收集并浪费一些内存,所以如果你直接使用UMFPACK它可能会对你有所帮助。您可以在 C/C++ 中实现它,也可以使用 MATLAB 接口。看看 SuitSparse 包。
根据您的矩阵结构,我认为 MATLAB 尝试使用 Cholesky;如果 Cholesky 内存管理失败,我不知道 MATLAB 的策略是什么。考虑到 Cholesky 在内存方面更容易管理。
还有其他软件包也可能对您有所帮助。CSparse 是一个轻量级的包,它可能会有所帮助。还有其他着名的软件包可能会有所帮助;搜索超级LU。