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

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

 

7.6求根问题的敏感性与多项式的零点

求根问题的敏感性与多项式的零点 深度讲解与推导证明

各位同学,今天我们来学习数值分析中决定求根结果可靠性的核心问题——求根的敏感性与病态代数方程。我们之前学习的牛顿法、弦截法等迭代算法,解决的是「如何快速收敛到根」的问题;而今天的内容,解决的是「这个根求得到底准不准、方程本身能不能可靠求根」的本质问题。哪怕迭代算法再完美,若方程本身是病态的,我们也可能得到完全失真的结果。


一、求根问题敏感性的本质:正问题与反问题的病态性

1.1 函数求值(正问题)的误差传递

我们先从最基础的微分误差分析入手,明确「正问题」的误差规律。
对于可微函数 \(y=f(x)\)正问题是:给定自变量 \(x\),求函数值 \(y=f(x)\)
若自变量 \(x\) 存在微小误差 \(\Delta x\),则函数值的误差 \(\Delta y = f(x+\Delta x) - f(x)\),由微分的定义,当 \(|\Delta x|\) 充分小时,有一阶近似:

\[\Delta y \approx f'(x) \cdot \Delta x \]

两边取绝对值,得到误差放大倍数:

\[\left| \frac{\Delta y}{\Delta x} \right| \approx |f'(x)| \]

这个式子的意义是:函数求值的误差放大倍数,等于函数在该点导数的绝对值。\(|f'(x)|\) 越大,自变量的微小误差会被放大为函数值的巨大误差;反之则误差被抑制。

1.2 方程求根(反问题)的误差传递与敏感性

方程求根是典型的反问题:我们的目标是找到 \(x^*\) 使得 \(f(x^*)=0\)(即给定目标函数值 \(y=0\),反求自变量 \(x\))。
假设我们通过数值方法得到了近似根 \(\bar{x}\),对应的函数值误差为:

\[\Delta y = f(\bar{x}) - f(x^*) = f(\bar{x}) \]

(因为真实根满足 \(f(x^*)=0\)
我们关心的是解的误差 \(\Delta x = |\bar{x} - x^*|\),将正问题的误差关系反过来,即可得到反问题的误差放大规律:

\[|\Delta x| \approx \frac{|\Delta y|}{|f'(x^*)|} \]

若我们的数值计算满足函数值的精度要求 \(|f(\bar{x})| \leq \varepsilon\)\(\varepsilon\) 为允许的函数值误差),则解的误差上限为:

\[\boldsymbol{|\Delta x| \leq \frac{\varepsilon}{|f'(x^*)|}} \]

这就是求根问题敏感性的核心公式,我们可以得到两个关键结论:

  1. 求根问题的误差放大倍数,与函数求值的误差放大倍数互为倒数,二者的病态性完全相反;
  2. \(|f'(x^*)|\) 非常小时(曲线在根附近几乎与x轴平行),哪怕函数值的误差 \(\varepsilon\) 极小,解的误差 \(|\Delta x|\) 也会被放大到非常大的数值,此时求根问题是敏感(病态)的;
  3. \(|f'(x^*)|\) 较大时(曲线在根附近陡峭),函数值的误差不会被过度放大,求根问题是不敏感(良态)的。

1.3 良态与病态求根问题的几何意义

结合图7-8,我们可以直观理解二者的区别:

  • 良态求根(图a):曲线 \(y=f(x)\) 在根 \(x^*\) 附近陡峭,\(|f'(x^*)|\) 大。哪怕函数值有微小波动,曲线与x轴交点的偏移量也极小,解的误差可控。
  • 病态求根(图b):曲线 \(y=f(x)\) 在根 \(x^*\) 附近极度平缓,几乎与x轴重合,\(|f'(x^*)|\) 趋近于0。函数值的微小波动,会导致曲线与x轴交点的巨大偏移,解的误差完全不可控。

二、多项式方程的根对系数扰动的敏感性分析

工程中最常见的非线性求根问题,就是n次代数多项式方程的求根,我们接下来专门分析多项式的根对系数扰动的敏感性,推导核心的灵敏度公式。

2.1 基础定义与扰动模型

首先定义n次标准多项式:

\[p(x) = a_0 x^n + a_1 x^{n-1} + \dots + a_{n-1}x + a_n = 0, \quad a_0 \neq 0 \tag{7.27} \]

设该多项式的n个根为 \(x_1, x_2, \dots, x_n\),满足 \(p(x_k)=0, \ k=1,2,\dots,n\)

在实际计算中,多项式的系数往往存在微小误差(如测量误差、浮点舍入误差),我们用扰动模型描述这种情况:

\[p_\varepsilon(x) = p(x) + \varepsilon q(x) = 0 \tag{7.28} \]

其中:

  • \(\varepsilon\) 是一个绝对值极小的扰动参数;
  • \(q(x)\) 是次数不超过n的非零多项式,描述扰动的形式(例如给某一项系数加扰动,对应 \(q(x)\) 为对应次数的单项式);
  • \(p_\varepsilon(x)\) 的根记为 \(x_1(\varepsilon), x_2(\varepsilon), \dots, x_n(\varepsilon)\),显然当 \(\varepsilon=0\) 时,\(x_k(0)=x_k\),即原多项式的根。

我们的核心目标是:分析当 \(\varepsilon\) 极小时,根的变化量 \(|x_k(\varepsilon)-x_k|\) 有多大,也就是根对系数扰动的灵敏度。

2.2 根的灵敏度公式的严格推导

由于 \(p_\varepsilon(x_k(\varepsilon))=0\) 对任意充分小的 \(\varepsilon\) 成立,因此等式两边可以对 \(\varepsilon\) 求全导数,利用链式法则乘积求导法则推导灵敏度。

步骤1:对扰动方程两边求全导数

\[\frac{d}{d\varepsilon}\left[ p(x(\varepsilon)) + \varepsilon q(x(\varepsilon)) \right] = \frac{d}{d\varepsilon}(0) = 0 \]

步骤2:分别求导展开

  • 第一项 \(\frac{d}{d\varepsilon}p(x(\varepsilon))\):由链式法则,先对 \(x\) 求导,再对 \(\varepsilon\) 求导,得:

    \[\frac{d}{d\varepsilon}p(x(\varepsilon)) = p'(x(\varepsilon)) \cdot \frac{dx}{d\varepsilon} \]

  • 第二项 \(\frac{d}{d\varepsilon}\left[\varepsilon q(x(\varepsilon))\right]\):由乘积求导法则 + 链式法则,得:

    \[\frac{d}{d\varepsilon}\left[\varepsilon q(x(\varepsilon))\right] = q(x(\varepsilon)) + \varepsilon \cdot q'(x(\varepsilon)) \cdot \frac{dx}{d\varepsilon} \]

步骤3:整理方程,解出 \(\frac{dx}{d\varepsilon}\)

将两项代入求导后的等式,合并含 \(\frac{dx}{d\varepsilon}\) 的项:

\[p'(x) \cdot \frac{dx}{d\varepsilon} + q(x) + \varepsilon q'(x) \cdot \frac{dx}{d\varepsilon} = 0 \]

\[\frac{dx}{d\varepsilon} \cdot \left[ p'(x) + \varepsilon q'(x) \right] = -q(x) \]

最终得到导数的通用表达式:

\[\frac{dx}{d\varepsilon} = \frac{-q(x)}{p'(x) + \varepsilon q'(x)} \]

步骤4:代入 \(\varepsilon=0\),得到根的灵敏度

\(\varepsilon=0\) 时,\(x=x_k(0)=x_k\),代入上式,得到根对扰动的灵敏度公式

\[\boldsymbol{\frac{dx_k(0)}{d\varepsilon} = \frac{-q(x_k)}{p'(x_k)}} \]

这个导数的绝对值,直接描述了根对系数扰动的敏感程度:绝对值越大,\(\varepsilon\) 的微小变化会引起根的巨大偏移,方程越病态。

2.3 根的一阶扰动近似公式

\(|\varepsilon|\) 充分小时,我们将 \(x_k(\varepsilon)\)\(\varepsilon=0\) 处做一阶泰勒展开,忽略高阶无穷小项,得到根的扰动近似公式:

\[x_k(\varepsilon) \approx x_k(0) + \frac{dx_k(0)}{d\varepsilon} \cdot \varepsilon \]

将灵敏度公式代入,得到教材中的核心公式(7.29):

\[\boldsymbol{x_k(\varepsilon) \approx x_k - \frac{q(x_k)}{p'(x_k)} \cdot \varepsilon, \quad k=1,2,\dots,n} \tag{7.29} \]

2.4 病态代数方程的定义

对于多项式方程(7.27),若系数的微小扰动 \(\varepsilon\),会导致根的变化量 \(|x_k(\varepsilon)-x_k|\) 非常大,我们就称这个代数方程是病态的;反之则为良态的。


三、经典例题解析:Wilkinson多项式的病态性分析

例7.11是数值分析史上最经典的病态方程案例——Wilkinson多项式,由英国数值分析大师James Wilkinson提出,用来揭示高次多项式求根的极端病态性。

3.1 例题背景与扰动设置

原多项式为7次Wilkinson多项式:

\[\begin{aligned} p(x) &= (x-1)(x-2)\cdots(x-7) \\ &= x^7 -28x^6 +322x^5 -1960x^4 +6769x^3 -13132x^2 +13068x -5040 \end{aligned} \]

该多项式的根为 \(x_k=k, \ k=1,2,\dots,7\),都是分离的整数实根,看起来形式极其简单。

我们给多项式的 \(x^6\) 项系数施加一个极小的扰动:取 \(q(x)=x^6\)\(\varepsilon=-0.002\),即扰动后的多项式为:

\[p_\varepsilon(x) = p(x) -0.002x^6 \]

这个扰动仅为原 \(x^6\) 项系数(-28)的 \(0.007\%\),几乎可以忽略不计,我们来分析根的变化。

3.2 灵敏度计算与扰动根的近似

步骤1:计算 \(p'(x_k)\)

对于多项式 \(p(x)=\prod_{j=1}^7 (x-j)\),由乘积求导法则,导数为:

\[p'(x) = \sum_{i=1}^7 \prod_{j \neq i} (x-j) \]

代入 \(x=k\)(原根),除了 \(i=k\) 的项,其余项都包含 \((x-k)\) 因子,代入后为0,因此:

\[p'(k) = \prod_{j \neq k} (k-j) \]

将乘积拆分为两部分化简:

  • 前半部分:\(j=1\)\(k-1\)\(k-j = 1,2,\dots,k-1\),乘积为 \((k-1)!\)
  • 后半部分:\(j=k+1\)\(7\)\(k-j = -1,-2,\dots,-(7-k)\),乘积为 \((-1)^{7-k} \cdot (7-k)!\)

因此最终化简为:

\[p'(k) = (-1)^{7-k} \cdot (k-1)! \cdot (7-k)! \]

步骤2:代入扰动近似公式

已知 \(q(x)=x^6\),因此 \(q(k)=k^6\)\(\varepsilon=-0.002\),代入公式(7.29):

\[x_k(\varepsilon) \approx k - \frac{k^6}{(-1)^{7-k} \cdot (k-1)! \cdot (7-k)!} \cdot (-0.002) \]

化简符号后得到教材中的近似式:

\[x_k(\varepsilon) \approx k + \frac{(-1)^{k-1} \cdot 0.002 \cdot k^6}{(k-1)! \cdot (7-k)!} \]

3.3 结果分析与病态性判定

我们直接给出扰动后方程的真实根:

\[1.0000028,\ 1.9989382,\ 3.0331253,\ 3.8195692,\ 5.4586758 \pm 0.54012578i,\ 7.2330128 \]

我们可以得到三个颠覆性的结论:

  1. 极小的系数扰动,导致根出现了巨大偏移:比如原根5,扰动后变成了一对共轭复根,实部偏移量超过0.45,虚部绝对值超过0.54;
  2. 原本全部为实根的多项式,在微小扰动后出现了复根,根的性质都发生了改变;
  3. 哪怕是根分离、形式简单的低次(7次)多项式,也可能存在极端病态性。

因此,这个Wilkinson多项式方程是严重病态的


四、影响多项式求根病态性的核心因素

结合理论推导与例题,我们总结出决定多项式病态性的4个核心因素:

  1. 根的密集程度:根之间的距离越小、分布越密集,多项式在根附近的导数 \(|p'(x_k)|\) 越小,病态性越严重;
  2. 多项式的次数:多项式的次数越高,病态性越容易出现,高次多项式的求根结果往往可靠性极低;
  3. 根的模长大小:模长大的根,对高次项系数的扰动更敏感;模长小的根,对低次项系数的扰动更敏感;
  4. 系数的量级差异:多项式各项系数的量级差距越大,舍入误差带来的扰动影响越明显,病态性越严重。

五、核心知识点归纳总结表

核心概念 定义与公式 核心意义 关键判断标准
求根问题的敏感性 解的误差上限:$ \Delta x \leq \frac{\varepsilon}{
根的灵敏度公式 \(\frac{dx_k(0)}{d\varepsilon} = \frac{-q(x_k)}{p'(x_k)}\) 描述多项式的根对系数微小扰动的敏感程度 导数绝对值越大,根对扰动越敏感,方程越病态
根的一阶扰动近似 \(x_k(\varepsilon) \approx x_k - \frac{q(x_k)}{p'(x_k)} \cdot \varepsilon\) 量化系数微小扰动后,根的偏移量的近似值 偏移量 $
良态求根问题 系数/函数值的微小扰动,仅导致根/解的微小偏移 数值求根结果可靠,迭代算法的精度可以得到保证 1. 根附近 $
病态代数方程 系数的微小扰动,导致根的巨大偏移,甚至根的性质发生改变 数值求根结果不可靠,哪怕迭代算法收敛,结果也可能完全失真 1. 根附近 $
正问题与反问题的病态性关系 函数求值(正问题)误差放大倍数:$ f'(x^*) \(;求根(反问题)误差放大倍数:\)\frac{1}{

多项式的零点(全部根求解)深度讲解与方法推导

各位同学,上一节课我们讲解了多项式求根的病态性,明确了「方程本身是否能可靠求根」的核心问题;今天我们来解决工程中最核心的需求——如何求解n次多项式的全部零点(全部根,含实根与复根)

根据代数基本定理,在复数域内,n次多项式

\[p(x) = a_0x^n + a_1x^{n-1} + \dots + a_{n-1}x + a_n, \quad a_0 \neq 0 \]

有且仅有n个根(重根按重数计)。为了简化计算,我们通常将多项式首一化,两边除以首项系数\(a_0\),得到首一多项式的标准形式:

\[\boldsymbol{x^n + p_1x^{n-1} + \dots + p_{n-1}x + p_n = 0} \tag{7.30} \]

我们所有的求解方法,都围绕这个首一多项式展开。


一、核心方法1:牛顿法结合多项式降阶法

这是求解多项式单根、逐步获取全部根的基础方法,核心思想是「求一个根,降一次阶,反复迭代直到求出全部根」

1.1 基础工具:秦九韶算法(霍纳算法)

牛顿法每步迭代都需要计算\(p(x_k)\)\(p'(x_k)\),对于高次多项式,直接展开计算的时间复杂度极高,而秦九韶算法可以将n次多项式求值的计算量降到O(n),是多项式计算的核心工具。

1.1.1 多项式求值的秦九韶算法

对于n次多项式\(p(x) = a_0x^n + a_1x^{n-1} + \dots + a_{n-1}x + a_n\),我们将其改写为嵌套乘法形式:

\[p(x) = (\dots((a_0x + a_1)x + a_2)x + \dots)x + a_n \]

定义递推序列:

\[\begin{cases} b_0 = a_0 \\ b_k = b_{k-1}x + a_k, \quad k=1,2,\dots,n \end{cases} \]

则最终\(b_n = p(x)\),这就是秦九韶算法的核心,仅需n次乘法和n次加法即可完成多项式求值。

1.1.2 多项式导数的秦九韶算法

对上述递推式求导,我们可以同步计算\(p'(x)\)。对\(p(x)\)求导得:

\[p'(x) = (\dots((n a_0x + (n-1)a_1)x + (n-2)a_2)x + \dots)x + a_{n-1} \]

我们可以在求值的递推过程中,同步计算导数的递推序列:

\[\begin{cases} c_0 = b_0 = a_0 \\ c_k = c_{k-1}x + b_k, \quad k=1,2,\dots,n-1 \end{cases} \]

则最终\(c_{n-1} = p'(x)\)

这意味着,我们可以用秦九韶算法,在一次嵌套计算中,同时得到\(p(x_k)\)\(p'(x_k)\),完美适配牛顿法的迭代需求,计算效率极高。

1.2 牛顿法求多项式单根

针对多项式\(p(x)\),牛顿法的迭代公式为:

\[\boldsymbol{x_1^{(k+1)} = x_1^{(k)} - \frac{p(x_1^{(k)})}{p'(x_1^{(k)})}, \quad k=0,1,2,\dots} \]

迭代终止条件为\(|x_1^{(k+1)} - x_1^{(k)}| \leq \varepsilon\)\(\varepsilon\)为预设的允许误差),此时得到第一个根的近似值\(x_1 \approx x_1^{(k+1)}\)

1.3 多项式降阶与全部根求解

根据多项式因式分解定理,若\(x_1\)\(p(x)=0\)的根,则\(p(x)\)可以分解为:

\[p(x) = (x - x_1) q_1(x) \]

其中\(q_1(x)\)n-1次多项式,称为\(p(x)\)的商多项式。我们可以通过多项式带余除法(同样用秦九韶算法实现)求出\(q_1(x)\)的全部系数。

接下来,我们对\(q_1(x)\)重复上述过程:用牛顿法求\(q_1(x)=0\)的一个根\(x_2\),再分解为\(q_1(x)=(x-x_2)q_2(x)\)\(q_2(x)\)是n-2次多项式。

以此类推,直到\(q_{n-2}(x)\)为二次多项式,直接用求根公式求出最后两个根,即可得到原多项式的全部n个根。

1.4 误差累积问题与修正方案

问题本质

在反复降阶的过程中,前一个根的求解误差会传递到商多项式中,随着降阶次数增加,误差会不断累积,导致后续根的精度严重下降,甚至完全失真。

修正方案

每求出一个根\(x_i\)后,不直接用降阶后的商多项式迭代下一个根,而是将\(x_i\)作为初值,代入原多项式\(p(x)\) 用牛顿法做1-2次迭代修正,得到精度更高的根,再用修正后的根做多项式降阶。这样可以极大抑制误差的累积,保证所有根的求解精度。

1.5 复根的共轭成对处理

对于实系数多项式,复根一定是共轭成对出现的:若\(x_1 = a + ib\)\(p(x)=0\)的根,则其共轭\(\overline{x_1} = a - ib\)也一定是根。

此时,我们可以直接构造二次实系数因子:

\[(x - x_1)(x - \overline{x_1}) = x^2 - 2a x + (a^2 + b^2) \]

将原多项式除以这个二次因子,直接得到n-2次的商多项式,一次降阶2次,避免了两次单根降阶的误差累积,同时无需处理复数运算的商多项式。


二、核心方法2:抛物线法(密勒法)求多项式全部零点

抛物线法是求解多项式全部零点的更优方法,尤其适合求解复根,也是工程中常用的方法。

2.1 抛物线法的核心优势

对比牛顿法,抛物线法有三个不可替代的优势:

  1. 无需计算导数:仅需多项式的函数值,避免了导数计算的开销和误差;
  2. 天然支持复根求解:即使初始值全为实数,迭代过程也能自动得到复根,无需设置复初值;
  3. 收敛阶更高:收敛阶约1.84,接近牛顿法的二阶收敛,收敛速度极快;
  4. 适配二次降阶:求出一个复根后,利用共轭成对特性,直接构造二次因子降阶2次,效率远高于牛顿法的单次降阶。

2.2 抛物线法的迭代流程(针对多项式)

  1. 选取三个初始值\(x_0, x_1, x_2\),计算对应的多项式值\(p(x_0), p(x_1), p(x_2)\)
  2. 计算一阶差商\(f[x_1,x_0], f[x_2,x_1]\)和二阶差商\(f[x_2,x_1,x_0]\)
  3. 计算\(\omega = f[x_2,x_1] + f[x_2,x_1,x_0](x_2 - x_1)\)
  4. 代入迭代公式,选取使分母模最大的符号,计算\(x_3\)

    \[x_3 = x_2 - \frac{2p(x_2)}{\omega \pm \sqrt{\omega^2 - 4p(x_2)f[x_2,x_1,x_0]}} \]

  5. 迭代直到\(|p(x_k)| < \varepsilon\),得到根\(x^*\)
  6. \(x^*\)为复根,利用共轭特性构造二次因子,将多项式降阶2次;若为实根,可直接降阶1次,或再求一个实根降阶2次;
  7. 对降阶后的多项式重复上述过程,直到求出全部根。

三、核心方法3:友矩阵特征值法

这是现代数值计算软件(MATLAB、Python numpy)中求解多项式根的主流工业级方法,核心思想是将多项式求根问题,转化为矩阵特征值求解问题,彻底避免了迭代法的初值选择、误差累积、收敛性等问题。

3.1 友矩阵的构造

对于首一多项式(7.30):

\[x^n + p_1x^{n-1} + \dots + p_{n-1}x + p_n = 0 \]

我们构造其友矩阵(伴随矩阵)

\[\boldsymbol{P} = \begin{pmatrix} -p_1 & -p_2 & \dots & -p_{n-1} & -p_n \\ 1 & 0 & \dots & 0 & 0 \\ 0 & 1 & \dots & 0 & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & \dots & 1 & 0 \end{pmatrix} \]

这是一个n阶方阵,第一行为多项式系数的相反数,次对角线全为1,其余元素为0。

3.2 核心定理:友矩阵的特征值就是多项式的根

我们可以严格证明,友矩阵\(P\)特征多项式,就是原多项式(7.30):

\[\det(\lambda I - P) = \lambda^n + p_1\lambda^{n-1} + \dots + p_{n-1}\lambda + p_n \]

因此,友矩阵\(P\)的全部特征值,就是原多项式的全部n个根。

3.3 方法优势

  1. 无初值依赖:无需选择迭代初值,彻底避免了初值选择不当导致的发散问题;
  2. 数值稳定性极高:矩阵特征值求解有成熟的QR算法,数值稳定性远高于迭代降阶法,尤其适合高次、病态多项式的求根;
  3. 一次性求出全部根:无需逐次降阶,一次特征值分解即可得到全部实根和复根,效率极高;
  4. 适配工业级软件:所有主流数值计算软件的多项式求根函数,底层均采用友矩阵+QR算法实现,可靠性经过了几十年的工程验证。

四、例题解析(例7.12):求4次多项式的全部零点

例题题干

求多项式\(p(x)=16x^4 -40x^3 +5x^2 +20x +6\)的全部零点。

解题步骤详解

步骤1:方法选择与初始值设置

我们采用抛物线法求解,因为多项式是4次的,可能存在复根,抛物线法天然适配复根求解。选取初始值\(x_0=0.5, x_1=-0.5, x_2=0\),迭代终止条件为\(|p(x_i)| < 10^{-5}\)

步骤2:抛物线法迭代求解复根

我们按照抛物线法的迭代公式,逐步计算,迭代结果如下表:

迭代步数\(i\) 迭代值\(x_i\) 多项式值\(p(x_i)\)
3 \(-0.555556+0.598352i\) \(-29.4007-3.89872i\)
4 \(-0.435450+0.102101i\) \(1.33222-1.19310i\)
5 \(-0.390631+0.141852i\) \(-0.375058-0.670168i\)
6 \(-0.357698+0.169926i\) \(-0.146750-0.00744623i\)
7 \(-0.356051+0.162856i\) \(-0.184022\times10^{-2}+0.538456\times10^{-3}i\)
8 \(-0.356062+0.162758i\) \(0.164836\times10^{-5}+0.892713\times10^{-6}i\)

迭代8步后,\(|p(x_i)| < 10^{-5}\),满足精度要求,得到第一个复根:

\[x_1 = -0.356062 + 0.162758i \]

步骤3:利用共轭特性得到第二个复根

实系数多项式的复根共轭成对,因此第二个复根为:

\[x_2 = \overline{x_1} = -0.356062 - 0.162758i \]

步骤4:构造二次因子,多项式降阶

由两个共轭复根,构造二次实因子:

\[\begin{aligned} (x-x_1)(x-x_2) &= x^2 - 2\mathrm{Re}(x_1)x + |x_1|^2 \\ &= x^2 + 0.712124x + 0.153270 \end{aligned} \]

原多项式首项系数为16,因此分解为:

\[p(x) = 16(x^2 + 0.712124x + 0.153270)(x^2 - 3.212124x + 2.446658) \]

得到降阶后的二次多项式:\(q(x)=x^2 - 3.212124x + 2.446658\)

步骤5:求解二次方程的两个实根

对二次方程\(x^2 - 3.212124x + 2.446658=0\),用求根公式得:

\[x_{3,4} = \frac{3.212124 \pm \sqrt{3.212124^2 - 4\times1\times2.446658}}{2} \]

计算得:

\[x_3=1.2416774, \quad x_4=1.970446 \]

步骤6:牛顿法修正根的精度

\(x_3, x_4\)作为初值,代入原多项式\(p(x)\)用牛顿法迭代1次,得到更高精度的根:

\[x_3^*=1.24167744, \quad x_4^*=1.97044608 \]

最终结果

原多项式的全部零点为:

  1. 一对共轭复根:\(-0.356062 \pm 0.162758i\)
  2. 两个实根:\(1.24167744\)\(1.97044608\)

五、多项式全部零点求解方法归纳总结表

方法名称 核心原理 收敛阶/求解特性 核心优点 核心缺点 适用场景
牛顿法+逐次降阶法 牛顿法求单根,多项式因式分解逐次降阶,直到求出全部根 单根二阶收敛,逐次降阶 公式简单,收敛速度快,秦九韶算法计算效率高 1. 需要计算导数;2. 逐次降阶存在误差累积;3. 求复根需要复初值;4. 对初值敏感,可能发散 低次多项式、导数易计算、仅需求实根的场景
抛物线法(密勒法)+二次降阶法 三点二次插值构造抛物线,求抛物线与x轴交点作为根,共轭复根二次降阶 超线性收敛(≈1.84),一次可降2阶 1. 无需计算导数;2. 天然支持复根求解,无需复初值;3. 收敛速度接近牛顿法;4. 二次降阶减少误差累积 公式较复杂,需要三个初始值,计算量略高于牛顿法 中低次多项式、存在复根、导数难以计算的场景,工程中最常用的通用方法
友矩阵特征值法 构造多项式的友矩阵,求解矩阵的全部特征值,即为多项式的全部根 一次性求出全部根,无迭代收敛问题 1. 无初值依赖,彻底避免发散问题;2. 数值稳定性极高,适配病态多项式;3. 一次性得到全部实根和复根;4. 工业级算法,可靠性强 需要掌握矩阵特征值求解算法,手动计算困难,依赖数值计算工具 高次多项式、病态多项式、需要一次性求出全部根的工程场景,是MATLAB、Python等软件的底层实现方法

补充关键注意事项

  1. 对于高次多项式,优先选择友矩阵特征值法,避免迭代法的初值选择和误差累积问题;
  2. 实系数多项式求根时,利用复根共轭成对的特性,优先采用二次降阶,减少迭代次数和误差累积;
  3. 无论采用哪种方法,求出根后,都建议代入原多项式验证\(|p(x^*)|\)的大小,确认根的精度;
  4. 对于病态多项式,需采用双精度浮点计算,避免舍入误差被放大,导致根完全失真。

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

导航