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

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

 

7.4牛顿法(切线法)

牛顿法(切线法)知识点深度讲解与推导证明

各位同学,今天我们用一整节课的时间,把数值分析中核心的非线性方程求根方法——牛顿法,从核心思想、公式推导、收敛性证明,到工程中常用的改进变体,全部讲透。牛顿法的核心灵魂是「以直代曲、线性化近似」,这也是数值分析最核心的思想之一。


一、标准牛顿法:核心思想与迭代公式推导

1.1 问题背景与核心思想

我们的目标是求解非线性方程 \(f(x)=0\) 的根 \(x^*\)
如果 \(f(x)\) 是线性函数,求根是 trivial(平凡)的;但对于非线性函数,我们无法直接求解析解,因此牛顿法的核心思想是:在当前近似根的邻域内,用函数的一阶泰勒展开(切线)近似原非线性函数,将非线性方程转化为线性方程求解,用线性方程的根作为原方程根的新近似值,迭代直到满足精度

1.2 迭代公式的严格推导

已知方程 \(f(x)=0\) 的第 \(k\) 步近似根 \(x_k\),且满足 \(f'(x_k) \neq 0\)(导数不为0,保证切线不水平,有唯一解)。
\(f(x)\)\(x=x_k\) 处做一阶泰勒展开

\[f(x) = f(x_k) + f'(x_k)(x - x_k) + o(x - x_k) \]

\(x\)\(x_k\) 的邻域内时,高阶无穷小项 \(o(x-x_k)\) 可以忽略,得到线性近似:

\[f(x) \approx f(x_k) + f'(x_k)(x - x_k) \]

我们要找 \(f(x)=0\) 的根,因此令近似式等于0,得到关于 \(x\) 的线性方程:

\[f(x_k) + f'(x_k)(x - x_k) = 0 \tag{7.16} \]

由于 \(f'(x_k) \neq 0\),我们可以解这个线性方程:

  1. 移项得:\(f'(x_k)(x - x_k) = -f(x_k)\)
  2. 两边除以 \(f'(x_k)\)\(x - x_k = -\frac{f(x_k)}{f'(x_k)}\)
  3. 整理得解:\(x = x_k - \frac{f(x_k)}{f'(x_k)}\)

我们将这个线性方程的解,作为原非线性方程根的第 \(k+1\) 步近似值 \(x_{k+1}\),就得到了牛顿法的核心迭代公式

\[\boldsymbol{x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}, \quad k=0,1,2,\dots} \tag{7.17} \]

1.3 几何意义(切线法的由来)

方程 \(f(x)=0\) 的根 \(x^*\),几何上是曲线 \(y=f(x)\)\(x\) 轴交点的横坐标。
对于近似根 \(x_k\),对应曲线上的点 \(P_k(x_k, f(x_k))\),过 \(P_k\) 作曲线的切线,切线的斜率就是 \(f'(x_k)\),因此切线方程为:

\[y = f(x_k) + f'(x_k)(x - x_k) \]

这条切线与 \(x\) 轴(\(y=0\))的交点,就是我们刚才推导的 \(x_{k+1}\)

因此牛顿法的几何本质是:用曲线在当前点的切线与x轴的交点,代替曲线与x轴的交点(真实根),逐步迭代逼近真实根,因此牛顿法也被称为切线法


二、标准牛顿法的收敛性证明与误差分析

牛顿法本质是一种特殊的不动点迭代,我们用不动点迭代的收敛性定理,来严格证明牛顿法的收敛性。

2.1 迭代函数与不动点验证

不动点迭代的通用形式是 \(x_{k+1}=\varphi(x_k)\),对比牛顿法迭代公式,我们可以写出牛顿法的迭代函数

\[\varphi(x) = x - \frac{f(x)}{f'(x)} \]

首先验证不动点:若 \(x^*\)\(f(x)=0\) 的根(\(f(x^*)=0\)),且 \(f'(x^*) \neq 0\),则:

\[\varphi(x^*) = x^* - \frac{f(x^*)}{f'(x^*)} = x^* - 0 = x^* \]

因此 \(x^*\)\(\varphi(x)\) 的不动点,牛顿法是不动点迭代的特例。

2.2 一阶导数计算与收敛性证明

对迭代函数 \(\varphi(x)\) 求一阶导数,分析其在根 \(x^*\) 处的取值:
根据求导的四则运算法则,\(\frac{d}{dx}\left(\frac{u}{v}\right)=\frac{u'v-uv'}{v^2}\),令 \(u=f(x), v=f'(x)\),则:

\[\varphi'(x) = \frac{d}{dx}\left(x\right) - \frac{d}{dx}\left(\frac{f(x)}{f'(x)}\right) = 1 - \frac{[f'(x)]^2 - f(x)f''(x)}{[f'(x)]^2} \]

通分化简:

\[\varphi'(x) = \frac{[f'(x)]^2 - [f'(x)]^2 + f(x)f''(x)}{[f'(x)]^2} = \boldsymbol{\frac{f(x)f''(x)}{[f'(x)]^2}} \]

单根情形的收敛性(核心结论)

\(x^*\)\(f(x)=0\)单根,即满足:

\[f(x^*)=0, \quad f'(x^*) \neq 0 \]

\(x=x^*\) 代入 \(\varphi'(x)\) 的表达式:

\[\varphi'(x^*) = \frac{f(x^*)f''(x^*)}{[f'(x^*)]^2} = 0 \]

回顾不动点迭代的局部收敛性定理:

若迭代函数 \(\varphi(x)\) 在不动点 \(x^*\) 的邻域内连续可微,且 \(|\varphi'(x^*)|<1\),则迭代局部收敛;若 \(\varphi'(x^*)=0\),则迭代至少二阶收敛(平方收敛)

因此我们得到核心结论:牛顿法在单根 \(x^*\) 的邻域内,是平方收敛(二阶收敛)的,这也是牛顿法收敛速度远快于线性收敛的不动点迭代的核心原因。

2.3 误差渐近式推导

我们进一步推导牛顿法的误差收敛规律,设迭代误差 \(e_k = x_k - x^*\),我们来证明:

\[\lim_{k \to \infty} \frac{e_{k+1}}{e_k^2} = \frac{f''(x^*)}{2f'(x^*)} \]

推导过程:

\(\varphi(x)\)\(x=x^*\) 处做二阶泰勒展开:

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

代入 \(\varphi(x^*)=x^*\)\(\varphi'(x^*)=0\),化简得:

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

由于 \(x_{k+1}=\varphi(x_k)\),代入 \(x=x_k\)

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

移项得误差关系:

\[e_{k+1} = x_{k+1} - x^* = \frac{\varphi''(x^*)}{2} e_k^2 + o(e_k^2) \]

两边除以 \(e_k^2\),令 \(k \to \infty\)\(e_k \to 0\)\(o(e_k^2)/e_k^2 \to 0\)),得:

\[\lim_{k \to \infty} \frac{e_{k+1}}{e_k^2} = \frac{\varphi''(x^*)}{2} \]

接下来计算 \(\varphi''(x^*)\)
已知 \(\varphi'(x) = \frac{f(x)f''(x)}{[f'(x)]^2}\),对其求导,在 \(x=x^*\) 处,\(f(x^*)=0\),因此含 \(f(x^*)\) 的项全部为0,最终化简得:

\[\varphi''(x^*) = \frac{f''(x^*)}{f'(x^*)} \]

代入误差极限式,最终得到:

\[\boldsymbol{\lim_{k \to \infty} \frac{x_{k+1} - x^*}{(x_k - x^*)^2} = \frac{f''(x^*)}{2f'(x^*)}} \]

这个式子直观体现了牛顿法的平方收敛特性:第k+1步的误差,与第k步误差的平方成正比,误差会呈指数级下降,收敛极快。

2.4 标准牛顿法的计算步骤

工程中实现牛顿法,遵循以下4步流程:

  1. 准备阶段:选定初始近似值 \(x_0\),计算 \(f_0=f(x_0)\)\(f_0'=f'(x_0)\)
  2. 迭代阶段:按公式 \(x_1 = x_0 - \frac{f_0}{f_0'}\) 计算新的近似值 \(x_1\),并计算 \(f_1=f(x_1)\)\(f_1'=f'(x_1)\)
  3. 终止控制:判断是否满足精度条件:\(|\delta|<\varepsilon_1\)\(|f_1|<\varepsilon_2\)\(\varepsilon_1,\varepsilon_2\) 为允许误差)。其中误差 \(\delta\) 的定义为:

    \[\delta= \begin{cases} x_1 - x_0, & |x_1| < C \ (\text{一般取} \ C=1, \text{绝对误差}) \\ \frac{x_1 - x_0}{x_1}, & |x_1| \geq C \ (\text{相对误差}) \end{cases} \]

    满足条件则终止迭代,输出 \(x_1\) 作为根;否则继续迭代。
  4. 异常处理:若迭代次数达到预设上限 \(N\),或 \(f_k'=0\)(导数为0,切线水平,迭代失效),则判定方法失败;否则用 \((x_1,f_1,f_1')\) 代替 \((x_0,f_0,f_0')\),回到步骤2继续迭代。

三、牛顿法的改进变体:解决原生方法的缺陷

标准牛顿法有两个核心缺陷:

  1. 每步都需要计算 \(f(x_k)\)\(f'(x_k)\),计算量大,部分场景导数难以计算;
  2. 仅局部收敛,初始值 \(x_0\) 必须在根 \(x^*\) 的邻域内,否则可能发散。

针对这两个缺陷,工程中衍生出了多种改进方法,我们逐一讲解。

3.1 简化牛顿法(平行弦法)

核心思想

为了减少导数的计算量,我们固定导数的取值,用一个常数 \(C\) 代替每步的 \(1/f'(x_k)\),避免每步计算导数。

迭代公式

\[\boldsymbol{x_{k+1} = x_k - C f(x_k), \quad C \neq 0, \ k=0,1,\dots} \tag{7.19} \]

最常用的形式是取 \(C=\frac{1}{f'(x_0)}\),即只用初始点的导数代替所有迭代步的导数,迭代公式为:

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

收敛性分析

迭代函数为 \(\varphi(x)=x-Cf(x)\),求导得 \(\varphi'(x)=1-Cf'(x)\)
根据不动点收敛定理,局部收敛的条件为 \(|\varphi'(x^*)|<1\),代入得:

\[|1 - C f'(x^*)| < 1 \implies \boldsymbol{0 < C f'(x^*) < 2} \]

满足该条件时,简化牛顿法局部收敛,但由于 \(\varphi'(x^*) \neq 0\),因此仅为线性收敛,收敛速度慢于标准牛顿法。

几何意义

标准牛顿法每步用当前点的切线,而简化牛顿法用 \(x_0\) 处切线的斜率,作一系列平行于初始切线的直线(平行弦),用这些直线与x轴的交点作为根的近似值,因此也叫平行弦法。


3.2 牛顿下山法

核心思想

解决标准牛顿法对初值敏感、初值偏离根较远时发散的问题,通过引入「下山因子」保证迭代过程中函数值单调下降,强制迭代向根的方向收敛。

下山条件

迭代过程必须满足:

\[\boldsymbol{|f(x_{k+1})| < |f(x_k)|} \tag{7.21} \]

该条件保证每一步迭代,函数值的绝对值都在减小,不断向根(\(f(x^*)=0\))靠近,满足该条件的算法称为下山法。

迭代公式

首先计算标准牛顿法的迭代结果 \(\bar{x}_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}\),然后将其与上一步的 \(x_k\) 做加权平均,得到新的迭代值:

\[x_{k+1} = \lambda \bar{x}_{k+1} + (1-\lambda) x_k \]

其中 \(\lambda \in (0,1]\) 称为下山因子,化简后得到牛顿下山法的迭代公式:

\[\boldsymbol{x_{k+1} = x_k - \lambda \cdot \frac{f(x_k)}{f'(x_k)}, \quad k=0,1,\dots} \]

\(\lambda=1\) 时,退化为标准牛顿法;\(\lambda<1\) 时,对迭代步长进行缩减,防止迭代跳转过远导致发散。

下山因子的选取规则

\(\lambda=1\) 开始,逐次将 \(\lambda\) 减半(\(\lambda=1, 1/2, 1/4, 1/8, \dots\)),直到满足下山条件 \(|f(x_{k+1})| < |f(x_k)|\) 为止。

收敛特性

满足下山条件后,可将 \(\lambda\) 恢复为1,回到标准牛顿法,保留二阶收敛的特性,同时解决了初值敏感的问题,是工程中最常用的牛顿法变体。


四、重根情形的牛顿法改进

\(x^*\)\(f(x)=0\)\(m\) 重根(\(m \geq 2\))时,标准牛顿法的收敛性会大幅下降,我们需要针对性改进。

4.1 重根的定义与标准牛顿法的收敛性

\(x^*\)\(f(x)=0\)\(m\) 重根,当且仅当 \(f(x)\) 可表示为:

\[f(x) = (x-x^*)^m g(x), \quad g(x^*) \neq 0 \]

此时满足:

\[f(x^*)=f'(x^*)=\dots=f^{(m-1)}(x^*)=0, \quad f^{(m)}(x^*) \neq 0 \]

对标准牛顿法的迭代函数求导,可得在重根处:

\[\varphi'(x^*) = 1 - \frac{1}{m} \]

由于 \(m \geq 2\),因此 \(|\varphi'(x^*)| < 1\),标准牛顿法仍局部收敛,但 \(\varphi'(x^*) \neq 0\),因此仅为线性收敛,收敛速度大幅下降,需要大量迭代才能达到精度。

4.2 改进方法1:已知根的重数 \(m\)

核心思想

修改迭代公式,抵消重根带来的收敛阶下降,恢复二阶收敛。

迭代公式

\[\boldsymbol{x_{k+1} = x_k - m \cdot \frac{f(x_k)}{f'(x_k)}, \quad k=0,1,\dots} \tag{7.23} \]

收敛性

该迭代函数在重根 \(x^*\) 处满足 \(\varphi'(x^*)=0\),因此恢复二阶收敛,收敛速度与单根情形的标准牛顿法一致。

4.3 改进方法2:未知根的重数 \(m\)(重根转单根)

核心思想

构造新的函数,将原方程的 \(m\) 重根转化为新方程的单根,再对新方程用标准牛顿法,无需知道重数 \(m\) 即可实现二阶收敛。

构造辅助函数:

\[\mu(x) = \frac{f(x)}{f'(x)} \]

\(x^*\)\(f(x)=0\)\(m\) 重根,代入可得:

\[\mu(x) = (x-x^*) \cdot \frac{g(x)}{m g(x) + (x-x^*)g'(x)} \]

\(h(x)=\frac{g(x)}{m g(x) + (x-x^*)g'(x)}\),则 \(h(x^*)=\frac{1}{m} \neq 0\),因此 \(x^*\)\(\mu(x)=0\)单根

\(\mu(x)=0\) 应用标准牛顿法,推导得到迭代公式:

\[\boldsymbol{x_{k+1} = x_k - \frac{f(x_k)f'(x_k)}{[f'(x_k)]^2 - f(x_k)f''(x_k)}, \quad k=0,1,\dots} \tag{7.24} \]

收敛性

该方法无需知道根的重数,对单根、重根均能实现二阶收敛,通用性极强,缺点是每步需要计算二阶导数 \(f''(x_k)\),计算量略有增加。


五、牛顿法全系列方法归纳总结表

方法名称 迭代公式 局部收敛阶 核心优点 核心缺点 适用场景
标准牛顿法(单根) \(x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}\) 二阶(平方收敛) 收敛速度快,迭代步数少,公式简单,几何意义明确 1. 每步需计算\(f(x_k)\)\(f'(x_k)\),计算量较大;2. 仅局部收敛,初值需在根的邻域内,否则可能发散;3. 导数为0时迭代失效 求解非线性方程的单根,可方便计算导数,初值能取到根附近的场景
标准牛顿法(重根) \(x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}\) 一阶(线性收敛) 公式通用,无需知道根的重数 收敛速度大幅下降,高精度需求下迭代步数极多 仅用于重数未知的重根初步求解,不推荐高精度计算
简化牛顿法(平行弦法) \(x_{k+1}=x_k-Cf(x_k)\)(常用\(C=1/f'(x_0)\) 一阶(线性收敛) 仅需计算一次导数,每步迭代计算量极小,实现简单 收敛速度慢,仅当\(0<Cf'(x^*)<2\)时局部收敛 导数计算成本极高,对收敛速度要求不高,仅需根的粗略近似的场景
牛顿下山法 \(x_{k+1}=x_k-\lambda\frac{f(x_k)}{f'(x_k)}\)\(\lambda\in(0,1]\)(从1开始减半试算) 满足下山条件时,\(\lambda=1\)为二阶收敛 解决了标准牛顿法对初值敏感的问题,保证迭代收敛,同时保留快速收敛特性 需要试算下山因子,增加少量计算量,仍需计算每步导数 初值无法保证在根的邻域内,防止迭代发散的工程场景,最常用的实用变体
改进牛顿法(已知重数\(m\) \(x_{k+1}=x_k-m\frac{f(x_k)}{f'(x_k)}\) 二阶(平方收敛) 恢复重根下的二阶收敛,收敛速度快,公式修改简单 需要提前知道根的重数\(m\),实际中重数往往未知 已通过分析得到根的重数,需要高精度求解重根的场景
改进牛顿法(重根转单根,未知重数) \(x_{k+1}=x_k-\frac{f(x_k)f'(x_k)}{[f'(x_k)]^2-f(x_k)f''(x_k)}\) 二阶(平方收敛) 无需知道根的重数,对单根、重根均能实现二阶收敛,通用性强 每步需要计算\(f(x_k),f'(x_k),f''(x_k)\),计算量更大,公式更复杂 根的重数未知,需要高精度求解重根的场景

牛顿法例题详细讲解与计算推导

我们结合两个经典例题,完整演示牛顿法的迭代公式推导、逐次计算过程,以及不同场景下的收敛性差异,将理论落地到实际计算中。


例7.7 标准牛顿法求解超越方程 \(f(x)=xe^x -1=0\)

1. 问题背景

该方程为超越方程,无解析解,等价于 \(x=e^{-x}\),即求直线 \(y=x\) 与指数曲线 \(y=e^{-x}\) 的交点横坐标,该根也叫朗伯W函数在1处的值,真实根 \(x^*\approx0.56714329\)
本题的核心是演示标准牛顿法的迭代推导、计算过程,以及对比不动点迭代的收敛速度差异。

2. 迭代公式推导

牛顿法通用迭代公式为:

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

第一步:求 \(f(x)\) 的一阶导数
根据乘积求导法则:

\[f(x) = xe^x -1 \]

\[f'(x) = \frac{d}{dx}(xe^x) - \frac{d}{dx}(1) = e^x + xe^x = (1+x)e^x \]

第二步:代入牛顿公式并化简
\(f(x_k)\)\(f'(x_k)\) 代入迭代公式:

\[x_{k+1} = x_k - \frac{x_k e^{x_k} - 1}{(1+x_k)e^{x_k}} \]

为简化计算,分子分母同乘 \(e^{-x_k}\)\(e^x\) 恒大于0,可安全约去):

\[x_{k+1} = x_k - \frac{x_k - e^{-x_k}}{1+x_k} \]

该式即为课本中给出的迭代公式。

3. 逐次迭代计算(初值 \(x_0=0.5\)

我们严格按照迭代公式,分步计算每一步的近似根,验证课本表7-7的结果:

迭代步数 \(k\) 近似根 \(x_k\) 核心计算过程 计算结果
0 \(x_0=0.5\) 初始值 0.5
1 \(x_1\) \(e^{-x_0}=e^{-0.5}\approx0.60653\)
\(\frac{x_0 - e^{-x_0}}{1+x_0}=\frac{0.5-0.60653}{1.5}\approx-0.07102\)
\(x_1=0.5 - (-0.07102)\)
0.57102
2 \(x_2\) \(e^{-x_1}=e^{-0.57102}\approx0.56493\)
\(\frac{x_1 - e^{-x_1}}{1+x_1}=\frac{0.57102-0.56493}{1.57102}\approx0.00388\)
\(x_2=0.57102 - 0.00388\)
0.56716
3 \(x_3\) \(e^{-x_2}=e^{-0.56716}\approx0.56714\)
\(\frac{x_2 - e^{-x_2}}{1+x_2}=\frac{0.56716-0.56714}{1.56716}\approx0.00001276\)
\(x_3=0.56716 - 0.00001276\)
0.56714

迭代3步后,结果已收敛到真实根的5位有效数字,精度极高。

4. 收敛速度对比

该方程等价于 \(x=e^{-x}\),若采用不动点迭代(迭代公式 \(x_{k+1}=e^{-x_k}\)),取相同初值 \(x_0=0.5\),要达到相同精度需要迭代17次。

  • 不动点迭代:迭代函数 \(\varphi(x)=e^{-x}\),在根处 \(|\varphi'(x^*)|=| -e^{-x^*} |\approx0.567<1\),仅线性收敛
  • 牛顿法:单根场景下为二阶(平方)收敛,误差随迭代步数呈指数级下降,收敛速度远快于不动点迭代。

5. 拓展:牛顿法求平方根(经典应用)

对于正数 \(a\),求 \(\sqrt{a}\) 等价于求解二次方程 \(f(x)=x^2 -a=0\),用牛顿法推导迭代公式:

  1. 求导:\(f'(x)=2x\)
  2. 代入牛顿公式:

\[x_{k+1} = x_k - \frac{x_k^2 -a}{2x_k} = \frac{1}{2}\left(x_k + \frac{a}{x_k}\right) \]

该式即为著名的巴比伦开方法,二阶收敛,是工程中求平方根的核心算法,仅需2-3次迭代即可达到极高精度。


例7.8 重根场景下的牛顿法改进与对比

1. 问题背景

方程 \(x^4 -4x^2 +4=0\),因式分解得 \(f(x)=(x^2-2)^2=(x-\sqrt{2})^2(x+\sqrt{2})^2\),因此 \(x^*=\sqrt{2}\approx1.414213562\)二重根(\(m=2\)
本题的核心是验证:重根场景下标准牛顿法仅线性收敛,而两种改进方法可恢复二阶收敛。

2. 三种方法的迭代公式推导

首先计算 \(f(x)\) 的一阶、二阶导数,为迭代公式做准备:

\[f(x)=x^4 -4x^2 +4 \]

\[f'(x)=4x^3 -8x=4x(x^2-2) \]

\[f''(x)=12x^2 -8 \]

方法(1):标准牛顿法

通用公式 \(x_{k+1}=x_k - \frac{f(x_k)}{f'(x_k)}\),代入因式分解后的表达式,约去公因子 \((x_k^2-2)\)(未收敛时 \(x_k^2\neq2\),可安全约去):

\[\frac{f(x_k)}{f'(x_k)} = \frac{(x_k^2-2)^2}{4x_k(x_k^2-2)} = \frac{x_k^2-2}{4x_k} \]

最终迭代公式:

\[x_{k+1} = x_k - \frac{x_k^2-2}{4x_k} \]

方法(2):已知重数 \(m=2\) 的改进牛顿法

重根改进公式为 \(x_{k+1}=x_k - m\cdot\frac{f(x_k)}{f'(x_k)}\),代入 \(m=2\) 和上述化简结果:

\[x_{k+1} = x_k - 2\cdot\frac{x_k^2-2}{4x_k} = x_k - \frac{x_k^2-2}{2x_k} \]

该式本质就是求 \(\sqrt{2}\) 的巴比伦开方法,二阶收敛。

方法(3):未知重数的重根转单根改进法

通用公式为 \(x_{k+1}=x_k - \frac{f(x_k)f'(x_k)}{[f'(x_k)]^2 - f(x_k)f''(x_k)}\),代入 \(f(x),f'(x),f''(x)\) 并因式分解化简:

  • 分子:\(f(x_k)f'(x_k) = 4x_k(x_k^2-2)^3\)
  • 分母:\([f'(x_k)]^2 - f(x_k)f''(x_k) = 4(x_k^2+2)(x_k^2-2)^2\)
    约去公因子 \((x_k^2-2)^2\) 后,分数部分化简为:

\[\frac{f(x_k)f'(x_k)}{[f'(x_k)]^2 - f(x_k)f''(x_k)} = \frac{x_k(x_k^2-2)}{x_k^2+2} \]

最终迭代公式:

\[x_{k+1} = x_k - \frac{x_k(x_k^2-2)}{x_k^2+2} \]

3. 逐次迭代计算(初值 \(x_0=1.5\)

我们分步计算三种方法的迭代结果,验证课本表7-8的结论,真实根 \(x^*=\sqrt{2}\approx1.414213562\)

迭代步数 \(k\) 方法(1) 标准牛顿法 方法(2) 已知重数改进法 方法(3) 重根转单根改进法
0 \(x_0=1.5\) \(x_0=1.5\) \(x_0=1.5\)
1 \(1.5 - \frac{2.25-2}{4\times1.5}=1.458333333\) \(1.5 - \frac{2.25-2}{2\times1.5}=1.416666667\) \(1.5 - \frac{1.5\times(2.25-2)}{2.25+2}=1.411764706\)
2 \(1.458333333 - \frac{1.458333333^2-2}{4\times1.458333333}=1.436607143\) \(1.416666667 - \frac{1.416666667^2-2}{2\times1.416666667}=1.414215686\) \(1.411764706 - \frac{1.411764706\times(1.411764706^2-2)}{1.411764706^2+2}=1.414211438\)
3 \(1.436607143 - \frac{1.436607143^2-2}{4\times1.436607143}=1.425497619\) \(1.414215686 - \frac{1.414215686^2-2}{2\times1.414215686}=1.414213562\) \(1.414211438 - \frac{1.414211438\times(1.414211438^2-2)}{1.414211438^2+2}=1.414213562\)

4. 核心结论

  1. 标准牛顿法:重根场景下仅线性收敛,迭代3步后仍与真实根有明显误差,要达到10位有效数字需迭代30次,收敛速度极慢;
  2. 已知重数的改进法:通过乘以重数 \(m\),恢复二阶收敛,迭代3步即可达到10位有效数字,收敛速度极快,缺点是需要提前知道根的重数;
  3. 重根转单根改进法:无需知道根的重数,同样实现二阶收敛,迭代3步达到10位有效数字,通用性极强,缺点是需要计算二阶导数,计算量略有增加。

posted on 2026-02-27 22:43  Indian_Mysore  阅读(0)  评论(0)    收藏  举报

导航