我需要将N个线性方程组作为数值优化器的中间步骤来求解。 AFAIK这样做的相当简单的算法就是O(N ^ 3)(尽管我在一些数学论文中看到了一个非常复杂的算法,它可以用O(N ^ 2.8)和一个巨大的常量来做)。在某些情况下,N很大,即数千。
有没有什么好办法可以在小于O(N ^ 3)的线性方程组中得到一个合适的近似解?
编辑:
如果有任何帮助,可以参考以下内容。
我的矩阵是对称的,而不是稀疏的。
它是Newton-Raphson的第二个导数矩阵。我试图在2000维空间中优化某些东西。
答案 0 :(得分:3)
有Jacobi,Gauss-Seidel,cg,GMRES等迭代方法。
答案 1 :(得分:2)
对于对称矩阵,conjugate gradient method很容易实现,并且将胜过大多数其他迭代方法(例如Gauss-Seidel,SOR)。主循环包括矩阵向量乘法和一些其他向量运算。
一旦你开始工作,你可以使用preconditioning来进一步提高融合度。
答案 2 :(得分:0)
是的,如果你从他们的系数得到的矩阵是稀疏的。如果你有一个三对角矩阵,例如,它在O(N)中运行,那么就有“右边”(保加利亚语,不确定精确翻译)的方法。还有其他算法仍为O(N ^ 3)但如果矩阵符合它们所需的某些不变量(稀疏,对角线占优势,三角形等),则会获得令人难以置信的结果。
如果你坚持使用基于你的不变量的特定方法,那么进一步提高速度的唯一方法就是多线程。
尝试this搜索。