Documentation

# tzero

Invariant zeros of linear system

## Syntax

```z = tzero(sys) z = tzero(A,B,C,D,E) z = tzero(___,tol) [z,nrank] = tzero(___) ```

## Description

`z = tzero(sys)` returns the invariant zeros of the multi-input, multi-output (MIMO) dynamic system, `sys`. If `sys` is a minimal realization, the invariant zeros coincide with the transmission zeros of `sys`.

`z = tzero(A,B,C,D,E)` returns the invariant zeros of the state-space model

`$\begin{array}{c}E\frac{dx}{dt}=Ax+Bu\\ y=Cx+Du.\end{array}$`

Omit `E` for an explicit state-space model (E = I).

`z = tzero(___,tol)` specifies the relative tolerance, `tol`, controlling rank decisions.

```[z,nrank] = tzero(___)``` also returns the normal rank of the transfer function of `sys` or of the transfer function H(s) = D + C(sE – A)–1B.

## Input Arguments

 `sys` MIMO dynamic system model. If `sys` is not a state-space model, then `tzero` computes `tzero(ss(sys))`. `A,B,C,D,E` State-space matrices describing the linear system `$\begin{array}{c}E\frac{dx}{dt}=Ax+Bu\\ y=Cx+Du.\end{array}$` `tzero` does not scale the state-space matrices when you use the syntax `z = tzero(A,B,C,D,E)`. Use `prescale` if you want to scale the matrices before using `tzero`. Omit `E` to use E = I. `tol` Relative tolerance controlling rank decisions. Increasing tolerance helps detect nonminimal modes and eliminate very large zeros (near infinity). However, increased tolerance might artificially inflate the number of transmission zeros. Default: `eps^(3/4)`

## Output Arguments

 `z` Column vector containing the invariant zeros of `sys` or the state-space model described by `A,B,C,D,E`. `nrank` Normal rank of the transfer function of `sys` or of the transfer function H(s) = D + C(sE – A)–1B. The normal rank is the rank for values of s other than the transmission zeros. To obtain a meaningful result for `nrank`, the matrix `s*E-A` must be regular (invertible for most values of s). In other words, `sys` or the system described by `A,B,C,D,E` must have a finite number of poles.

## Examples

collapse all

Create a MIMO transfer function, and locate its invariant zeros.

```s = tf('s'); H = [1/(s+1) 1/(s+2);1/(s+3) 2/(s+4)]; z = tzero(H)```
```z = 2×1 complex -2.5000 + 1.3229i -2.5000 - 1.3229i ```

The output is a column vector listing the locations of the invariant zeros of `H`. This output shows that `H` a has complex pair of invariant zeros. Confirm that the invariant zeros coincide with the transmission zeros.

Check whether the first invariant zero is a transmission zero of `H`.

If z(1) is a transmission zero of `H`, then `H` drops rank at `s = z(1)`.

```H1 = evalfr(H,z(1)); svd(H1)```
```ans = 2×1 1.5000 0.0000 ```

`H1` is the transfer function, `H`, evaluated at `s = z(1)`. `H1` has a zero singular value, indicating that `H` drops rank at that value of `s`. Therefore, `z(1)` is a transmission zero of `H`.

A similar analysis shows that `z(2)` is also a transmission zero.

Obtain a MIMO model.

```load ltiexamples gasf size(gasf)```
```State-space model with 4 outputs, 6 inputs, and 25 states. ```

`gasf` is a MIMO model that might contain uncontrollable or unobservable states.

To identify the unobservable and uncontrollable modes of `gasf`, you need the state-space matrices `A`, `B`, `C`, and `D` of the model. `tzero` does not scale state-space matrices. Therefore, use `prescale` with `ssdata` to scale the state-space matrices of `gasf`.

`[A,B,C,D] = ssdata(prescale(gasf));`

Identify the uncontrollable states of `gasf`.

` uncon = tzero(A,B,[],[])`
```uncon = 6×1 -0.0568 -0.0568 -0.0568 -0.0568 -0.0568 -0.0568 ```

When you provide `A` and `B` matrices to `tzero`, but no `C` and `D` matrices, the command returns the eigenvalues of the uncontrollable modes of `gasf`. The output shows that there are six degenerate uncontrollable modes.

Identify the unobservable states of `gasf`.

`unobs = tzero(A,[],C,[])`
```unobs = 0x1 empty double column vector ```

When you provide `A` and `C` matrices, but no `B` and `D` matrices, the command returns the eigenvalues of the unobservable modes. The empty result shows that `gasf` contains no unobservable states.

collapse all

### Invariant zeros

For a MIMO state-space model

`$\begin{array}{c}E\frac{dx}{dt}=Ax+Bu\\ y=Cx+Du,\end{array}$`

the invariant zeros are the complex values of s for which the rank of the system matrix

`$\left[\begin{array}{cc}A-sE& B\\ C& D\end{array}\right]$`

drops from its normal value. (For explicit state-space models, E = I).

### Transmission zeros

For a MIMO state-space model

`$\begin{array}{c}E\frac{dx}{dt}=Ax+Bu\\ y=Cx+Du,\end{array}$`

the transmission zeros are the complex values of s for which the rank of the equivalent transfer function H(s) = D + C(sE – A)–1B drops from its normal value. (For explicit state-space models, E = I.)

Transmission zeros are a subset of the invariant zeros. For minimal realizations, the transmission zeros and invariant zeros are identical.

## Tips

• You can use the syntax `z = tzero(A,B,C,D,E)` to find the uncontrollable or unobservable modes of a state-space model. When `C` and `D` are empty or zero, `tzero` returns the uncontrollable modes of `(A-sE,B)`. Similarly, when `B` and `D` are empty or zero, `tzero` returns the unobservable modes of `(C,A-sE)`. See Identify Unobservable and Uncontrollable Modes of MIMO Model for an example.

## Algorithms

`tzero` is based on SLICOT routines AB08ND, AG08BD, and AB8NXZ. `tzero` implements the algorithms in  and .

## Alternatives

To calculate the zeros and gain of a single-input, single-output (SISO) system, use `zero`.

## References

 Emami-Naeini, A. and P. Van Dooren, "Computation of Zeros of Linear Multivariable Systems," Automatica, 18 (1982), pp. 415–430.

 Misra, P, P. Van Dooren, and A. Varga, “Computation of Structural Invariants of Generalized State-Space Systems,” Automatica, 30 (1994), pp. 1921-1936.