通过MCP连接 →

输入计算

a0 是 x^n 的系数(首项,必须非零);常数项为 a(n)。用不到的系数可保持为 0。

数学公式

广告

结果

求得的根的数量
5
roots (real & complex) via Durand-Kerner
Value (re ± i·im)
x_1 2.6817925684442003E-15
x_2 1.3368995720865E-15
x_3 -1.5843433783877E-15
x_4 -2.1505841279553E-15
x_5 1.1330769043639002E-16

这个求解器能做什么

N 次多项式方程求解器可以求出实系数多项式方程 \(a_0 x^{n} + a_1 x^{n-1} + \cdots + a_{n-1} x + a_n = 0\) 的全部根——既包括实根,也包括复根。它采用 Durand-Kerner 法(又称 Weierstrass 维尔斯特拉斯法,也是 DKA / Durand-Kerner-Aberth 系列算法的基础),这是一种"同时迭代"方案,能在每一步同步逼近所有根。它是一款通用数学工具,不涉及任何国家或地区,也没有单位限制。

复平面上以点表示的多项式根,包含共轭对
多项式的根以点的形式出现在复平面上,复数根构成互为镜像的共轭对。

系数排列约定

本工具的系数采用从最高次项开始的排列方式:a0 是 \(x^{n}\) 的系数(即首项系数,必须非零),而 an 是常数项。这与教科书中"a_k 对应 x^k"的写法正好相反,请按本工具的顺序输入系数。下标超过 n 的系数会被忽略。

使用方法

先选择次数 n(1 到 16),依次填入系数 a0 到 an(用不到的系数保持为 0),再选择结果显示的有效数字位数,最后提交即可。实根的虚部显示为 0;实系数多项式的复根会成对出现,呈共轭形式(\(\text{re} + i\cdot\text{im}\) 与 \(\text{re} - i\cdot\text{im}\))。

Advertisement

计算公式

先将所有系数都除以 a0,得到首一多项式 \(p(x)=x^{n}+b_1 x^{n-1}+\cdots+b_n\),然后按 $$z_i \leftarrow z_i - \frac{p(z_i)}{\displaystyle\prod_{j \ne i}(z_i - z_j)}$$ 不断更新每个估计值。初始点分散排布在一个圆周上、互不相同,迭代过程中这些估计值会同时收敛到 n 个根。

杜兰德-肯纳迭代示意图,圆上的初始估计逐渐收敛到真实根
DKA 方法将所有根的初始估计放在一个圆上,并同时迭代更新直至收敛。

实例演示

以 $$x^3 - 6x^2 + 11x - 6 = 0$$ 为例,输入 n=3,a0=1,a1=−6,a2=11,a3=−6。该多项式可分解为 \((x-1)(x-2)(x-3)\),迭代最终收敛到三个根 1、2 和 3(全部为实根)。

Advertisement

常见问题

为什么 a0 不能为零?如果首项系数为零,方程实际上就不是 n 次方程了,因此本工具会把 a0=0 视为无效输入。

复根为什么成对出现?实系数多项式的复根总是以共轭对的形式出现,所以你会看到一对相互匹配的 \(+i\cdot\text{im}\) 与 \(-i\cdot\text{im}\)。

能处理重根吗?可以,但重根(多重根)的收敛速度较慢,因此本求解器允许更多迭代次数、采用更宽松的容差;极小的虚部残差会被自动归零。

最后更新: