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

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

 

7.5弦截法与抛物线法

弦截法与抛物线法知识点深度讲解与推导

我们之前讲解的牛顿法,核心优势是二阶收敛、迭代速度快,但存在一个核心局限:每步迭代都需要计算函数的导数 \(f'(x_k)\),当函数 \(f(x)\) 形式复杂、导数难以计算时,牛顿法的应用会受到极大限制。

本节课讲解的弦截法抛物线法,核心思想是利用已计算的函数值构造插值多项式,用插值多项式的根逼近原方程的根,完全避免了导数的计算,是工程中求解非线性方程的核心实用方法。


一、弦截法(割线法)

1.1 核心思想与迭代公式推导

弦截法的核心是以直代曲:利用方程根的两个相邻近似值 \(x_k, x_{k-1}\) 及其对应的函数值 \(f(x_k), f(x_{k-1})\),构造一次插值多项式(直线),用该直线与x轴的交点,作为原方程根的新近似值 \(x_{k+1}\)

公式严格推导

已知两个点 \((x_{k-1}, f(x_{k-1}))\)\((x_k, f(x_k))\),构造一次牛顿插值多项式(直线的点斜式):

\[p_1(x) = f(x_k) + \frac{f(x_k) - f(x_{k-1})}{x_k - x_{k-1}} \cdot (x - x_k) \]

该式就是过两点的直线方程,我们令 \(p_1(x)=0\),求解得到的根即为 \(x_{k+1}\)

  1. 移项得:\(-f(x_k) = \frac{f(x_k) - f(x_{k-1})}{x_k - x_{k-1}} \cdot (x_{k+1} - x_k)\)
  2. 两边同乘 \((x_k - x_{k-1})\)\(-f(x_k)(x_k - x_{k-1}) = \left[f(x_k) - f(x_{k-1})\right] \cdot (x_{k+1} - x_k)\)
  3. 整理求解 \(x_{k+1}\)

\[\boldsymbol{x_{k+1} = x_k - \frac{f(x_k)}{f(x_k) - f(x_{k-1})} \cdot (x_k - x_{k-1})} \tag{7.25} \]

与牛顿法的关联

牛顿法的迭代公式为:

\[x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} \]

