这个求解器能做什么
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}\))。
计算公式
先将所有系数都除以 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 个根。
实例演示
以 $$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(全部为实根)。
常见问题
为什么 a0 不能为零?如果首项系数为零,方程实际上就不是 n 次方程了,因此本工具会把 a0=0 视为无效输入。
复根为什么成对出现?实系数多项式的复根总是以共轭对的形式出现,所以你会看到一对相互匹配的 \(+i\cdot\text{im}\) 与 \(-i\cdot\text{im}\)。
能处理重根吗?可以,但重根(多重根)的收敛速度较慢,因此本求解器允许更多迭代次数、采用更宽松的容差;极小的虚部残差会被自动归零。