Algorithm Search⌘K

Proofs: Schur-Cohn test

These are the human proofs of Schur-Cohn test, at full length.

The Schur-Cohn test returns the exact number of zeros in the disc, or reports a singular step, after at most n passes full

This proof shows: correctness, termination.

Write D={∣z∣<1}\mathbb{D} = \{|z| < 1\}, T={∣z∣=1}\mathbb{T} = \{|z| = 1\}, and k(p)k(p) for the number of zeros of pp in D\mathbb{D}, counted with multiplicity. For pp of exact degree nn with an≠0a_n \ne 0, let p∗(z)=zn p(1/zˉ)‾=∑i=0nan−i‾ zip^*(z) = z^n\,\overline{p(1/\bar z)} = \sum_{i=0}^n \overline{a_{n-i}}\,z^i and Tp=a0‾ p−an p∗Tp = \overline{a_0}\,p - a_n\,p^*. The arithmetic is exact.

Lemma 1: the reciprocal polynomial

(a) ∣p∗(z)∣=∣p(z)∣|p^*(z)| = |p(z)| for z∈Tz \in \mathbb{T}. (b) p∗(0)=an‾≠0p^*(0) = \overline{a_n} \ne 0, and for z≠0z \ne 0, p∗(z)=0p^*(z) = 0 if and only if p(1/zˉ)=0p(1/\bar z) = 0, with the same multiplicity. (c) If pp has no zeros on T\mathbb{T}, then k(p∗)=n−k(p)k(p^*) = n - k(p).

Proof. (a) On T\mathbb{T}, 1/zˉ=z1/\bar z = z and ∣zn∣=1|z^n| = 1. (b) The first claim is the constant coefficient. For z≠0z \ne 0, zn≠0z^n \ne 0, and w↦1/wˉw \mapsto 1/\bar w is an anti-holomorphic bijection of C∖{0}\mathbb{C} \setminus \{0\}; writing p(w)=(w−ζ)mg(w)p(w) = (w - \zeta)^m g(w) with g(ζ)≠0g(\zeta) \ne 0 gives p∗(z)=zn (1/zˉ−ζ)m‾ g(1/zˉ)‾=(1−ζˉz)mzn−m g(1/zˉ)‾p^*(z) = z^n\,\overline{(1/\bar z - \zeta)^m}\,\overline{g(1/\bar z)} = (1 - \bar\zeta z)^m z^{n-m}\,\overline{g(1/\bar z)}, which has a zero of multiplicity exactly mm at z=1/ζˉz = 1/\bar\zeta. (c) By (b), the zeros of p∗p^* in D\mathbb{D} are the images under w↦1/wˉw \mapsto 1/\bar w of the nonzero zeros of pp with ∣w∣>1|w| > 1. Since pp has no zeros on T\mathbb{T}, those are all zeros of pp outside D‾\overline{\mathbb{D}}, of total multiplicity n−k(p)n - k(p) (zeros at 00 are inside, and are not images of anything). □\square

Lemma 2: one transform

Let pp have exact degree n≥1n \ge 1 and no zeros on T\mathbb{T}, and let δ=Tp(0)=∣a0∣2−∣an∣2\delta = Tp(0) = |a_0|^2 - |a_n|^2.

(a) deg⁡Tp≤n−1\deg Tp \le n - 1.

(b) If δ≠0\delta \ne 0, then TpTp has no zeros on T\mathbb{T}, is not the zero polynomial, and k(Tp)=k(p)k(Tp) = k(p) if δ>0\delta > 0, k(Tp)=n−k(p)k(Tp) = n - k(p) if δ<0\delta < 0.

Proof. (a) The coefficient of znz^n in TpTp is a0‾an−ana0‾=0\overline{a_0}a_n - a_n\overline{a_0} = 0. The constant term is a0‾a0−anan‾=δ\overline{a_0}a_0 - a_n\overline{a_n} = \delta.

