昆仑山:眼中无形心中有穴之穴人合一

夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及!

 

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\),由微分中值定理:

\[x_{k+1}-x^* = \varphi(x_k)-\varphi(x^*) = \varphi'(\xi_k)(x_k-x^*) \]

其中\(\xi_k\)介于\(x_k\)\(x^*\)之间。

核心假设

\(\varphi'(x)\)\(x^*\)的邻域内变化极小,可近似为常数\(L=\varphi'(x^*)\),因此迭代误差满足线性收敛的核心特征:

\[e_{k+1}=x_{k+1}-x^* \approx L \cdot e_k = L(x_k-x^*) \tag{1} \]

对连续两次迭代,我们可以写出两组误差关系:

  • 第一次迭代:\(x_{k+1}-x^* \approx L(x_k-x^*)\)
  • 第二次迭代:\(x_{k+2}-x^* \approx L(x_{k+1}-x^*)\)

消去未知量\(L\),求解\(x^*\)

从两式中分别解出\(L\),联立得:

\[\frac{x_{k+1}-x^*}{x_k-x^*} \approx \frac{x_{k+2}-x^*}{x_{k+1}-x^*} \]

交叉相乘展开:

\[(x_{k+1}-x^*)^2 \approx (x_k-x^*)(x_{k+2}-x^*) \]

展开左右两侧:

\[x_{k+1}^2 - 2x_{k+1}x^* + (x^*)^2 \approx x_k x_{k+2} - x_k x^* - x_{k+2}x^* + (x^*)^2 \]

消去两侧的\((x^*)^2\),将含\(x^*\)的项移到左侧,其余项移到右侧:

\[x^*(-2x_{k+1} + x_k + x_{k+2}) \approx x_k x_{k+2} - x_{k+1}^2 \]

最终解出\(x^*\)的近似表达式:

\[x^* \approx \frac{x_k x_{k+2} - x_{k+1}^2}{x_k - 2x_{k+1} + x_{k+2}} \tag{2} \]

差分形式改写(Δ²形式)

为了更直观体现数值意义,我们对式(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)做拆分变形:

\[\begin{align*} \frac{x_k x_{k+2} - x_{k+1}^2}{x_k - 2x_{k+1} + x_{k+2}} &= \frac{x_k(x_k - 2x_{k+1} + x_{k+2}) - (x_{k+1}-x_k)^2}{x_k - 2x_{k+1} + x_{k+2}} \\ &= x_k - \frac{(x_{k+1}-x_k)^2}{x_{k+2} - 2x_{k+1} + x_k} \end{align*} \]

代入差分算子,得到埃特金Δ²加速的最终公式:

\[\bar{x}_{k+1} = x_k - \frac{(\Delta x_k)^2}{\Delta^2 x_k} = x_k - \frac{(x_{k+1}-x_k)^2}{x_{k+2} - 2x_{k+1} + x_k}, \quad k=0,1,2,\dots \tag{3} \]

其中\(\bar{x}_{k+1}\)是对\(x^*\)的加速近似值。

2.2 收敛性证明(加速效果的核心依据)

我们要证明:加速后的序列\(\{\bar{x}_k\}\)收敛速度远快于原序列\(\{x_k\}\),即:

\[\lim_{k \to \infty} \frac{\bar{x}_{k+1} - x^*}{x_k - x^*} = 0 \tag{4} \]

该式说明,\(\bar{x}_{k+1}-x^*\)\(x_k-x^*\)的高阶无穷小,实现了超线性加速。

证明过程

记迭代误差\(e_k = x_k - x^*\),即\(x_k = x^* + e_k\)。将\(\bar{x}_{k+1} - x^*\)展开:

\[\begin{align*} \bar{x}_{k+1} - x^* &= \left(x_k - \frac{(x_{k+1}-x_k)^2}{x_{k+2}-2x_{k+1}+x_k}\right) - x^* \\ &= e_k - \frac{(e_{k+1}-e_k)^2}{e_{k+2}-2e_{k+1}+e_k} \end{align*} \]

通分后化简分子:

\[\begin{align*} \bar{x}_{k+1} - x^* &= \frac{e_k(e_{k+2}-2e_{k+1}+e_k) - (e_{k+1}-e_k)^2}{e_{k+2}-2e_{k+1}+e_k} \\ &= \frac{e_k e_{k+2} - e_{k+1}^2}{e_{k+2}-2e_{k+1}+e_k} \tag{5} \end{align*} \]

对于线性收敛序列,满足\(\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):

\[\frac{\bar{x}_{k+1} - x^*}{e_k} = \frac{(L+\alpha_k)(\alpha_{k+1}-\alpha_k)}{(L-1)^2 + o(1)} \]

\(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 埃特金方法的核心特性

  1. 通用性极强:不限制原序列\(\{x_k\}\)的生成方式,只要序列是线性收敛的,就能实现加速,无需修改原迭代逻辑,仅对迭代结果做后处理;
  2. 无导数依赖:全程仅需计算函数值,无需计算\(\varphi(x)\)的导数,规避了导数计算的复杂度;
  3. 超线性加速:将原线性收敛的序列提升为超线性收敛,大幅减少迭代次数。

三、斯特芬森(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\),迭代公式为:

\[\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} \tag{6} \]

几何意义:误差函数的线性插值求根

我们可以从“误差外推”的角度理解这个公式:
要求解\(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) = \varepsilon(x_k) + \frac{\varepsilon(y_k)-\varepsilon(x_k)}{y_k - x_k}(x - x_k) \]

