Main Content

Use Schur-Cohn algorithm to determine whether all roots of input polynomial are inside unit circle

Math Functions / Polynomial Functions

`dsppolyfun`

The Polynomial Stability Test block uses the Schur-Cohn algorithm to determine whether all roots of a polynomial are within the unit circle.

y = all(abs(roots(u)) < 1) % Equivalent MATLAB code

Each column of the M-by-N input matrix *u* contains M coefficients
from a distinct polynomial,

$$f(x)={u}_{1}{x}^{M-1}+{u}_{2}{x}^{M-2}+\dots +{u}_{M}$$

arranged in order of descending exponents,
*u*_{1},
*u*_{2}, ...,
*u*_{M}. The polynomial has order M-1 and
positive integer exponents.

Inputs to the block represent the polynomial coefficients as shown in the previous equation. The block always treats length-M unoriented vector input as an M-by-1 matrix.

The output is a 1-by-N matrix with each column containing the value
`1`

or `0`

. The value `1`

indicates that the polynomial in the corresponding column of the input is stable; that
is, the magnitudes of all solutions to *f(x)* = 0 are less than 1.
The value `0`

indicates that the polynomial in the corresponding column
of the input might be unstable; that is, the magnitude of at least one solution to
*f*(*x*) = 0 is greater than or equal to
1.

This block is most commonly used to check the pole locations of the denominator
polynomial, *A*(*z*), of a transfer function,
*H*(*z*).

$$H(z)=\frac{B(z)}{A(z)}=\frac{{b}_{1}+{b}_{2}{z}^{-1}+\dots +{b}_{m}{z}^{-(m-1)}}{{a}_{1}+{a}_{2}{z}^{-1}+\dots +{a}_{n}{z}^{-(n-1)}}$$

The poles are the *n*-1 roots of the denominator polynomial,
*A*(*z*). When any poles are located
outside the unit circle, the transfer function
*H*(*z*) is unstable. As is typical in DSP
applications, the transfer function above is specified in descending powers of
*z*^{-1} rather than
*z*.

Double-precision floating point

Single-precision floating point

Boolean — Block outputs are always Boolean.

Least Squares Polynomial Fit | DSP System Toolbox |

Polynomial Evaluation | DSP System Toolbox |

`polyfit` | MATLAB |