我应该选择哪种方法来求解大型(约 20 000 个变量)密集对称正定、可能病态的线性方程组?该系统将求解两个向量。我对性能和数值准确性都感兴趣,因此我正在寻找可能的解决方案来选择最佳折衷方案。我想将它用作 OCTAVE/MATLAB 下专用 SDP 求解器的一部分,因此很可能它将被实现为带有单线程的 mex 文件。
编辑:感谢您的回复。我的意思是一个优化求解器,采用原始对偶内点法。在我的情况下,双重解决方案总是可行的,而且密集(我的意思是双重解决方案不是块对角线)。
EDIT2:我编写 SDP 求解器的原因是我想尝试获得一个更有效的工具来解决大型 NPA 问题(http://arxiv.org/abs/0803.4290)。这种情况允许一些简化,内部总是非空的,我可以找到一个好的初始对偶可行解(并因此保持这种可行性),并且该结构允许更容易地创建 dy 方程。问题是这个方程对于这些问题来说很大。
我尝试使用 SeDuMi 和 SDPT3,后者能够运行更大的程序。对于大型我得到的 SDPT3 错误说“舒尔补矩阵不是正定的”意味着 Cholesky 分解失败。
EDIT3:我观察到,通过这个热启动,解决程序需要大约 3-4 次迭代。问题是 Cholesky 对大型 Schur 补矩阵的失败。在这种情况下,它是完全密集的,但在最后一次迭代附近,它变得非常糟糕。这就是为什么我正在寻找一种能够解决它的方法。
EDIT4:感谢您的回复。我将尝试与 Cholesky 一起旋转。你推荐任何在 OCTAVE 下工作的包来完成这个任务吗?