\(\varepsilon(x)=0\),解出\(x\)

\[x = x_k - \varepsilon(x_k)\cdot\frac{y_k - x_k}{\varepsilon(y_k)-\varepsilon(x_k)} \]

\(\varepsilon(x_k)=y_k-x_k\)\(\varepsilon(y_k)=z_k-y_k\)代入,即可得到式(6)的迭代公式,完美对应。

不动点形式改写

斯特芬森迭代可改写为新的不动点迭代\(x_{k+1}=\psi(x_k)\),其中新的迭代函数为:

\[\psi(x) = x - \frac{[\varphi(x)-x]^2}{\varphi(\varphi(x)) - 2\varphi(x) + x} \tag{7} \]

这个改写是我们证明收敛性的核心基础。

3.2 核心定理的详细证明

定理7.5

  1. \(x^*\)为式(7)定义的\(\psi(x)\)的不动点,则\(x^*\)必为\(\varphi(x)\)的不动点;
  2. 反之,若\(x^*\)\(\varphi(x)\)的不动点,\(\varphi''(x)\)\(x^*\)的邻域内存在,且\(\varphi'(x^*)\neq1\),则\(x^*\)\(\psi(x)\)的不动点,且斯特芬森迭代是二阶收敛的。

证明1:\(\psi(x)\)的不动点必为\(\varphi(x)\)的不动点

\(x^*\)\(\psi(x)\)的不动点,即\(\psi(x^*)=x^*\),代入式(7):

\[x^* = x^* - \frac{[\varphi(x^*)-x^*]^2}{\varphi(\varphi(x^*)) - 2\varphi(x^*) + x^*} \]

移项得:

\[\frac{[\varphi(x^*)-x^*]^2}{\varphi(\varphi(x^*)) - 2\varphi(x^*) + x^*} = 0 \]

分式为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\)型不定式,因此我们通过极限证明:

\[\lim_{x\to x^*}\psi(x) = x^* \]

\(h=x-x^*\),记\(L=\varphi'(x^*)\)\(M=\varphi''(x^*)\),将\(\varphi(x)\)\(x^*\)处做泰勒展开:

\[\varphi(x) = x^* + Lh + \frac{1}{2}Mh^2 + o(h^2) \]

  1. 计算分子\([\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) \]

  2. 计算分母\(\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) \]

  3. 求极限:

    \[\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\))求导:

\[\psi'(x) = 1 - \frac{N'(x)D(x) - N(x)D'(x)}{[D(x)]^2} \]

我们已经通过泰勒展开得到:

  • \(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}\frac{N'(x)D(x) - N(x)D'(x)}{[D(x)]^2} = \lim_{h\to0}\frac{2(L-1)^4h^2 - (L-1)^4h^2 + o(h^2)}{(L-1)^4h^2 + o(h^2)} = 1 \]

因此\(\lim_{h\to0}\psi'(x) = 1 - 1 = 0\),即\(\psi'(x^*)=0\)

根据收敛阶定理,斯特芬森迭代是二阶收敛的,得证。

3.3 斯特芬森迭代的核心优势

  1. 二阶收敛:收敛速度远快于线性收敛的不动点迭代,教材例7.6中,原不动点迭代需要16次达到的精度,斯特芬森迭代仅需2次;
  2. 修复发散迭代:即使原不动点迭代\(|\varphi'(x^*)|>1\)(迭代发散),斯特芬森迭代仍可能收敛,教材例7.5中,原迭代发散,斯特芬森迭代5次即可收敛;
  3. 无导数依赖:全程仅需计算函数值,无需计算导数,对比需要求导的牛顿法,适用场景更广。

四、两大方法核心内容系统归纳

对比维度 埃特金(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阶收敛
计算特点 两步原迭代+一次加速计算,不改变原迭代流程,可随时介入加速 每步迭代包含两次函数求值+一次加速计算,直接输出下一个迭代值,流程紧凑
核心优势 通用性无出其右,无需修改原迭代代码,无导数依赖 二阶收敛速度极快,可修复原迭代的发散问题,无导数依赖
局限性 仅对线性收敛序列有效,对高阶收敛序列加速效果有限 仅针对不动点迭代设计,通用性弱于埃特金方法,单步计算量略大于原不动点迭代

五、核心结论

  1. 埃特金加速法是通用型线性序列加速工具,核心价值是“不改变原迭代,仅提升结果精度”,适合所有线性收敛的迭代场景;
  2. 斯特芬森迭代法是专用型不动点求解工具,核心价值是“从根源上提升迭代收敛阶,甚至修复发散”,是不动点迭代的进阶替代方案;
  3. 两个方法均无需计算导数,仅依赖函数值计算,在工程数值计算中,是比牛顿法更易用、鲁棒性更强的迭代求解方法。

六、例题演练

例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)

  • 迭代步骤

    1. (y_k = \varphi(x_k) = 2\ln x_k + \ln 3)
    2. (z_k = \varphi(y_k) = 2\ln y_k + \ln 3)
    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)    收藏  举报

导航