(b) On T\mathbb{T}, by Lemma 1(a), ∣a0‾p(z)∣=∣a0∣∣p(z)∣|\overline{a_0}p(z)| = |a_0||p(z)| and ∣anp∗(z)∣=∣an∣∣p(z)∣|a_n p^*(z)| = |a_n||p(z)|, and ∣p(z)∣>0|p(z)| > 0. If δ>0\delta > 0, then ∣a0∣>∣an∣|a_0| > |a_n|, so ∣anp∗∣<∣a0‾p∣|a_n p^*| < |\overline{a_0} p| on T\mathbb{T}. Hence ∣Tp∣≥(∣a0∣−∣an∣)∣p∣>0|Tp| \ge (|a_0| - |a_n|)|p| > 0 on T\mathbb{T}, and by Rouché's theorem TpTp and a0‾p\overline{a_0}p have the same number of zeros in D\mathbb{D}, which is k(p)k(p) since a0≠0a_0 \ne 0. If δ<0\delta < 0, the roles swap: ∣a0‾p∣<∣anp∗∣|\overline{a_0}p| < |a_n p^*| on T\mathbb{T}, TpTp has no zeros on T\mathbb{T}, and k(Tp)=k(−anp∗)=k(p∗)=n−k(p)k(Tp) = k(-a_n p^*) = k(p^*) = n - k(p) by Lemma 1(c). □\square

Lemma 3: singular cases

If pp and p∗p^* have a common zero ζ\zeta, then every polynomial pjp_j computed by the algorithm vanishes at ζ\zeta, and the algorithm returns "singular". This includes a zero ζ∈T\zeta \in \mathbb{T}, since then p∗(ζ)=ζnp(ζ)‾=0p^*(\zeta) = \zeta^n\overline{p(\zeta)} = 0, and a pair of zeros ζ\zeta, 1/ζˉ1/\bar\zeta, by Lemma 1(b).

Proof. If p(ζ)=p∗(ζ)=0p(\zeta) = p^*(\zeta) = 0, then Tp(ζ)=0Tp(\zeta) = 0, and if ζ≠0\zeta \ne 0 also (Tp)∗(ζ)=0(Tp)^*(\zeta) = 0: indeed (Tp)∗(Tp)^* is, up to a power of zz coming from the degree drop, a0 p∗−an‾ pa_0\,p^* - \overline{a_n}\,p, which vanishes at ζ\zeta. (If ζ=0\zeta = 0 then p∗(0)=an‾≠0p^*(0) = \overline{a_n} \ne 0, so ζ≠0\zeta \ne 0.) Dividing by a positive rational in line L7 does not change zeros. By induction every pjp_j and pj∗p_j^* vanish at ζ\zeta, as long as the algorithm runs. If no step were singular, the loop would end with a nonzero constant pJp_J, which does not vanish at ζ\zeta: a contradiction. So some δj+1\delta_{j+1} is 00, or some pj+1p_{j+1} is the zero polynomial, which also has δj+1=0\delta_{j+1} = 0, and line L6 returns "singular". □\square

Theorem

The algorithm stops after at most nn passes. If it returns (k,"count")(k, \text{"count"}), then pp has no zeros on T\mathbb{T} and k(p)=kk(p) = k.

Proof. Termination: by Lemma 2(a), deg⁡pj+1<deg⁡pj\deg p_{j+1} < \deg p_j, and line L7 only removes leading zeros, so the loop runs at most nn times.

Correctness: suppose the algorithm returns a count, with polynomials p0,…,pJp_0, \ldots, p_J, pJp_J a nonzero constant and all δ1,…,δJ≠0\delta_1, \ldots, \delta_J \ne 0. If p0p_0 had a zero on T\mathbb{T}, Lemma 3 would give "singular", so it has none. By Lemma 2(b) and induction on jj, no pjp_j has a zero on T\mathbb{T}, and

k(pj)=k(pj+1) if δj+1>0,k(pj)=nj−k(pj+1) if δj+1<0,k(p_j) = k(p_{j+1}) \text{ if } \delta_{j+1} > 0, \qquad k(p_j) = n_j - k(p_{j+1}) \text{ if } \delta_{j+1} < 0,

where the division in line L7 by a positive rational changes neither the zeros of pj+1p_{j+1} nor the sign of δj+2\delta_{j+2}, since δj+2\delta_{j+2} is homogeneous of degree 2 in the coefficients of pj+1p_{j+1}. Since k(pJ)=0k(p_J) = 0, line L9 computes exactly k(pJ−1),…,k(p0)k(p_{J-1}), \ldots, k(p_0) by this recursion. □\square

Disc of centre c and radius r

The map w↦c+rww \mapsto c + rw is a bijection from D\mathbb{D} onto {∣z−c∣<r}\{|z - c| < r\} and from T\mathbb{T} onto the boundary circle, and it preserves multiplicities. So the zeros of q(w)=p(c+rw)q(w) = p(c + rw) in D\mathbb{D} correspond one to one to the zeros of pp in the disc, and the theorem applies to qq, which the implementation computes exactly by a Taylor shift and a scaling.

Back to Schur-Cohn test