算法 – 矩阵正定和病态条件的迭代线性求解器

我需要一些帮助来解决这个问题.

我想解决Ax = b,

其中A是n×n(方阵),b是n×1矩阵.

但是A矩阵具有以下属性:
  病情(K> 1)(可能大于10 ^ 8)
  对称正定(因为它是协方差矩阵)

我已经尝试过Jacobi方法,但不幸的是收敛速度很慢.我避免使用Cholesky分解.

我已经尝试过Conjugate Gradient,但不幸的是,如果矩阵A中的条件数太大,它就不能收敛.

更新:我需要一个可以在并行框架(如MPI)中运行的方法.所以我不能在当前的迭代中使用需要x [i]的Gauss-seidal.

我可以用什么样的方法解决这类问题?谢谢 :)

最佳答案 我将猜测你的麻烦来自矩阵矢量积的不准确计算. (我从未见过共轭梯度完全不能减少残差,除非矩阵矢量产品很差.重启后的第一次迭代只能做最陡的下降.)

您可以尝试再次运行共轭梯度,但在计算矩阵向量乘积时使用扩展精度或Kahan summation等.

或者,如果您的矩阵具有某种已知结构,您可能会尝试找到一种不同的方法来编写矩阵向量乘积,从而减少计算结果中的舍入.如果我能看到你的矩阵,我可能会在这里提出更具体的建议.

点赞