User:Bestable/sandbox

The Bistritz criterion is a simple method to determine whether a discrete linear time invariant (LTI) system is stable proposed in  see also. Stability of a discrete LTI system requires that its characteristic polynomials $$ 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 zeros are inside the unit circle, viz. $$ | z_k | < 1, k=1,\ldots,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 recognized for it in 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 or 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. For more general needs the references should be consulted.

Algorithm
Consider $$ D_n(z)$$ as above and assume  $$ D_n(1) \neq 0 $$. (If $$ D_n(1)=0 $$ the polynomial is not stable.) Define its reciprocal polynomial $$D^\sharp_n(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^\sharp_m(z) k=n,n-1, \ldots, 0 $$ created by a three-term polynomial recursion. Write out the polynomials by their coefficients, $$T_m(z)=\sum_{k=1}^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^\sharp_{n}(z) \quad, \quad T_{n-1}(z)=\frac{ D_n(z)-D^\sharp_{n}(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, \quad m=n-1, \ldots ,1 $$. The expansion of these conditions into $$ T_m(0) \neq 0, \quad m=n, \ldots , 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 condition hold than $$ 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 -22 z^2 +24 z^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 +26 z^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 &minus;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 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 improve also other classical so called "scattering" algorithms,      and  the chapter on linear prediction in the textbook. The Bistritz test is the "immittance" counterpart of the "scattering" type classical Schur–Cohn or Jury tests.