# Polynomial Stability Test

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

Libraries:
DSP System Toolbox / Math Functions / Polynomial Functions

## Description

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

Here is the equivalent MATLAB® code.

`y = all(abs(roots(u)) < 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\left(z\right)=\frac{B\left(z\right)}{A\left(z\right)}=\frac{{b}_{1}+{b}_{2}{z}^{-1}+\dots +{b}_{m}{z}^{-\left(m-1\right)}}{{a}_{1}+{a}_{2}{z}^{-1}+\dots +{a}_{n}{z}^{-\left(n-1\right)}}$`

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.

## Ports

### Input

expand all

Specify the input polynomial as a vector or a matrix of size M-by-N.

Each column of the input matrix u contains M coefficients from a distinct polynomial,

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

arranged in order of descending exponents, u1, u2, ..., uM. The polynomial has an order of M − 1 and contains positive integer exponents.

The block always treats length-M unoriented vector input as an M-by-1 matrix.

Data Types: `single` | `double`
Complex Number Support: Yes

### Output

expand all

Polynomial stability test output, returned as a scalar or a 1-by-N matrix with each column containing the value `1` or `0`.

The value of `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 of `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.

Data Types: `Boolean`

## Parameters

expand all

Specify the type of simulation to run. You can set this parameter to:

• `Interpreted execution` –– Simulate model using the MATLAB interpreter. This option shortens startup time.

• `Code generation` –– Simulate model using generated C code. The first time you run a simulation, Simulink® generates C code for the block. The C code is reused for subsequent simulations as long as the model does not change. This option requires additional startup time but provides faster subsequent simulations.

## Block Characteristics

 Data Types `double` | `single` Multidimensional Signals `No` Variable-Size Signals `No`

## Version History

Introduced before R2006a