這個求根器能做什麼
N 次多項式方程式求根器能找出實係數多項式方程式 \(\text{a}_0\,x^{n} + \text{a}_1\,x^{n-1} + \cdots + \text{a}_{n-1}\,x + \text{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 即可),再設定要顯示的有效位數,最後送出即可。實根會以虛部為零的形式顯示;實係數多項式的複根則會以共軛對的形式出現(re + i·im 與 re − i·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·im 與 −i·im 兩個數值。
能處理重根嗎?可以,但重根(重複的根)收斂速度較慢,因此本求根器允許較多次迭代並放寬容許誤差;極微小的虛部殘差會自動歸零。