共轭梯度迭代不收敛的一些原因是什么?

计算科学 迭代法 收敛 共轭梯度
2021-12-23 21:40:04

如果您能分享一些 Ax = b 的共轭梯度迭代不收敛的原因,我将不胜感激?我的矩阵 A 是对称正定矩阵。

太感谢了!

编辑更多信息:我的矩阵是针对简单约束问题的优化算法中的简化 Hessian 矩阵。矩阵是 50% 稀疏的,我正在使用 matlab。

2个回答

如果您的矩阵是对称的、正定的,则​​ CG 方法可能收敛缓慢,但它收敛于n. 它在计算机上不收敛的唯一原因是舍入误差,特别是如果矩阵的条件数,最大和最小特征值的商很大。

经验是,使用双精度算术,即使条件数适中,收敛也会停滞在10121014的原始错误。

可能CG无法收敛,因为您的问题是病态的,矩阵的条件数太大。对于 SPD 矩阵 A,您可以获得计算特征值的条件数

codition_number = 最大特征值/最小特征值

病态意味着在求解方程组时,矩阵某些条目的微小变化可能会导致结果发生很大变化(在条件良好的矩阵中,矩阵任何条目的微小变化都会导致结果发生微小变化)。

为了减少问题的条件数,您可以使用预处理 CG,有几个预处理器。Jacobi 预条件器(也称为对角预条件器)易于实现,但不够稳健。