7.3迭代收敛加速方法:埃特金加速法与斯特芬森迭代法
迭代收敛加速方法:埃特金加速法与斯特芬森迭代法 深度讲解与推导证明
各位同学,今天我们来系统讲解数值分析中求解不动点方程\(x=\varphi(x)\)的两大核心加速方法——埃特金(Aitken)Δ²加速法和斯特芬森(Steffensen)迭代法。这两个方法解决了经典不动点迭代收敛慢、甚至发散的核心痛点,是数值迭代领域的经典成果。我们会从背景引入、公式推导、收敛性证明、核心特性四个维度展开,最后用表格做系统归纳。
一、方法背景:不动点迭代的收敛痛点
我们要求解方程\(f(x)=0\),常将其改写为不动点形式\(x=\varphi(x)\),构造迭代格式\(x_{k+1}=\varphi(x_k)\)。根据不动点收敛定理:
- 若\(\varphi(x)\)在根\(x^*\)的邻域内连续可导,且\(|\varphi'(x^*)|<1\),迭代线性收敛;
- 若\(|\varphi'(x^*)|>1\),迭代直接发散;
- 即使收敛,线性收敛的误差满足\(e_{k+1}\approx \varphi'(x^*)e_k\)(\(e_k=x_k-x^*\)为迭代误差),误差呈等比衰减,收敛速度极慢,需要成百上千次迭代才能达到精度要求。
因此,如何提升迭代收敛速度、甚至让发散的迭代变得收敛,就是我们今天要解决的核心问题。
二、埃特金(Aitken)Δ²加速方法
埃特金加速法是通用的线性收敛序列加速方法,不限制原序列的生成方式,只要序列是线性收敛的,就能实现加速。
2.1 公式详细推导
设\(x^*\)是\(x=\varphi(x)\)的精确根,即\(x^*=\varphi(x^*)\)。对任意迭代值\(x_k\),由微分中值定理:
其中\(\xi_k\)介于\(x_k\)与\(x^*\)之间。
核心假设
\(\varphi'(x)\)在\(x^*\)的邻域内变化极小,可近似为常数\(L=\varphi'(x^*)\),因此迭代误差满足线性收敛的核心特征:
对连续两次迭代,我们可以写出两组误差关系:
- 第一次迭代:\(x_{k+1}-x^* \approx L(x_k-x^*)\)
- 第二次迭代:\(x_{k+2}-x^* \approx L(x_{k+1}-x^*)\)
消去未知量\(L\),求解\(x^*\)
从两式中分别解出\(L\),联立得:
交叉相乘展开:
展开左右两侧:
消去两侧的\((x^*)^2\),将含\(x^*\)的项移到左侧,其余项移到右侧:
最终解出\(x^*\)的近似表达式:
差分形式改写(Δ²形式)
为了更直观体现数值意义,我们对式(2)做代数变形,引入差分算子:
- 一阶差分:\(\Delta x_k = x_{k+1} - x_k\)
- 二阶差分:\(\Delta^2 x_k = \Delta(\Delta x_k) = x_{k+2} - 2x_{k+1} + x_k\)
对式(2)做拆分变形:
代入差分算子,得到埃特金Δ²加速的最终公式:
其中\(\bar{x}_{k+1}\)是对\(x^*\)的加速近似值。
2.2 收敛性证明(加速效果的核心依据)
我们要证明:加速后的序列\(\{\bar{x}_k\}\)收敛速度远快于原序列\(\{x_k\}\),即:
该式说明,\(\bar{x}_{k+1}-x^*\)是\(x_k-x^*\)的高阶无穷小,实现了超线性加速。
证明过程
记迭代误差\(e_k = x_k - x^*\),即\(x_k = x^* + e_k\)。将\(\bar{x}_{k+1} - x^*\)展开:
通分后化简分子:
对于线性收敛序列,满足\(\lim_{k\to\infty}\frac{e_{k+1}}{e_k}=L=\varphi'(x^*)\neq0\),即\(e_{k+1}=(L+\alpha_k)e_k\),其中\(\lim_{k\to\infty}\alpha_k=0\)。代入\(e_{k+2}=(L+\alpha_{k+1})e_{k+1}=(L+\alpha_{k+1})(L+\alpha_k)e_k\),分别计算分子和分母:
- 分子:\(e_k e_{k+2} - e_{k+1}^2 = (L+\alpha_k)e_k^2(\alpha_{k+1}-\alpha_k)\)
- 分母:\(e_{k+2}-2e_{k+1}+e_k = e_k\left[(L-1)^2 + o(1)\right]\)
将分子分母代入式(5):
当\(k\to\infty\)时,\(\alpha_{k+1}-\alpha_k\to0\),因此\(\lim_{k\to\infty}\frac{\bar{x}_{k+1}-x^*}{x_k-x^*}=0\),得证。
2.3 埃特金方法的核心特性
- 通用性极强:不限制原序列\(\{x_k\}\)的生成方式,只要序列是线性收敛的,就能实现加速,无需修改原迭代逻辑,仅对迭代结果做后处理;
- 无导数依赖:全程仅需计算函数值,无需计算\(\varphi(x)\)的导数,规避了导数计算的复杂度;
- 超线性加速:将原线性收敛的序列提升为超线性收敛,大幅减少迭代次数。
三、斯特芬森(Steffensen)迭代法
斯特芬森迭代法是埃特金加速法与不动点迭代的深度融合,将埃特金的“两步迭代+一次加速”直接整合为一步迭代格式,不仅实现了二阶收敛,还能修复原不动点迭代的发散问题。
3.1 迭代公式的推导与理解
埃特金方法需要先计算\(x_k, x_{k+1}=\varphi(x_k), x_{k+2}=\varphi(x_{k+1})\),再计算加速值\(\bar{x}_{k+1}\)。斯特芬森迭代直接将加速后的结果作为下一个迭代值,形成闭环迭代格式:
对\(k=0,1,2,\dots\),迭代公式为:
几何意义:误差函数的线性插值求根
我们可以从“误差外推”的角度理解这个公式:
要求解\(x=\varphi(x)\),等价于求解误差函数\(\varepsilon(x)=\varphi(x)-x=0\),根\(x^*\)满足\(\varepsilon(x^*)=0\)。
- 对当前近似值\(x_k\),计算\(y_k=\varphi(x_k)\),对应误差\(\varepsilon(x_k)=y_k - x_k\);
- 计算\(z_k=\varphi(y_k)\),对应误差\(\varepsilon(y_k)=z_k - y_k\);
- 过两点\((x_k, \varepsilon(x_k))\)和\((y_k, \varepsilon(y_k))\)做线性插值(直线),求该直线与\(x\)轴(\(\varepsilon=0\))的交点,即为新的迭代值\(x_{k+1}\)。
直线方程为:
令\(\varepsilon(x)=0\),解出\(x\):
将\(\varepsilon(x_k)=y_k-x_k\)、\(\varepsilon(y_k)=z_k-y_k\)代入,即可得到式(6)的迭代公式,完美对应。
不动点形式改写
斯特芬森迭代可改写为新的不动点迭代\(x_{k+1}=\psi(x_k)\),其中新的迭代函数为:
这个改写是我们证明收敛性的核心基础。
3.2 核心定理的详细证明
定理7.5
- 若\(x^*\)为式(7)定义的\(\psi(x)\)的不动点,则\(x^*\)必为\(\varphi(x)\)的不动点;
- 反之,若\(x^*\)为\(\varphi(x)\)的不动点,\(\varphi''(x)\)在\(x^*\)的邻域内存在,且\(\varphi'(x^*)\neq1\),则\(x^*\)是\(\psi(x)\)的不动点,且斯特芬森迭代是二阶收敛的。
证明1:\(\psi(x)\)的不动点必为\(\varphi(x)\)的不动点
若\(x^*\)是\(\psi(x)\)的不动点,即\(\psi(x^*)=x^*\),代入式(7):
移项得:
分式为0的充要条件是分子为0,即\([\varphi(x^*)-x^*]^2=0\),因此\(\varphi(x^*)=x^*\),即\(x^*\)是\(\varphi(x)\)的不动点,得证。
证明2:\(\varphi(x)\)的不动点必为\(\psi(x)\)的不动点,且迭代二阶收敛
第一步:证明\(x^*\)是\(\psi(x)\)的不动点
若\(x^*\)是\(\varphi(x)\)的不动点,即\(\varphi(x^*)=x^*\),代入\(\psi(x^*)\)会出现\(0/0\)型不定式,因此我们通过极限证明:
令\(h=x-x^*\),记\(L=\varphi'(x^*)\),\(M=\varphi''(x^*)\),将\(\varphi(x)\)在\(x^*\)处做泰勒展开:
-
计算分子\([\varphi(x)-x]^2\):
\[\varphi(x)-x = (L-1)h + \frac{1}{2}Mh^2 + o(h^2) \]\[[\varphi(x)-x]^2 = (L-1)^2h^2 + (L-1)Mh^3 + o(h^3) \] -
计算分母\(\varphi(\varphi(x))-2\varphi(x)+x\):
先展开\(\varphi(\varphi(x))\):\[\varphi(\varphi(x)) = x^* + L^2h + \frac{1}{2}LM(1+L)h^2 + o(h^2) \]再计算\(-2\varphi(x)+x\):
\[-2\varphi(x)+x = -x^* + (1-2L)h - Mh^2 + o(h^2) \]合并得分母:
\[\varphi(\varphi(x))-2\varphi(x)+x = (L-1)^2h + M\left(\frac{L(1+L)}{2}-1\right)h^2 + o(h^2) \] -
求极限:
\[\lim_{h\to0}\frac{[\varphi(x)-x]^2}{\varphi(\varphi(x))-2\varphi(x)+x} = \lim_{h\to0}\frac{(L-1)^2h^2 + o(h^2)}{(L-1)^2h + o(h)} = 0 \]因此\(\lim_{x\to x^*}\psi(x) = x^* - 0 = x^*\),补充定义\(\psi(x^*)=x^*\),即\(x^*\)是\(\psi(x)\)的不动点。
第二步:证明迭代二阶收敛
根据不动点迭代的收敛阶定理:若\(\psi(x)\)在\(x^*\)的邻域内二阶连续可导,且\(\psi'(x^*)=0\),\(\psi''(x^*)\neq0\),则迭代是二阶收敛的。因此我们只需证明\(\psi'(x^*)=0\)。
对\(\psi(x) = x - \frac{N(x)}{D(x)}\)(其中\(N(x)=[\varphi(x)-x]^2\),\(D(x)=\varphi(\varphi(x))-2\varphi(x)+x\))求导:
我们已经通过泰勒展开得到:
- \(N(x)=(L-1)^2h^2 + o(h^2)\),\(N'(x)=2(L-1)^2h + o(h)\)
- \(D(x)=(L-1)^2h + o(h)\),\(D'(x)=(L-1)^2 + o(1)\)
代入导数表达式,计算分式部分的极限:
因此\(\lim_{h\to0}\psi'(x) = 1 - 1 = 0\),即\(\psi'(x^*)=0\)。
根据收敛阶定理,斯特芬森迭代是二阶收敛的,得证。
3.3 斯特芬森迭代的核心优势
- 二阶收敛:收敛速度远快于线性收敛的不动点迭代,教材例7.6中,原不动点迭代需要16次达到的精度,斯特芬森迭代仅需2次;
- 修复发散迭代:即使原不动点迭代\(|\varphi'(x^*)|>1\)(迭代发散),斯特芬森迭代仍可能收敛,教材例7.5中,原迭代发散,斯特芬森迭代5次即可收敛;
- 无导数依赖:全程仅需计算函数值,无需计算导数,对比需要求导的牛顿法,适用场景更广。
四、两大方法核心内容系统归纳
| 对比维度 | 埃特金(Aitken)Δ²加速方法 | 斯特芬森(Steffensen)迭代法 |
|---|---|---|
| 核心迭代公式 | \(\bar{x}_{k+1} = x_k - \frac{(x_{k+1}-x_k)^2}{x_{k+2}-2x_{k+1}+x_k} = x_k - \frac{(\Delta x_k)^2}{\Delta^2 x_k}\) 其中\(x_{k+1}=\varphi(x_k), x_{k+2}=\varphi(x_{k+1})\) |
\(\begin{cases} y_k = \varphi(x_k) \\ z_k = \varphi(y_k) \\ x_{k+1} = x_k - \frac{(y_k - x_k)^2}{z_k - 2y_k + x_k} \end{cases}\) 不动点形式:\(x_{k+1}=\psi(x_k)\),\(\psi(x) = x - \frac{[\varphi(x)-x]^2}{\varphi(\varphi(x))-2\varphi(x)+x}\) |
| 核心原理 | 利用线性收敛序列的误差等比特性,两次迭代消去导数近似值,对线性收敛序列做误差外推加速 | 埃特金加速法与不动点迭代的一体化融合,对误差函数\(\varepsilon(x)=\varphi(x)-x\)做两点线性插值求根 |
| 适用场景 | 任意线性收敛的序列,不限制序列生成方式,通用性极强,属于迭代结果后处理 | 专门针对不动点方程\(x=\varphi(x)\)的求解,属于迭代+加速一体化格式 |
| 收敛特性 | 加速后序列超线性收敛,满足\(\lim_{k\to\infty}\frac{\bar{x}_{k+1}-x^*}{x_k -x^*}=0\) | 二阶收敛;原迭代发散时仍可能收敛;原迭代p阶收敛时,该方法可达p+1阶收敛 |
| 计算特点 | 两步原迭代+一次加速计算,不改变原迭代流程,可随时介入加速 | 每步迭代包含两次函数求值+一次加速计算,直接输出下一个迭代值,流程紧凑 |
| 核心优势 | 通用性无出其右,无需修改原迭代代码,无导数依赖 | 二阶收敛速度极快,可修复原迭代的发散问题,无导数依赖 |
| 局限性 | 仅对线性收敛序列有效,对高阶收敛序列加速效果有限 | 仅针对不动点迭代设计,通用性弱于埃特金方法,单步计算量略大于原不动点迭代 |
五、核心结论
- 埃特金加速法是通用型线性序列加速工具,核心价值是“不改变原迭代,仅提升结果精度”,适合所有线性收敛的迭代场景;
- 斯特芬森迭代法是专用型不动点求解工具,核心价值是“从根源上提升迭代收敛阶,甚至修复发散”,是不动点迭代的进阶替代方案;
- 两个方法均无需计算导数,仅依赖函数值计算,在工程数值计算中,是比牛顿法更易用、鲁棒性更强的迭代求解方法。
六、例题演练
例7.6 详细解答与分析
1. 问题重述
求解方程 (3x^2 - e^x = 0) 在区间 ([3,4]) 上的解。
2. 不动点迭代法(式7.4)
- 方程变形:将 (3x^2 = e^x) 两边取自然对数,得到 (x = \ln(3x^2) = 2\ln x + \ln 3)。
- 迭代函数:(\varphi(x) = 2\ln x + \ln 3)。
- 迭代格式:(x_{k+1} = 2\ln x_k + \ln 3)。
- 收敛性验证:
- 导数:(\varphi'(x) = \frac{2}{x})。
- 在区间 ([3,4]) 上,(\max|\varphi'(x)| = \frac{2}{3} < 1),满足压缩映射条件,迭代收敛。
- 计算结果:取初值 (x_0 = 3.5),迭代16次得到 (x_{16} \approx 3.73307)(6位有效数字)。
3. 斯特芬森迭代法(式7.13)
-
迭代步骤:
- (y_k = \varphi(x_k) = 2\ln x_k + \ln 3)
- (z_k = \varphi(y_k) = 2\ln y_k + \ln 3)
- (x_{k+1} = x_k - \frac{(y_k - x_k)^2}{z_k - 2y_k + x_k})
-
计算结果(表7-6):
(k) (x_k) (y_k) (z_k) 0 3.5 3.60414 3.66278 1 3.73835 3.73590 3.73459 2 3.73308 - - 仅需2步迭代,结果 (x_2 \approx 3.73308) 就与原迭代16次的结果精度相当。
4. 方法对比与结论
| 方法 | 迭代次数 | 结果(6位有效数字) | 收敛速度 |
|---|---|---|---|
| 不动点迭代(式7.4) | 16次 | 3.73307 | 线性收敛 |
| 斯特芬森迭代(式7.13) | 2次 | 3.73308 | 二阶收敛 |
💡 结论:斯特芬森迭代法通过将埃特金加速与不动点迭代结合,将收敛速度从线性提升到二阶,显著减少了迭代次数,极大提高了求解效率。
posted on 2026-02-27 22:26 Indian_Mysore 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号