Algorithm Search⌘K

Proofs: Jenkins-Traub algorithm

These are the human proofs of Jenkins-Traub algorithm, at full length.

Correctness of the Jenkins-Traub algorithm full

This proof shows: correctness, termination, convergence-rate.

This page proves, in exact arithmetic, the key identity behind the method, the linear convergence of stage 2, and the order 1+φ1 + \varphi of stage 3 near a root. It also proves termination of the reference code. The global statement that the full three-stage scheme converges is due to Jenkins and Traub (1970), and it is cited rather than reproved.

Setting

Let pp be monic of degree n≥2n \ge 2 with p(0)≠0p(0) \ne 0 (zero roots are stripped at L1). Let its distinct roots be α1,…,αr\alpha_1, \dots, \alpha_r, with multiplicities m1,…,mrm_1, \dots, m_r. Put Pi(z)=p(z)/(z−αi)P_i(z) = p(z)/(z - \alpha_i). Each PiP_i is monic of degree n−1n - 1, and Pi(αj)=0P_i(\alpha_j) = 0 for j≠ij \ne i while Pi(αi)≠0P_i(\alpha_i) \ne 0 when mi=1m_i = 1. For any polynomial HH of degree at most n−1n - 1 and any ss with p(s)≠0p(s) \ne 0, define

TsH(z)=1z−s(H(z)−H(s)p(s)p(z)).T_s H(z) = \frac{1}{z - s}\left(H(z) - \frac{H(s)}{p(s)}p(z)\right).

The bracket vanishes at z=sz = s, so TsHT_sH is a polynomial of degree at most n−1n - 1.

Lemma 1 (the weights)

TsPi=Pi/(αi−s)T_sP_i = P_i/(\alpha_i - s). Hence, if H=∑iciPiH = \sum_i c_iP_i, then TsH=∑iciPi/(αi−s)T_sH = \sum_i c_iP_i/(\alpha_i - s).

Proof. Pi(z)−Pi(s)p(s)p(z)=p(z)(1z−αi−1s−αi)=p(z)s−z(z−αi)(s−αi).P_i(z) - \dfrac{P_i(s)}{p(s)}p(z) = p(z)\left(\dfrac{1}{z - \alpha_i} - \dfrac{1}{s - \alpha_i}\right) = p(z)\dfrac{s - z}{(z - \alpha_i)(s - \alpha_i)}. Dividing by z−sz - s gives Pi(z)/(αi−s)P_i(z)/(\alpha_i - s). Linearity gives the second claim. □\square

Also p′(z)=∑imiPi(z)p'(z) = \sum_i m_iP_i(z), by logarithmic differentiation. So H(0)=p′/nH^{(0)} = p'/n has weights mi/n>0m_i/n > 0. After MM steps with s=0s = 0 the weights are proportional to miαi−Mm_i\alpha_i^{-M}, all nonzero, and normalising HH (dividing by its leading coefficient ∑ici\sum_i c_i) only rescales them. In floating point, the normalisation keeps the numbers in range.

The estimate

For H=∑ciPiH = \sum c_iP_i with C=∑ici≠0C = \sum_i c_i \ne 0, let Hˉ=H/C\bar H = H/C and t=s−p(s)/Hˉ(s)t = s - p(s)/\bar H(s). Since Pi(s)=p(s)/(s−αi)P_i(s) = p(s)/(s - \alpha_i),

t−s=−C∑ici/(s−αi).(1)t - s = -\frac{C}{\sum_i c_i/(s - \alpha_i)}. \tag{1}

If only c1≠0c_1 \ne 0, then t−s=α1−st - s = \alpha_1 - s, so t=α1t = \alpha_1 exactly. This is why the quotient P1P_1 is the target of the iteration.

Theorem 1 (stage 2 converges linearly)

Fix ss, and suppose that α1\alpha_1 is the unique root closest to ss: ∣α1−s∣<∣αi−s∣|\alpha_1 - s| < |\alpha_i - s| for i≥2i \ge 2. Let tλt_\lambda be the estimate after λ\lambda fixed-shift steps. Then tλ→α1t_\lambda \to \alpha_1, and

∣tλ−α1∣=O(θλ),θ=max⁡i≥2∣α1−s∣∣αi−s∣<1.|t_\lambda - \alpha_1| = O(\theta^\lambda), \qquad \theta = \max_{i \ge 2}\frac{|\alpha_1 - s|}{|\alpha_i - s|} < 1.

Proof. By Lemma 1, after λ\lambda steps ci=ci(0)(αi−s)−λc_i = c_i^{(0)}(\alpha_i - s)^{-\lambda} with ci(0)≠0c_i^{(0)} \ne 0. The ratios ρi=ci/c1\rho_i = c_i/c_1 satisfy ∣ρi∣=O(θλ)|\rho_i| = O(\theta^\lambda). Put d=s−α1d = s - \alpha_1. Dividing the numerator and denominator of (1) by c1c_1,

t−α1=d−1+∑i≥2ρi1/d+∑i≥2ρi/(s−αi)=d ∑i≥2ρi(ds−αi−1)1+d∑i≥2ρi/(s−αi).t - \alpha_1 = d - \frac{1 + \sum_{i \ge 2}\rho_i}{1/d + \sum_{i \ge 2}\rho_i/(s - \alpha_i)} = d\,\frac{\sum_{i \ge 2}\rho_i\left(\frac{d}{s - \alpha_i} - 1\right)}{1 + d\sum_{i \ge 2}\rho_i/(s - \alpha_i)}.