弦截法本质是用一阶差商 \(\frac{f(x_k) - f(x_{k-1})}{x_k - x_{k-1}}\) 代替了牛顿法中的导数 \(f'(x_k)\),是牛顿法的导数离散化形式,因此也叫割线法。

1.2 几何意义

方程 \(f(x)=0\) 的根 \(x^*\) 是曲线 \(y=f(x)\) 与x轴的交点。
弦截法中,\(x_{k+1}\) 是过曲线上两点 \(P_k(x_k, f(x_k))\)\(P_{k-1}(x_{k-1}, f(x_{k-1}))\)弦(割线)与x轴交点的横坐标,因此得名弦截法。

方法 几何本质 所需信息
牛顿法 曲线在单点的切线与x轴的交点 1个点的函数值+导数值
弦截法 曲线过两点的割线与x轴的交点 2个点的函数值,无需导数

1.3 收敛性分析

核心收敛定理

定理7.6 假设 \(f(x)\) 在根 \(x^*\) 的邻域 \(\Delta: |x-x^*| \leq \delta\) 内具有二阶连续导数,且对任意 \(x \in \Delta\)\(f'(x) \neq 0\),初值 \(x_0, x_1 \in \Delta\),那么当邻域 \(\Delta\) 充分小时,弦截法将按阶

\[\boldsymbol{p = \frac{1+\sqrt{5}}{2} \approx 1.618} \]

收敛到根 \(x^*\)

收敛特性说明

  1. 弦截法是超线性收敛,收敛阶1.618(黄金分割比),快于不动点迭代的线性收敛,慢于牛顿法的二阶收敛;
  2. 收敛阶的来源:迭代误差满足渐近关系 \(e_{k+1} \approx C \cdot e_k \cdot e_{k-1}\),其收敛阶是方程 \(\lambda^2 = \lambda + 1\) 的正根,即 \(\frac{1+\sqrt{5}}{2}\)
  3. 弦截法是两步迭代法,计算 \(x_{k+1}\) 需要用到前两步的结果 \(x_k, x_{k-1}\),因此需要给定两个初始值 \(x_0, x_1\)

1.4 例题计算(例7.9)

用弦截法求解方程 \(f(x)=xe^x -1=0\),取初始值 \(x_0=0.5, x_1=0.6\)

分步计算过程

  1. 计算初始点函数值:
    \(f(x_0)=f(0.5)=0.5e^{0.5}-1 \approx -0.175639\)
    \(f(x_1)=f(0.6)=0.6e^{0.6}-1 \approx 0.093271\)

  2. 计算 \(x_2\)

    \[x_2 = x_1 - \frac{f(x_1)(x_1-x_0)}{f(x_1)-f(x_0)} = 0.6 - \frac{0.093271 \times 0.1}{0.093271 - (-0.175639)} \approx 0.56532 \]

  3. 计算 \(x_3\)
    先算 \(f(x_2)=f(0.56532) \approx -0.005031\)

    \[x_3 = x_2 - \frac{f(x_2)(x_2-x_1)}{f(x_2)-f(x_1)} = 0.56532 - \frac{(-0.005031) \times (-0.03468)}{-0.005031 - 0.093271} \approx 0.56709 \]

  4. 计算 \(x_4\)
    先算 \(f(x_3) \approx -0.00007\)
    迭代后得到 \(x_4 \approx 0.56714\),与真实根一致,迭代4步收敛。

计算结果汇总

迭代步数 \(k\) 0 1 2 3 4
\(x_k\) 0.5 0.6 0.56532 0.56709 0.56714

二、抛物线法(密勒(Müller)法)

2.1 核心思想与迭代公式推导

抛物线法是弦截法的高阶推广,核心思想是以曲代曲:利用方程根的三个相邻近似值 \(x_k, x_{k-1}, x_{k-2}\) 及其函数值,构造二次插值多项式(抛物线),用抛物线与x轴的一个交点,作为原方程根的新近似值 \(x_{k+1}\)

公式严格推导

已知三个点 \((x_k, f(x_k))\)\((x_{k-1}, f(x_{k-1}))\)\((x_{k-2}, f(x_{k-2}))\),构造二次牛顿插值多项式:

\[\begin{aligned} p_2(x) &= f(x_k) + f[x_k, x_{k-1}](x - x_k) + f[x_k, x_{k-1}, x_{k-2}](x - x_k)(x - x_{k-1}) \\ &= f(x_k) + \left[f[x_k, x_{k-1}] + f[x_k, x_{k-1}, x_{k-2}](x - x_{k-1})\right](x - x_k) \end{aligned} \]

其中:

  • 一阶差商:\(f[x_i, x_j] = \frac{f(x_i)-f(x_j)}{x_i-x_j}\)
  • 二阶差商:\(f[x_k, x_{k-1}, x_{k-2}] = \frac{f[x_k, x_{k-1}] - f[x_{k-1}, x_{k-2}]}{x_k - x_{k-2}}\)

为简化求根,令:

\[\omega = f[x_k, x_{k-1}] + f[x_k, x_{k-1}, x_{k-2}](x_k - x_{k-1}) \]

\(p_2(x)=0\),得到关于 \((x-x_k)\) 的一元二次方程,用求根公式求解后,整理得到迭代公式:

\[\boldsymbol{x_{k+1} = x_k - \frac{2f(x_k)}{\omega \pm \sqrt{\omega^2 - 4f(x_k)f[x_k, x_{k-1}, x_{k-2}]}}} \tag{7.26} \]

根的选取规则

二次方程有两个根,为保证迭代收敛,我们需要选取更接近 \(x_k\) 的根,具体规则为:
根号前的符号与 \(\omega\) 的符号保持一致,使分母的模最大,从而让迭代步长的绝对值最小,保证 \(x_{k+1}\) 最接近当前近似值 \(x_k\),避免迭代发散。

2.2 几何意义与核心特性

  1. 几何意义:用通过曲线上三个点的抛物线 \(y=p_2(x)\) 与x轴的交点,逼近原曲线 \(y=f(x)\) 与x轴的交点(真实根),相比弦截法的直线近似,抛物线对非线性曲线的拟合精度更高。
  2. 核心优势
    • 无需计算导数,仅需函数值;
    • 收敛阶更高,超线性收敛,收敛速度更接近牛顿法;
    • 即使三个初始点均为实数,也可以求解复数根,是工程中求解多项式复根的核心方法。

2.3 收敛性分析

在根 \(x^*\) 的邻域内,若 \(f(x)\) 具有三阶连续导数,且 \(f'(x^*) \neq 0\),则抛物线法的迭代误差满足渐近关系:

\[\frac{|e_{k+1}|}{|e_k|^{1.840}} \to \left| \frac{f'''(x^*)}{6f'(x^*)} \right|^{0.42} \]

其收敛阶为 \(\boldsymbol{p \approx 1.840}\),是方程 \(\lambda^3 = \lambda^2 + \lambda + 1\) 的正根,快于弦截法的1.618阶,更接近牛顿法的二阶收敛。

2.4 例题计算(例7.10)

用抛物线法求解方程 \(f(x)=xe^x -1=0\),取初始值 \(x_0=0.5, x_1=0.6, x_2=0.56532\)

分步计算过程

  1. 计算函数值:
    \(f(x_0) \approx -0.175639\)\(f(x_1) \approx 0.093271\)\(f(x_2) \approx -0.005031\)

  2. 计算差商:
    一阶差商:\(f[x_1, x_0] = \frac{0.093271 - (-0.175639)}{0.6-0.5} = 2.68911\)
    一阶差商:\(f[x_2, x_1] = \frac{-0.005031 - 0.093271}{0.56532-0.6} = 2.83454\)
    二阶差商:\(f[x_2, x_1, x_0] = \frac{2.83454 - 2.68911}{0.56532-0.5} = 2.22651\)

  3. 计算 \(\omega\)

    \[\omega = f[x_2, x_1] + f[x_2, x_1, x_0](x_2 - x_1) = 2.83454 + 2.22651 \times (-0.03468) \approx 2.75733 \]

  4. 计算 \(x_3\)
    \(\omega\) 为正,根号前取+号,计算分母:

    \[\text{分母} = 2.75733 + \sqrt{2.75733^2 - 4 \times (-0.005031) \times 2.22651} \approx 5.52277 \]

    代入迭代公式:

    \[x_3 = 0.56532 - \frac{2 \times (-0.005031)}{5.52277} \approx 0.56714 \]

    仅迭代1步,就得到了与弦截法4步、牛顿法3步一致的收敛结果,收敛速度显著更快。


三、非线性方程求根方法核心特性对比表

方法名称 迭代公式核心形式 收敛阶 所需初始值 是否需要导数 核心优点 核心缺点 适用场景
标准牛顿法 \(x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}\) 二阶(2.0) 1个 收敛速度最快,迭代步数少,公式简单 需计算导数,仅局部收敛,初值敏感 导数易计算,初值能取到根附近的单根求解
弦截法(割线法) \(x_{k+1}=x_k-\frac{f(x_k)(x_k-x_{k-1})}{f(x_k)-f(x_{k-1})}\) 超线性(≈1.618) 2个 无需计算导数,实现简单,收敛速度快于线性迭代 收敛速度慢于牛顿法,需要两个初始值 导数难以计算,对收敛速度有一定要求的工程场景
抛物线法(密勒法) \(x_{k+1}=x_k-\frac{2f(x_k)}{\omega \pm \sqrt{\omega^2-4f(x_k)f[x_k,x_{k-1},x_{k-2}]}}\) 超线性(≈1.840) 3个 无需计算导数,收敛速度接近牛顿法,可求解复根 公式复杂,需要三个初始值,计算量略大 导数难以计算,需要高精度求解,尤其是多项式的实根与复根求解

posted on 2026-02-28 08:14  Indian_Mysore  阅读(0)  评论(0)    收藏  举报

导航