# Bistritz stability criterion

In signal processing and control theory, the Bistritz criterion is a simple method to determine whether a discrete, linear, time-invariant (LTI) system is stable proposed by Yuval Bistritz. Stability of a discrete LTI system requires that its characteristic polynomial
    $D_{n}(z)=d_{0}+d_{1}z+d_{2}z^{2}+\cdots +d_{n-1}z^{n-1}+d_{n}z^{n}$
(obtained from its difference equation, its dynamic matrix, or appearing as the denominator of its transfer function) is a stable polynomial, where $D_{n}(z)$ is said to be stable if all its roots (zeros) are inside the unit circle, viz.
    $|z_{k}|<1,k=1,\dots ,n$,
where $D_{n}(z)=d_{n}\prod _{k=1}^{n}(z-z_{k})$. The test determines whether $D_{n}(z)$ is stable algebraically (i.e. without numerical determination of the zeros). The method also solves the full zero location (ZL) problem. Namely, it can count the number of inside the unit-circle (IUC) zeros ($|z_{k}|<1$), on the unit-circle zeros (UC) zeros ($|z_{k}|=1$) and outside the unit-circle (OUC) zeros ($|z_{k}|>1$) for any real or complex polynomial. The Bistritz test is the discrete equivalent of Routh criterion used to test stability of continuous LTI systems. This title was introduced soon after its presentation. It has been also recognized to be more efficient than previously available stability tests for discrete systems like the Schur–Cohn and the Jury test.
In the following, the focus is only on how to test stability of a real polynomial. However, as long as the basic recursion needed to test stability remains valid, ZL rules are also brought.

## Algorithm

Consider $D_{n}(z)$ as above and assume $D_{n}(1)\neq 0$. (If $D_{n}(1)=0$ the polynomial is not stable.) Consider its reciprocal polynomial
    $D_{n}^{\sharp }(z)=z^{n}D_{n}(1/z)=d_{n}+d_{n-1}z+d_{n-2}z^{2}+\cdots +d_{n-1}z^{n-1}+d_{0}z^{n}$.
The algorithm assigns to $D_{n}(z)$ a sequence of symmetric polynomials
    $T_{m}(z)=T_{m}^{\sharp }(z),\ m=n,n-1,\ldots ,0$
created by a three-term polynomial recursion. Write out the polynomials by their coefficients,
    $T_{m}(z)=\sum _{k=0}^{m}t_{m,k}z^{k}$,
symmetry means that
    $T_{m}(z)=t_{m,0}+t_{m,1}z+\cdots +t_{m,1}z^{m-1}+t_{m,0}z^{m}$,
so that it is enough to calculate for each polynomial only about half of the coefficients. The recursion begins with two initial polynomials driven from the sum and difference of the tested polynomial and its reciprocal, then each subsequent polynomial of reduced degree is produced from the last two known polynomials.
Initiation:
    $T_{n}(z)=D_{n}(z)+D_{n}^{\sharp }(z),\quad T_{n-1}(z)={\frac {D_{n}(z)-D_{n}^{\sharp }(z)}{z-1}}$
Recursion: For $m=n-1,\ldots ,1$ do:
    $\delta _{m+1}={\frac {T_{m+1}(0)}{T_{m}(0)}}$
    $T_{m-1}(z)={\frac {\delta _{m+1}(1+z)T_{m}(z)-T_{m+1}(z)}{z}}$

## Stability condition

The successful completion of the sequence with the above recursion requires $T_{m}(0)\neq 0,\ m=n-1,\dots ,1$. The expansion of these conditions into $T_{m}(0)\neq 0,\ m=n,\dots ,0$ are called normal conditions.
Normal conditions are necessary for stability. This means that, the tested polynomial can be declared as not stable as soon as a $T_{m}(0)=t_{m,0}=t_{m,m}=0$ is observed. It also follows that the above recursion is broad enough for testing stability because the polynomial can be declared as not stable before a division by zero is encountered.
Theorem. If the sequence is not normal then $D_{n}(z)$ is not stable. If normal conditions hold then the complete sequence of symmetric polynomials is well defined. Let
    $\nu =Var\{T_{n}(1),T_{n-1}(1),\ldots ,T_{1}(1),t_{0,0}\}$
denote the count of the number of sign variations in the indicated sequence. Then $D_{n}(z)$ is stable if and only if $\nu =0$. More generally, if normal conditions hold then $D_{n}(z)$ has no UC zeros, $\nu$ OUC zeros and $n-\nu$ IUC zeros.
Violation of various necessary conditions for stability may be used advantageously as early indications that the polynomial is not stable (has at least one UC or OUC zero). The polynomial can be declared not stable as soon as a $T_{m}(0)=0$, or a $\delta _{m}<0$, or a change of sign in the sequence of $T_{m}(1)$s is observed.

## Example

Consider the polynomial $D_{3}(z)=2+Kz-22z^{2}+24z^{3}$, where $K$ is a real parameter.
Q1: For what values of $K$ the polynomial is stable?
Construct the sequence:
    $T_{3}(z)=26+(K-22)z+(K-22)z^{2}+26z^{3}$
    $T_{2}(z)=22-Kz+22z^{2}$
    $T_{1}(z)={\frac {24(22-K)}{11}}(1+z)$
    $T_{0}(z)=44+K$
Use their values at z = 1 to form
    $\operatorname {Var} (8+2K,44-K,48(22-K)/11,44+K)$
All the entries in the sequence are positive for −4 < K < 22 (and for no K are they all negative). Therefore D(z) is stable for −4 < K < 22.
Q2: Find ZL for K = 33 Var { 71, 11, −48, 11 } = 2 ⇒ 2 OUC, 1 IUC zeros.
Q3: Find ZL for K = −11 Var{ −14, 55, 144, 33 } = 1 ⇒ 1 OUC, 2 IUC zeros.

## Comments

(1) The test bears a remarkable similarity to the Routh test. This is best observed when the Routh test is arranged appropriately into a corresponding three-term polynomial recursion.
(2) The Bistritz test uses three-term polynomial recursion that propagates polynomials with symmetry as opposed to previously available classical tests for discrete systems that propagate polynomials with no particular structure using a two-term recursion. It stimulated the discovery of more algorithms in the area of digital signal processing (e.g. solving the linear prediction problem) and discrete systems (e.g. testing stability of higher-dimensional systems) collectively called "immittance" or "split" algorithms that adopted this technique to more efficient counterparts to also other classical so called "scattering" algorithms. The Bistritz test forms the "immittance" counterpart of the "scattering" type classical tests of Schur–Cohn and Jury.