The numerator is O(θλ)O(\theta^\lambda), and the denominator tends to 1. □\square

The test checks that the ratio of successive errors approaches θ\theta on an example.

Theorem 2 (stage 3 has order 1+φ1 + \varphi)

In stage 3, H(λ+1)=TsλH(λ)H^{(\lambda+1)} = T_{s_\lambda}H^{(\lambda)} and sλ+1=sλ−p(sλ)/Hˉ(λ+1)(sλ)s_{\lambda+1} = s_\lambda - p(s_\lambda)/\bar H^{(\lambda+1)}(s_\lambda). Let eλ=sλ−α1e_\lambda = s_\lambda - \alpha_1, and let ρλ=max⁡i≥2∣ci/c1∣\rho_\lambda = \max_{i \ge 2}|c_i/c_1| for the weights of H(λ)H^{(\lambda)}. Let δ=min⁡i≥2∣αi−α1∣\delta = \min_{i \ge 2}|\alpha_i - \alpha_1|. If ∣eλ∣≤δ/2|e_\lambda| \le \delta/2 and ρλ\rho_\lambda is small enough, then

ρλ+1≤2δ ρλ∣eλ∣,∣eλ+1∣≤K ∣eλ∣ ρλ+1,\rho_{\lambda+1} \le \frac{2}{\delta}\,\rho_\lambda|e_\lambda|, \qquad |e_{\lambda+1}| \le K\,|e_\lambda|\,\rho_{\lambda+1},

with a constant KK depending on the roots and on rr. Consequently, (eλ,ρλ)→0(e_\lambda, \rho_\lambda) \to 0, and the order of eλe_\lambda is (3+5)/2=1+φ(3 + \sqrt5)/2 = 1 + \varphi.

Proof. By Lemma 1, ci(λ+1)/c1(λ+1)=(ci/c1)(α1−sλ)/(αi−sλ)c_i^{(\lambda+1)}/c_1^{(\lambda+1)} = (c_i/c_1)(\alpha_1 - s_\lambda)/(\alpha_i - s_\lambda). Here ∣α1−sλ∣=∣eλ∣|\alpha_1 - s_\lambda| = |e_\lambda| and ∣αi−sλ∣≥δ−∣eλ∣≥δ/2|\alpha_i - s_\lambda| \ge \delta - |e_\lambda| \ge \delta/2, which gives the first bound. The second follows from the formula in the proof of Theorem 1, with d=eλd = e_\lambda and the weights of H(λ+1)H^{(\lambda+1)}. Its numerator is at most ∑i≥2∣ρi∣(∣d∣/(δ/2)+1)≤2rρλ+1\sum_{i \ge 2}|\rho_i|(|d|/(\delta/2) + 1) \le 2r\rho_{\lambda+1}, and its denominator is at least 1/21/2 once ρ\rho is small. Taking logarithms, Eλ=−log⁡∣eλ∣E_\lambda = -\log|e_\lambda| and Rλ=−log⁡ρλR_\lambda = -\log\rho_\lambda satisfy, up to additive constants,

Rλ+1≥Rλ+Eλ,Eλ+1≥Eλ+Rλ+1≥2Eλ+Rλ.R_{\lambda+1} \ge R_\lambda + E_\lambda, \qquad E_{\lambda+1} \ge E_\lambda + R_{\lambda+1} \ge 2E_\lambda + R_\lambda.

The matrix (2111)\begin{pmatrix}2 & 1\\ 1 & 1\end{pmatrix} has dominant eigenvalue (3+5)/2≈2.618(3 + \sqrt5)/2 \approx 2.618, so EλE_\lambda grows like (1+φ)λ(1 + \varphi)^\lambda. Once both quantities are small, the constants are absorbed and the iteration converges. □\square

Multiple roots fit the same framework. The expansion uses distinct roots only, the weights start at mim_i, and nothing in Theorems 1 and 2 requires m1=1m_1 = 1. In floating point, however, p(s)p(s) near a root of multiplicity mm is dominated by rounding error once ∣e∣≈u1/m|e| \approx u^{1/m}, and the stopping rule accepts ss at about that distance.

What is cited

Theorems 1 and 2 are local. The global theorem of Jenkins and Traub states that, if the root closest to the stage 2 shift is unique and stage 2 runs for enough steps, stage 3 converges to that root. The reference code takes stage 2 only until the weak test at L8 passes, so it relies on the fallback: a failed stage 3 returns to stage 2, and after L⋅attemptL \cdot \text{attempt} steps a new shift is tried. The bound β\beta comes from the Cauchy bound applied to znp(1/z)z^np(1/z). Every root satisfies ∣α∣≥β|\alpha| \ge \beta, because for ∣z∣<β|z| < \beta the term ∣an∣|a_n| exceeds ∑k<n∣ak∣∣z∣n−k\sum_{k<n}|a_k||z|^{n-k}.

Termination

Every step of stages 1, 2 and 3 increases the step counter. Stage 2 checks it against KK before each step, and stage 3 receives the remaining budget and never exceeds 10 steps. A run of stage 3 that fails returns to stage 2. The loop over attempts is finite (≤\le max_shifts attempts of at most L⋅attemptL \cdot \text{attempt} steps each). Each successful root reduces the degree by one, and the outer loop ends at degree at most 1. So the algorithm stops after at most KK steps plus the bounded work of one stage 3 and one deflation, returning status done, failed or max-iter.

Back to Jenkins-Traub algorithm