共轭梯度法是数值计算中的重要算法,专门用于求解大型对称正定线性方程组。它的核心思想是将线性方程组 Ax 等于 b 转化为二次函数最小化问题。通过巧妙地选择共轭搜索方向,该方法能够在理论上最多 n 步内找到精确解,在实际应用中表现出优异的收敛性能。
传统的梯度下降法虽然简单,但存在明显的局限性。当目标函数的等高线呈椭圆形时,梯度下降法会产生锯齿状的搜索路径。这是因为梯度方向并不总是指向最优解,而是垂直于等高线。这种锯齿现象导致收敛速度缓慢,需要大量迭代步骤才能达到最优解。
共轭方向是共轭梯度法的关键概念。两个向量关于矩阵 A 共轭,意味着它们满足特殊的正交性条件。与传统的正交不同,A-共轭要求两个向量的内积在 A 变换下为零。这种特殊的方向选择使得算法能够避免重复搜索,每次都能在新的独立方向上取得进展,最终用最少的步数达到最优解。
共轭梯度法的算法步骤可以分为三个主要部分。首先是初始化阶段,设定初始解、计算初始残差和搜索方向。然后是核心的迭代过程,包括计算步长、更新解向量、计算新残差、确定下一个搜索方向的系数,以及构造新的共轭搜索方向。最后是收敛判断,当残差足够小时停止迭代。这个算法的精妙之处在于每一步都保证了搜索方向的共轭性。
共轭梯度法相比传统方法具有显著优势。它具有有限步收敛性,理论上最多 n 步就能找到精确解。内存需求极低,只需存储少数几个向量,特别适合处理大型稀疏矩阵系统。每次迭代的计算复杂度主要是矩阵向量乘法,效率很高。因此,共轭梯度法在数值分析、机器学习优化、工程计算等众多领域都有广泛应用,是现代科学计算中不可或缺的重要工具。