上次讲解了《共轭梯度法数值求解线性方程组》,应好友的邀请,本次讲解一下共轭梯度法的推导。

在数值线性代数中,共轭梯度法是一种求解对称正定线性方程组

的迭代方法。


A 是实对称正定矩阵

求解 ,其中 𝐴 是实对称正定矩阵,等价于最小化下面的二次函数:

从下面的推导就可以看出。最小化二次函数就是将 对 x 求偏导然后令其等于 0:

由于 𝐴 是实对称正定矩阵 (下面的推导要时刻注意这点),因此上式等价于


共轭梯度法的推导

从初始的猜测 出发,相应的残差为 ,我们构造 x 的迭代式:

意思就是下一步的 x 是由上一步的 x 平移 ,平移的方向由 决定,该方向可以任意选择,无非是有些选择不能收敛,有些收敛的比较慢,有些收敛地比较快。为了演示不同的选择有不同的收敛速度,下面准备选择两种作为对比:梯度下降法和共轭梯度法。


将迭代式代入

最小化二次函数将 求导然后令其等于 0:

由于残差 从而得到


梯度下降法

如果选择 那么

我们计算一下 的梯度发现

也就是梯度下降最快的方向。


共轭梯度法

如果选择迭代式

满足共轭性,即对于

那么

从而

至此推导已经结束,算法上可以直接使用上面的公式。但是我们发现上面的 和教科书以及维基百科上《共轭梯度法》有所不同,我们继续推导。


使用 (第二步需要证明),则


这事实上证明了 满足正交性。

以下为第二步的证明

由于 ,定义系数 ,则

因此

以及

为对称矩阵, 也是对称矩阵,所以它们两个对易:

证明完毕


使用 ,则

因此

同时


对推导过程中的缺陷我感到非常抱歉。下次展示梯度下降法和共轭梯度法具体实例的对比,再下一次讲解不是实对称正定矩阵时的共轭梯度算法。

请大家多多关注、点赞、收藏、转发,让更多有需要的人可以看到,以后会分享更多实用的算法。

万分感谢!🙏