共轭梯度法(CG法)授课
共轭梯度法(CG法)6.4节知识点深度讲解
共轭梯度法的理论根基——线性方程组与变分问题的等价性。这部分内容是共轭梯度法的灵魂,很多同学学CG法只死记迭代步骤,却搞不懂公式的来源、为什么要这么构造,根源就是没吃透这一节的变分等价原理。我会以50多年的教学和科研经验,从「是什么、为什么、有什么用」三个维度,把每一个定义、性质、定理的底层逻辑讲透,帮你建立对CG法的本质认知。
一、开篇定调:共轭梯度法的核心定位
共轭梯度法(Conjugate Gradient, CG),也叫共轭斜量法,是求解大型稀疏对称正定线性方程组的里程碑式方法,也是目前工程界有限元分析、计算力学、电磁仿真、流体计算等领域的工业级标准求解算法。
它和我们之前学的雅可比、高斯-塞德尔、SOR迭代法有本质区别:
- 之前的定常迭代法,核心是矩阵分裂,迭代矩阵固定不变,收敛速度高度依赖矩阵谱性质,还需要手动调参;
- 共轭梯度法属于变分方法,核心是把线性方程组求解转化为「二次函数的全局极小值求解」,迭代过程中动态构造搜索方向,无自由参数、天然适配稀疏矩阵、收敛速度远快于定常迭代法,理论上还具备有限步收敛性。
而这一切的理论根基,就是我们今天要讲的线性方程组与二次函数极值的等价性。
二、核心前提:对称正定矩阵的约束
首先明确:本节所有结论的前提,是系数矩阵\(A\in\mathbb{R}^{n\times n}\)为对称正定矩阵。这个前提不是可有可无的,而是整个等价性成立的基石,后面我们会反复用到它的两个核心性质:
- 对称性:\(A^T=A\),保证二次型的梯度可以和线性方程组的残差完美对应;
- 正定性:对任意非零向量\(x\in\mathbb{R}^n\),都有内积\((Ax,x)=x^T A x > 0\),保证二次函数是严格凸函数,存在唯一的全局极小值点。
我们的目标是求解线性方程组:
其中\(b=(b_1,b_2,\dots,b_n)^T\)是右端项向量。
三、核心构造:等价的二次函数
为了把线性方程组转化为优化问题,我们构造一个从\(n\)维欧氏空间到实数域的二次函数:
这里的\((\cdot,\cdot)\)是欧氏空间的标准内积,即\((x,y)=x^T y\),展开成求和形式就是教材里的:
为什么要构造这个函数?
我先给大家一个核心结论:这个二次函数的全局极小值点,恰好就是线性方程组\(Ax=b\)的唯一解。接下来我们通过三个核心性质,一步步验证这个结论,把每一步的逻辑闭环讲清楚。
四、二次函数的三大核心性质(逐点拆解)
性质1:二次函数的梯度 = 线性方程组的残差
对任意\(x\in\mathbb{R}^n\),\(\varphi(x)\)的梯度为:
1. 公式推导(为什么梯度是这个结果?)
我们用多元函数求导的基本规则推导,结合\(A\)的对称性:
- 第一项\(\frac{1}{2}(Ax,x) = \frac{1}{2}x^T A x\),对列向量\(x\)求导,根据对称矩阵二次型的求导法则,导数为\(Ax\)(若\(A\)不对称,导数应为\(\frac{A+A^T}{2}x\),这里对称性保证了简化);
- 第二项\(-(b,x) = -b^T x\),对\(x\)求导,结果为\(-b\);
- 两项相加,就得到梯度\(\nabla\varphi(x) = Ax - b\)。
2. 核心意义(这个性质有什么用?)
这是整个等价性的第一个关键桥梁:
- 线性方程组\(Ax=b\),等价于\(\nabla\varphi(x) = 0\),也就是二次函数\(\varphi(x)\)的驻点条件;
- 我们定义残差\(r(x) = b - Ax\),它恰好是二次函数的负梯度方向:\(r(x) = -\nabla\varphi(x)\)。残差为0的点,就是梯度为0的驻点,也就是我们要找的解。
这就把「解线性方程组」和「找二次函数的驻点」完全绑定了。但驻点不一定是极小值点,接下来我们需要证明:这个驻点就是全局极小值点。
性质2:二次函数的一维展开式
对任意\(x,y\in\mathbb{R}^n\)和任意实数\(\alpha\),有:
1. 公式推导
我们直接代入\(\varphi\)的定义,利用内积的线性性和\(A\)的对称性展开:
因为\(A\)对称,内积满足\((Ax,y)=(x,Ay)=(Ay,x)\),所以两个交叉项可以合并为\(\alpha(Ax,y)\),整理后:
和教材的公式完全一致。
2. 核心意义
这个性质是共轭梯度法一维最优步长搜索的理论基础,也是整个迭代格式的核心来源:
- 假设我们当前在点\(x^{(k)}\),选定了一个搜索方向\(y=d^{(k)}\),我们要找一个最优的步长\(\alpha_k\),让\(\varphi(x^{(k)} + \alpha_k d^{(k)})\)最小——也就是沿着这个方向,走到\(\varphi(x)\)下降最多的点;
- 把展开式看作关于\(\alpha\)的一元二次函数,对\(\alpha\)求导并令导数为0,就能直接解出最优步长\(\alpha_k\),这就是后面CG法迭代步骤中步长公式的来源;
- 同时,因为\(A\)正定,\((Ay,y)\geq0\),所以这个关于\(\alpha\)的函数是开口向上的抛物线,存在唯一的极小值点,保证了每一步的最优步长都是唯一存在的。
性质3:精确解处的函数值与误差关系
设\(x^*=A^{-1}b\)是线性方程组\(Ax=b\)的唯一解,则:
- 精确解处的函数值:\(\varphi(x^*) = -\frac{1}{2}(b,A^{-1}b) = -\frac{1}{2}(Ax^*,x^*)\)
- 任意点与精确解的函数值差:\[\varphi(x) - \varphi(x^*) = \frac{1}{2}(A(x-x^*), x-x^*) \tag{6.39} \]
1. 公式推导
先看函数值差的推导,这是最核心的部分:
因为\(x^*\)是解,所以\(Ax^*=b\),代入\(\varphi(x)\)的定义展开:
最后一步用到了\(A\)的对称性,展开\((A(x-x^*),x-x^*)\)恰好等于中括号里的内容,推导完成。
2. 核心意义
这个性质直接锁定了「线性方程组的解」和「二次函数极小值点」的等价性,是整个定理的核心支撑:
- 因为\(A\)是对称正定矩阵,对任意非零向量\(z\),都有\((Az,z) > 0\);
- 令\(z=x-x^*\),则\(\varphi(x) - \varphi(x^*) = \frac{1}{2}(Az,z) \geq 0\),当且仅当\(z=0\)(也就是\(x=x^*\))时,等号成立;
- 这就说明:对任意\(x\in\mathbb{R}^n\),都有\(\varphi(x) \geq \varphi(x^*)\),\(x^*\)是\(\varphi(x)\)的唯一全局极小值点。
五、核心定理:线性方程组与变分问题的等价性
定理6.15
设\(A\)为对称正定矩阵,则\(x^*\)是线性方程组\(Ax=b\)的解,充分必要条件是\(x^*\)满足:
1. 证明逻辑拆解
我们分必要性和充分性两部分,用最直白的逻辑讲透:
必要性(解→极小值点)
设\(x^*=A^{-1}b\)是方程组的解,由性质3的结论,对任意\(x\in\mathbb{R}^n\),都有\(\varphi(x) \geq \varphi(x^*)\),因此\(x^*\)是\(\varphi(x)\)的全局极小值点。
充分性(极小值点→解)
若\(\bar{x}\)是\(\varphi(x)\)的极小值点,那么它一定满足驻点条件:梯度\(\nabla\varphi(\bar{x}) = 0\)。
由性质1,\(\nabla\varphi(\bar{x}) = A\bar{x} - b = 0\),也就是\(A\bar{x}=b\),因此\(\bar{x}\)就是线性方程组的解。
同时由性质3,极小值点唯一,和方程组的唯一解完全对应。
2. 定理的里程碑意义
这个定理完成了两个问题的完全等价转化:
- 原问题:求解n阶对称正定线性方程组\(Ax=b\);
- 等价问题:求解n元二次凸函数\(\varphi(x)\)的全局极小值点。
这个转化就是共轭梯度法的「根」:
- 我们不需要再用矩阵分裂构造定常迭代,而是可以用优化领域的「方向搜索+步长优化」的思路,构造迭代序列\(\{x^{(k)}\}\),让\(\varphi(x^{(k)})\)一步步逼近最小值\(\varphi(x^*)\),也就是让\(x^{(k)}\)一步步逼近解\(x^*\);
- 后续的共轭梯度法迭代格式,本质就是在这个优化框架下,构造了一组最优的搜索方向(共轭方向),保证每一步都让\(\varphi(x)\)严格下降,且最多n步就能找到精确解。
六、本节内容的延伸与后续衔接
1. 对残差的全新认知
之前我们学迭代法时,残差\(r^{(k)}=b-Ax^{(k)}\)只是一个判断收敛的指标,现在我们知道了:
- 残差\(r^{(k)}\)是二次函数在\(x^{(k)}\)处的负梯度方向,也就是\(\varphi(x)\)在该点下降最快的方向(最速下降方向);
- 迭代收敛的过程,就是残差不断趋于0的过程,也就是梯度不断趋于0、逐步到达极小值点的过程。
2. 为什么最速下降法不是最优选择?
既然负梯度是下降最快的方向,为什么我们不用最速下降法,反而要构造共轭方向?
- 最速下降法只考虑了当前点的局部最优,每一步都沿着负梯度走,会出现「锯齿现象」,尤其是当矩阵\(A\)的条件数很大时,收敛速度会急剧变慢;
- 而共轭梯度法构造的共轭方向,不仅保证每一步\(\varphi(x)\)严格下降,还保证所有搜索方向两两关于\(A\)共轭,避免了重复搜索,理论上n步内必收敛,收敛速度远快于最速下降法。
3. 对称正定的前提再强调
再次提醒大家:整个等价性的核心是\(A\)对称正定。如果\(A\)不正定,二次函数\(\varphi(x)\)没有全局极小值,只有鞍点,等价性不成立;如果\(A\)不对称,二次型的梯度无法和\(Ax-b\)对应,整个框架就崩塌了。这也是经典共轭梯度法仅适用于对称正定矩阵的根本原因。
七、本节核心总结
- 核心等价关系:对称正定线性方程组\(Ax=b\)的解,等价于二次函数\(\varphi(x)=\frac{1}{2}(Ax,x)-(b,x)\)的全局极小值点;
- 三大核心性质:梯度对应残差、一维展开式支撑最优步长搜索、函数值差锁定极小值的唯一性,三者共同支撑了等价性定理;
- 方法本质:共轭梯度法是一种变分方法,把线性代数求解问题转化为了无约束凸优化问题,这是它和定常迭代法的本质区别;
- 后续核心:下一节的共轭梯度法迭代格式,就是在这个变分框架下,通过构造共轭方向、求解一维最优步长,一步步逼近极小值点(也就是方程组的解)。
最速下降法 知识点深度讲解
各位同学,今天我们讲解的最速下降法,是连接「线性方程组变分等价性」和「共轭梯度法」的关键桥梁。它是求解无约束凸优化问题最基础的下降算法,也是理解共轭梯度法核心思想的必经之路。我会从核心思想、公式推导、迭代流程、核心性质、收敛性分析、优缺点与工程定位六个维度,把这个方法的本质讲透,同时讲清楚它的局限,为后续共轭梯度法的学习做好铺垫。
一、最速下降法的核心思想
上一节我们已经证明了:对称正定线性方程组\(Ax=b\)的解,等价于二次凸函数\(\varphi(x)=\frac{1}{2}(Ax,x)-(b,x)\)的全局极小值点。
最速下降法的核心逻辑,就是用最直观的思路求解这个极小值问题:
从任意初始点\(x^{(0)}\)出发,每一步都沿着当前点处\(\varphi(x)\)下降最快的方向前进,走到这个方向上\(\varphi(x)\)的最低点(一维极小值点);再以这个新点为起点,重复上述过程,直到逼近全局极小值点\(x^*\)。
这个思路可以拆解为两个核心问题:
- 什么方向是\(\varphi(x)\)在当前点下降最快的方向?
- 沿着这个方向,走多远(步长多大),才能到达这个方向上的最低点?
我们接下来就通过数学推导,逐一解决这两个问题。
二、通用下降算法框架与最优步长推导
首先我们先建立通用的下降算法框架,再针对最速下降法做特化。
1. 通用下降迭代格式
对于任意一个下降方向\(p^{(k)}\),我们可以构造迭代格式:
其中\(\alpha_k>0\)是迭代步长,我们的目标是找到最优的\(\alpha_k\),使得沿着\(p^{(k)}\)方向,\(\varphi(x)\)的函数值下降最多,也就是:
2. 最优步长的解析解
这个问题本质是一个一元函数的极小值求解问题,我们可以用上一节推导的二次函数一维展开式直接求解。
根据上一节的性质2,对任意\(x,p\in\mathbb{R}^n\)和\(\alpha\in\mathbb{R}\),有:
这是一个关于\(\alpha\)的一元二次函数,且因为\(A\)对称正定,\((Ap^{(k)},p^{(k)})>0\),所以这个函数开口向上,存在唯一的极小值点。
我们对\(\alpha\)求导,并令导数为0,即可解出最优步长:
整理后得到最优步长的通用公式:
这个公式是所有基于变分的下降算法的核心,无论是最速下降法还是共轭梯度法,最优步长都来自这个推导。它的物理意义是:沿着方向\(p^{(k)}\),让\(\varphi(x)\)达到极小值的唯一步长。
三、最速下降法的迭代格式
现在我们解决第一个核心问题:什么方向是下降最快的方向?
1. 最速下降方向:负梯度方向
多元函数在某点的梯度方向,是函数值上升最快的方向;反之,负梯度方向就是函数值下降最快的方向。
根据上一节的性质1,\(\varphi(x)\)的梯度为:
我们定义残差向量\(r^{(k)} = b - Ax^{(k)}\),它恰好是\(\varphi(x)\)在\(x^{(k)}\)处的负梯度:
因此,最速下降法的搜索方向,就取当前点的残差方向:
2. 最速下降法的最终迭代公式
将搜索方向\(p^{(k)}=r^{(k)}\)代入通用最优步长公式(6.41),注意到\(Ax^{(k)}-b = -r^{(k)}\),因此分子变为:
代入后负负得正,化简得到最速下降法的最优步长:
结合迭代格式,最终得到最速下降法的完整迭代公式:
其中\(r^{(k)}=b-Ax^{(k)}\)是第k步的残差向量。
3. 最速下降法的完整迭代步骤
- 初始化:选取初始迭代向量\(x^{(0)}\),计算初始残差\(r^{(0)}=b-Ax^{(0)}\),设置迭代步数\(k=0\);
- 计算最优步长:\(\alpha_k = \frac{(r^{(k)}, r^{(k)})}{(Ar^{(k)}, r^{(k)})}\);
- 更新迭代解:\(x^{(k+1)} = x^{(k)} + \alpha_k r^{(k)}\);
- 更新残差:\(r^{(k+1)} = b - Ax^{(k+1)}\);
- 收敛判断:若\(\|r^{(k+1)}\|_2 < \varepsilon\)(\(\varepsilon\)为预设精度,如\(10^{-6}\)),停止迭代,输出\(x^{(k+1)}\);否则令\(k=k+1\),返回步骤2。
四、最速下降法的核心性质
1. 相邻搜索方向的正交性
最速下降法有一个非常关键的性质:相邻两步的搜索方向(残差向量)相互正交,即:
证明过程
我们直接代入残差的定义展开:
根据最优步长公式(6.42),\(\alpha_k (A r^{(k)}, r^{(k)}) = (r^{(k)}, r^{(k)})\),因此上式结果为0,正交性得证。
几何意义与核心局限
这个性质的几何意义非常直观:
- 二次函数\(\varphi(x)\)的等值线是一族以\(x^*\)为中心的超椭球面,二维情况下就是椭圆曲线;
- 负梯度方向和等值线正交,因此每一步的搜索方向都和当前点的等值线垂直;
- 相邻两步的搜索方向正交,意味着迭代路径是锯齿形的折线,在二维情况下就是走直角转弯的路线。
这正是最速下降法的核心局限:它只保证了局部下降最快,却没有考虑全局的最优路径。尤其是当等值线是非常扁的椭圆(对应矩阵\(A\)的条件数很大,病态矩阵)时,锯齿形路径会来回震荡,收敛速度会变得极其缓慢。
2. 函数值的单调下降性
由最优步长的定义,每一步迭代都满足:
且当且仅当\(x^{(k)}=x^*\)(残差\(r^{(k)}=0\))时等号成立。
同时,因为\(A\)对称正定,\(\varphi(x)\)有下界\(\varphi(x^*)\),因此\(\{\varphi(x^{(k)})\}\)是单调下降且有下界的序列,必然存在极限,且极限就是\(\varphi(x^*)\),对应的迭代序列\(\{x^{(k)}\}\)必然收敛到方程组的解\(x^*\)。
这说明:只要\(A\)是对称正定矩阵,最速下降法是无条件收敛的,无论初始点怎么选,最终都会收敛到精确解。
五、收敛性分析:为什么最速下降法工程上很少用?
最速下降法虽然逻辑简单、无条件收敛,但在工程实际中几乎不会被使用,核心原因是它的收敛速度对矩阵的条件数极度敏感,病态矩阵下收敛速度会急剧下降。
1. 收敛速度的误差估计式
对于对称正定矩阵\(A\),设其最大特征值为\(\lambda_1\),最小特征值为\(\lambda_n\),则最速下降法的迭代误差满足:
其中\(\|u\|_A = \sqrt{(Au,u)}\)是向量的\(A\)-范数(能量范数)。
2. 条件数对收敛速度的影响
我们定义矩阵\(A\)的2-范数条件数:\(\text{cond}(A)_2 = \frac{\lambda_1}{\lambda_n}\),它衡量了矩阵的病态程度:条件数越大,矩阵越病态。
我们通过几个实例直观感受条件数对收敛速度的影响:
| 条件数\(\text{cond}(A)\) | 收敛因子\(\frac{\lambda_1-\lambda_n}{\lambda_1+\lambda_n}\) | 每步误差缩小比例 | 误差缩小到初始的\(10^{-6}\)需要的迭代步数 |
|---|---|---|---|
| 2(良态) | \(\frac{2-1}{2+1}=\frac{1}{3}\approx0.333\) | 66.7% | 约13步 |
| 10(轻度病态) | \(\frac{10-1}{10+1}\approx0.818\) | 18.2% | 约60步 |
| 1000(重度病态) | \(\frac{1000-1}{1000+1}\approx0.998\) | 0.2% | 约6900步 |
可以清晰看到:
- 当矩阵条件数很大时(工程中PDE离散得到的矩阵,条件数经常达到\(10^4\)甚至更高),收敛因子会无限接近1,每一步误差几乎没有缩小,需要成千上万步迭代才能达到精度要求;
- 迭代后期,残差\(\|r^{(k)}\|\)会变得非常小,此时舍入误差会主导计算,导致数值不稳定,甚至无法收敛到目标精度。
这就是最速下降法在工程中几乎不用的核心原因:它只在良态矩阵下有不错的收敛速度,而工程中绝大多数问题对应的矩阵都是病态的,此时它的收敛效率极低。
六、最速下降法的总结与后续衔接
1. 优缺点汇总
| 优点 | 缺点 |
|---|---|
| 逻辑简单,原理直观,编程实现极易 | 仅局部最优,全局收敛速度慢,病态矩阵下收敛效率极低 |
| 对称正定矩阵下无条件收敛,稳定性好 | 相邻搜索方向正交,迭代路径呈锯齿形,存在大量重复搜索 |
| 单步迭代计算量小,仅需一次矩阵-向量乘法和少量内积运算 | 迭代后期残差过小,舍入误差会导致数值不稳定 |
| 存储需求低,仅需存储2个向量(当前解和残差) | 工程实用价值极低,仅作为理论铺垫使用 |
2. 向共轭梯度法的过渡
最速下降法的核心问题,在于它的搜索方向只考虑了局部的下降最快,却没有避免重复搜索,导致收敛速度慢。
我们自然会思考:能不能构造一组搜索方向,既保证每一步\(\varphi(x)\)都严格下降,又能避免重复搜索,让迭代路径更高效地逼近极小值点?
答案是肯定的——这就是我们下一节要讲的共轭梯度法。共轭梯度法用关于\(A\)共轭的方向,替代了最速下降法中正交的负梯度方向,既保留了最速下降法的所有优点,又彻底解决了收敛慢的问题,成为了求解大型稀疏对称正定线性方程组的工业级标准算法。
七、核心知识点终极总结
- 核心等价:最速下降法的本质是通过求解二次函数的极小值,间接求解对称正定线性方程组,是变分原理的直接应用;
- 核心逻辑:每一步沿着负梯度方向(残差方向)前进,通过一维极小值求解得到最优步长,保证函数值单调下降;
- 核心性质:相邻两步的搜索方向正交,迭代路径呈锯齿形,这是收敛慢的根源;
- 收敛特性:对称正定矩阵下无条件收敛,但收敛速度由矩阵条件数决定,病态矩阵下收敛速度急剧下降;
- 工程定位:最速下降法不是实用的工程算法,而是理解共轭梯度法、非线性优化下降算法的理论基础。
最速下降法 知识点深度讲解
各位同学,今天我们讲解的最速下降法,是连接「线性方程组变分等价性」和「共轭梯度法」的关键桥梁。它是求解无约束凸优化问题最基础的下降算法,也是理解共轭梯度法核心思想的必经之路。我会从核心思想、公式推导、迭代流程、核心性质、收敛性分析、优缺点与工程定位六个维度,把这个方法的本质讲透,同时讲清楚它的局限,为后续共轭梯度法的学习做好铺垫。
一、最速下降法的核心思想
上一节我们已经证明了:对称正定线性方程组\(Ax=b\)的解,等价于二次凸函数\(\varphi(x)=\frac{1}{2}(Ax,x)-(b,x)\)的全局极小值点。
最速下降法的核心逻辑,就是用最直观的思路求解这个极小值问题:
从任意初始点\(x^{(0)}\)出发,每一步都沿着当前点处\(\varphi(x)\)下降最快的方向前进,走到这个方向上\(\varphi(x)\)的最低点(一维极小值点);再以这个新点为起点,重复上述过程,直到逼近全局极小值点\(x^*\)。
这个思路可以拆解为两个核心问题:
- 什么方向是\(\varphi(x)\)在当前点下降最快的方向?
- 沿着这个方向,走多远(步长多大),才能到达这个方向上的最低点?
我们接下来就通过数学推导,逐一解决这两个问题。
二、通用下降算法框架与最优步长推导
首先我们先建立通用的下降算法框架,再针对最速下降法做特化。
1. 通用下降迭代格式
对于任意一个下降方向\(p^{(k)}\),我们可以构造迭代格式:
其中\(\alpha_k>0\)是迭代步长,我们的目标是找到最优的\(\alpha_k\),使得沿着\(p^{(k)}\)方向,\(\varphi(x)\)的函数值下降最多,也就是:
2. 最优步长的解析解
这个问题本质是一个一元函数的极小值求解问题,我们可以用上一节推导的二次函数一维展开式直接求解。
根据上一节的性质2,对任意\(x,p\in\mathbb{R}^n\)和\(\alpha\in\mathbb{R}\),有:
这是一个关于\(\alpha\)的一元二次函数,且因为\(A\)对称正定,\((Ap^{(k)},p^{(k)})>0\),所以这个函数开口向上,存在唯一的极小值点。
我们对\(\alpha\)求导,并令导数为0,即可解出最优步长:
整理后得到最优步长的通用公式:
这个公式是所有基于变分的下降算法的核心,无论是最速下降法还是共轭梯度法,最优步长都来自这个推导。它的物理意义是:沿着方向\(p^{(k)}\),让\(\varphi(x)\)达到极小值的唯一步长。
三、最速下降法的迭代格式
现在我们解决第一个核心问题:什么方向是下降最快的方向?
1. 最速下降方向:负梯度方向
多元函数在某点的梯度方向,是函数值上升最快的方向;反之,负梯度方向就是函数值下降最快的方向。
根据上一节的性质1,\(\varphi(x)\)的梯度为:
我们定义残差向量\(r^{(k)} = b - Ax^{(k)}\),它恰好是\(\varphi(x)\)在\(x^{(k)}\)处的负梯度:
因此,最速下降法的搜索方向,就取当前点的残差方向:
2. 最速下降法的最终迭代公式
将搜索方向\(p^{(k)}=r^{(k)}\)代入通用最优步长公式(6.41),注意到\(Ax^{(k)}-b = -r^{(k)}\),因此分子变为:
代入后负负得正,化简得到最速下降法的最优步长:
结合迭代格式,最终得到最速下降法的完整迭代公式:
其中\(r^{(k)}=b-Ax^{(k)}\)是第k步的残差向量。
3. 最速下降法的完整迭代步骤
- 初始化:选取初始迭代向量\(x^{(0)}\),计算初始残差\(r^{(0)}=b-Ax^{(0)}\),设置迭代步数\(k=0\);
- 计算最优步长:\(\alpha_k = \frac{(r^{(k)}, r^{(k)})}{(Ar^{(k)}, r^{(k)})}\);
- 更新迭代解:\(x^{(k+1)} = x^{(k)} + \alpha_k r^{(k)}\);
- 更新残差:\(r^{(k+1)} = b - Ax^{(k+1)}\);
- 收敛判断:若\(\|r^{(k+1)}\|_2 < \varepsilon\)(\(\varepsilon\)为预设精度,如\(10^{-6}\)),停止迭代,输出\(x^{(k+1)}\);否则令\(k=k+1\),返回步骤2。
四、最速下降法的核心性质
1. 相邻搜索方向的正交性
最速下降法有一个非常关键的性质:相邻两步的搜索方向(残差向量)相互正交,即:
证明过程
我们直接代入残差的定义展开:
根据最优步长公式(6.42),\(\alpha_k (A r^{(k)}, r^{(k)}) = (r^{(k)}, r^{(k)})\),因此上式结果为0,正交性得证。
几何意义与核心局限
这个性质的几何意义非常直观:
- 二次函数\(\varphi(x)\)的等值线是一族以\(x^*\)为中心的超椭球面,二维情况下就是椭圆曲线;
- 负梯度方向和等值线正交,因此每一步的搜索方向都和当前点的等值线垂直;
- 相邻两步的搜索方向正交,意味着迭代路径是锯齿形的折线,在二维情况下就是走直角转弯的路线。
这正是最速下降法的核心局限:它只保证了局部下降最快,却没有考虑全局的最优路径。尤其是当等值线是非常扁的椭圆(对应矩阵\(A\)的条件数很大,病态矩阵)时,锯齿形路径会来回震荡,收敛速度会变得极其缓慢。
2. 函数值的单调下降性
由最优步长的定义,每一步迭代都满足:
且当且仅当\(x^{(k)}=x^*\)(残差\(r^{(k)}=0\))时等号成立。
同时,因为\(A\)对称正定,\(\varphi(x)\)有下界\(\varphi(x^*)\),因此\(\{\varphi(x^{(k)})\}\)是单调下降且有下界的序列,必然存在极限,且极限就是\(\varphi(x^*)\),对应的迭代序列\(\{x^{(k)}\}\)必然收敛到方程组的解\(x^*\)。
这说明:只要\(A\)是对称正定矩阵,最速下降法是无条件收敛的,无论初始点怎么选,最终都会收敛到精确解。
五、收敛性分析:为什么最速下降法工程上很少用?
最速下降法虽然逻辑简单、无条件收敛,但在工程实际中几乎不会被使用,核心原因是它的收敛速度对矩阵的条件数极度敏感,病态矩阵下收敛速度会急剧下降。
1. 收敛速度的误差估计式
对于对称正定矩阵\(A\),设其最大特征值为\(\lambda_1\),最小特征值为\(\lambda_n\),则最速下降法的迭代误差满足:
其中\(\|u\|_A = \sqrt{(Au,u)}\)是向量的\(A\)-范数(能量范数)。
2. 条件数对收敛速度的影响
我们定义矩阵\(A\)的2-范数条件数:\(\text{cond}(A)_2 = \frac{\lambda_1}{\lambda_n}\),它衡量了矩阵的病态程度:条件数越大,矩阵越病态。
我们通过几个实例直观感受条件数对收敛速度的影响:
| 条件数\(\text{cond}(A)\) | 收敛因子\(\frac{\lambda_1-\lambda_n}{\lambda_1+\lambda_n}\) | 每步误差缩小比例 | 误差缩小到初始的\(10^{-6}\)需要的迭代步数 |
|---|---|---|---|
| 2(良态) | \(\frac{2-1}{2+1}=\frac{1}{3}\approx0.333\) | 66.7% | 约13步 |
| 10(轻度病态) | \(\frac{10-1}{10+1}\approx0.818\) | 18.2% | 约60步 |
| 1000(重度病态) | \(\frac{1000-1}{1000+1}\approx0.998\) | 0.2% | 约6900步 |
可以清晰看到:
- 当矩阵条件数很大时(工程中PDE离散得到的矩阵,条件数经常达到\(10^4\)甚至更高),收敛因子会无限接近1,每一步误差几乎没有缩小,需要成千上万步迭代才能达到精度要求;
- 迭代后期,残差\(\|r^{(k)}\|\)会变得非常小,此时舍入误差会主导计算,导致数值不稳定,甚至无法收敛到目标精度。
这就是最速下降法在工程中几乎不用的核心原因:它只在良态矩阵下有不错的收敛速度,而工程中绝大多数问题对应的矩阵都是病态的,此时它的收敛效率极低。
六、最速下降法的总结与后续衔接
1. 优缺点汇总
| 优点 | 缺点 |
|---|---|
| 逻辑简单,原理直观,编程实现极易 | 仅局部最优,全局收敛速度慢,病态矩阵下收敛效率极低 |
| 对称正定矩阵下无条件收敛,稳定性好 | 相邻搜索方向正交,迭代路径呈锯齿形,存在大量重复搜索 |
| 单步迭代计算量小,仅需一次矩阵-向量乘法和少量内积运算 | 迭代后期残差过小,舍入误差会导致数值不稳定 |
| 存储需求低,仅需存储2个向量(当前解和残差) | 工程实用价值极低,仅作为理论铺垫使用 |
2. 向共轭梯度法的过渡
最速下降法的核心问题,在于它的搜索方向只考虑了局部的下降最快,却没有避免重复搜索,导致收敛速度慢。
我们自然会思考:能不能构造一组搜索方向,既保证每一步\(\varphi(x)\)都严格下降,又能避免重复搜索,让迭代路径更高效地逼近极小值点?
答案是肯定的——这就是我们下一节要讲的共轭梯度法。共轭梯度法用关于\(A\)共轭的方向,替代了最速下降法中正交的负梯度方向,既保留了最速下降法的所有优点,又彻底解决了收敛慢的问题,成为了求解大型稀疏对称正定线性方程组的工业级标准算法。
七、核心知识点终极总结
- 核心等价:最速下降法的本质是通过求解二次函数的极小值,间接求解对称正定线性方程组,是变分原理的直接应用;
- 核心逻辑:每一步沿着负梯度方向(残差方向)前进,通过一维极小值求解得到最优步长,保证函数值单调下降;
- 核心性质:相邻两步的搜索方向正交,迭代路径呈锯齿形,这是收敛慢的根源;
- 收敛特性:对称正定矩阵下无条件收敛,但收敛速度由矩阵条件数决定,病态矩阵下收敛速度急剧下降;
- 工程定位:最速下降法不是实用的工程算法,而是理解共轭梯度法、非线性优化下降算法的理论基础。
共轭梯度法(CG法)完整知识点深度讲解
各位同学,今天我们讲解的共轭梯度法(Conjugate Gradient, CG),是求解大型稀疏对称正定线性方程组的工业级标准算法,也是我们这一章的核心内容。它完美解决了最速下降法收敛慢的核心缺陷,兼具理论上的有限步收敛性和工程上的高效迭代特性,是有限元分析、计算力学、电磁仿真等领域的求解器核心。
我会从算法流程拆解、核心数学性质、实例演算、几何意义、收敛性分析、工程定位六个维度,把CG法的维度,把CG法的本质讲透,让你不仅会算,更懂为什么这么算。
一、共轭梯度法的核心定位:对最速下降法的本质改进
最速下降法,它的核心缺陷是:相邻搜索方向正交,迭代路径呈锯齿形,只保证局部下降最快,全局收敛速度极慢,尤其是病态矩阵下几乎无法使用。
共轭梯度法的核心改进,就是用关于A共轭的搜索方向,替代了最速下降法中正交的负梯度方向:
- 共轭方向:若两个非零向量\(p^{(i)},p^{(j)}\)满足\((p^{(i)}, A p^{(j)})=0\)(\(i≠j\)),则称它们关于对称正定矩阵A共轭(A-正交);
- 核心优势:共轭方向组线性无关,n维空间中最多有n个共轭方向,沿着这组方向依次做一维极小值搜索,最多n步就能找到二次函数的全局极小值点,彻底避免了最速下降法的重复搜索和锯齿震荡。
同时,CG法保留了最速下降法的所有优点:无自由参数、单步计算量小、存储需求低、对称正定矩阵下无条件收敛。
二、共轭梯度法的标准算法流程与公式拆解
CG法的迭代流程完全由残差自动构造,无需手动调参,每一步仅包含向量内积、矩阵-向量乘法,完美适配稀疏矩阵。
完整算法步骤
(1)初始化
任取初始迭代向量\(x^{(0)} \in \mathbb{R}^n\),计算初始残差:
取初始搜索方向为初始残差方向:
(2)迭代循环(对\(k=0,1,2,\dots\))
① 计算最优步长\(\alpha_k\):
② 更新迭代解:
③ 更新残差向量:
④ 计算方向修正系数\(\beta_k\)(Fletcher-Reeves公式):
⑤ 更新共轭搜索方向:
(3)停机准则
若\(r^{(k)}=0\)(残差为0,得到精确解),或\((p^{(k)}, A p^{(k)})=0\)(搜索方向为零向量),则停止计算,此时\(x^{(k)}\)就是方程组的解。
工程中常用的停机条件为:\(\|r^{(k+1)}\|_2 / \|b\|_2 < \varepsilon\)(\(\varepsilon\)为预设精度,通常取\(10^{-6}\sim10^{-8}\))。
核心公式的本质解读
- 最优步长\(\alpha_k\):和最速下降法的步长公式逻辑一致,都是沿着当前搜索方向\(p^{(k)}\),让二次函数\(\varphi(x)\)达到极小值的唯一步长。区别仅在于搜索方向从残差\(r^{(k)}\)换成了共轭方向\(p^{(k)}\)。
- 残差更新公式:无需重新计算\(r^{(k+1)}=b-Ax^{(k+1)}\),用递推公式可减少一次矩阵-向量乘法,大幅降低计算量,这是CG法工程高效的关键。
- 修正系数\(\beta_k\):这是CG法的核心构造,它的作用是保证新的搜索方向\(p^{(k+1)}\)与之前所有的搜索方向都关于A共轭,彻底避免重复搜索,保证迭代的最优性。
- 搜索方向更新:新的搜索方向由当前步的残差(负梯度方向)和上一步的搜索方向加权得到,既保留了局部下降最快的特性,又保证了全局的共轭性。
三、共轭梯度法的核心数学性质
CG法的所有优势,都来自于它迭代过程中自动满足的三大核心性质,这也是它能有限步收敛的理论根基。
1. 残差的全局正交性
迭代过程中产生的所有残差向量两两正交,即:
n维欧氏空间中,最多有n个两两正交的非零向量,因此在\(r^{(0)},r^{(1)},\dots,r^{(n)}\)中,至少有一个是零向量。这意味着理论上最多n步迭代,残差就会变为0,得到方程组的精确解。
2. 搜索方向的全局A-共轭性
迭代过程中产生的所有搜索方向两两关于A共轭,即:
这组共轭方向是n维空间的一组基,沿着这组基依次做一维极小值搜索,就能遍历整个空间,最终找到全局极小值点,这是CG法有限步收敛的核心原因。
3. 算法的双重属性
- 直接法属性:在精确计算的前提下,n阶方程组最多n步就能得到精确解,和高斯消元法等直接法等价;
- 迭代法属性:实际计算中存在舍入误差,残差的正交性会逐渐损失,无法保证n步精确收敛;同时对于n≥1e4的超大型方程组,无需迭代到n步,远少于n步就能达到工程精度,因此它也是一种迭代法。
四、实例演算:CG法求解二阶线性方程组
我们通过教材例6.10,完整走一遍CG法的迭代流程,直观验证它的有限步收敛性。
求解方程组
系数矩阵\(A=\begin{pmatrix}3 & 1 \\ 1 & 2\end{pmatrix}\),显然对称正定,精确解为\(x^*=(1,2)^T\)。
迭代计算过程
步骤1:初始化
取初始向量\(x^{(0)}=(0,0)^T\),计算初始残差:
初始搜索方向\(p^{(0)}=r^{(0)}=\begin{pmatrix}5 \\ 5\end{pmatrix}\)。
步骤2:第一次迭代(k=0)
① 计算最优步长\(\alpha_0\):
分子:\((r^{(0)},r^{(0)}) = 5^2 + 5^2 = 50\)
先算\(A p^{(0)}\):\(\begin{pmatrix}3 & 1 \\ 1 & 2\end{pmatrix}\begin{pmatrix}5 \\ 5\end{pmatrix} = \begin{pmatrix}20 \\ 15\end{pmatrix}\)
分母:\((p^{(0)}, A p^{(0)}) = 5\times20 + 5\times15 = 175\)
因此\(\alpha_0 = \frac{50}{175} = \frac{2}{7}\)。
② 更新迭代解:
③ 更新残差:
④ 计算修正系数\(\beta_0\):
分子:\((r^{(1)},r^{(1)}) = (-\frac{5}{7})^2 + (\frac{5}{7})^2 = \frac{50}{49}\)
分母:\((r^{(0)},r^{(0)})=50\)
因此\(\beta_0 = \frac{\frac{50}{49}}{50} = \frac{1}{49}\)。
⑤ 更新搜索方向:
步骤3:第二次迭代(k=1)
① 计算最优步长\(\alpha_1\):
分子:\((r^{(1)},r^{(1)}) = \frac{50}{49}\)
先算\(A p^{(1)}\):\(\begin{pmatrix}3 & 1 \\ 1 & 2\end{pmatrix}\begin{pmatrix}-\frac{30}{49} \\ \frac{40}{49}\end{pmatrix} = \begin{pmatrix}-\frac{50}{49} \\ \frac{50}{49}\end{pmatrix}\)
分母:\((p^{(1)}, A p^{(1)}) = (-\frac{30}{49})\times(-\frac{50}{49}) + \frac{40}{49}\times\frac{50}{49} = \frac{3500}{2401}\)
因此\(\alpha_1 = \frac{\frac{50}{49}}{\frac{3500}{2401}} = \frac{7}{10}\)。
② 更新迭代解:
③ 验证残差:\(r^{(2)}=b-Ax^{(2)}=\begin{pmatrix}5 \\5\end{pmatrix}-\begin{pmatrix}3&1\\1&2\end{pmatrix}\begin{pmatrix}1\\2\end{pmatrix}=\begin{pmatrix}0\\0\end{pmatrix}\),残差为0,得到精确解。
实例核心结论
对于2阶方程组,CG法仅用2步迭代就得到了精确解,完美验证了有限步收敛性。而如果用最速下降法求解这个方程组,需要迭代数十步才能达到相同精度,差距极其明显。
五、几何意义:CG法与最速下降法的直观对比
我们通过教材图6-4,直观理解两种方法的迭代路径差异:
- 第一步迭代完全一致:CG法和最速下降法的初始搜索方向都是初始残差(负梯度方向),因此第一步的迭代点完全相同;
- 第二步迭代天差地别:
- CG法的第二步搜索方向是共轭方向,直接指向二次函数等值线(椭圆)的中心(精确解),一步到位,2步收敛;
- 最速下降法的第二步搜索方向是新的负梯度方向,和第一步方向正交,开始走锯齿形路径,在解附近反复震荡,收敛速度极慢。
这张图完美诠释了CG法的核心优势:它的搜索方向是全局最优的,避免了最速下降法的局部最优陷阱,收敛效率实现了质的飞跃。
六、收敛性分析与工程优化
1. 收敛速度的误差估计式
对于对称正定矩阵A,CG法的迭代误差满足:
其中:
- \(\|u\|_A = \sqrt{(Au,u)}\)是向量的A-范数(能量范数);
- \(K=\text{cond}(A)_2 = \frac{\lambda_{\text{max}}(A)}{\lambda_{\text{min}}(A)}\)是矩阵A的2-范数条件数。
2. 与最速下降法的收敛速度对比
| 方法 | 收敛因子 | 条件数K=100时的收敛因子 | 误差缩小到\(10^{-6}\)所需迭代步数 |
|---|---|---|---|
| 最速下降法 | \(\frac{K-1}{K+1}\) | \(\frac{99}{101}\approx0.98\) | 约690步 |
| 共轭梯度法 | \(\frac{\sqrt{K}-1}{\sqrt{K}+1}\) | \(\frac{9}{11}\approx0.818\) | 约60步 |
可以清晰看到:
- CG法的收敛因子远小于最速下降法,收敛速度快了一个数量级;
- 条件数K越小,矩阵越良态,CG法收敛速度越快;
- 当K>>1(病态矩阵)时,CG法的收敛速度也会变慢,需要通过预条件技术优化。
3. 工程优化:预条件共轭梯度法(PCG)
对于病态矩阵,工程中通用的优化方案是预条件共轭梯度法(Preconditioned Conjugate Gradient, PCG):
- 核心思路:引入预条件矩阵M(近似A的逆,且容易求逆),将原方程组\(Ax=b\)转化为等价方程组\(M^{-1}Ax = M^{-1}b\),大幅降低系数矩阵的条件数;
- 常用预条件子:对角预条件(雅可比预条件)、不完全Cholesky分解预条件(ICCG),其中ICCG是对称正定矩阵的工业级标准预条件子,能将收敛速度再提升1~2个数量级。
七、核心知识点终极总结
- 核心本质:共轭梯度法是一种变分方法,通过构造关于A共轭的搜索方向,求解二次函数的全局极小值点,间接求解对称正定线性方程组;
- 核心优势:无自由参数、单步计算量小、存储需求低,理论上n步收敛,实际工程中收敛速度远快于最速下降法、SOR迭代法;
- 核心性质:迭代过程自动满足残差全局正交、搜索方向全局A-共轭,这是有限步收敛的理论根基;
- 适用范围:仅适用于对称正定矩阵,非对称矩阵需使用BiCG、BiCGSTAB、GMRES等推广版本;
- 工程定位:是求解大型稀疏对称正定线性方程组的首选算法,搭配预条件子后,是有限元、计算力学、电磁仿真等领域的标准求解器核心。
posted on 2026-02-17 22:02 Indian_Mysore 阅读(1) 评论(0) 收藏 举报
浙公网安备 33010602011771号