# 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 MIMO dynamic system, `sys`. If `sys` is a minimal realization, the invariant zeros coincide with the transmission zeros of `sys`.```

example

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

example

````z = tzero(___,tol)` specifies the relative tolerance controlling rank decisions for any of the previous syntaxes.```
``````[z,nrank] = tzero(___)``` returns the normal rank of the transfer function of `sys` or of the transfer function H(s) = D + C(sE – A)–1B.```

## 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` has a 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.

## Input Arguments

collapse all

MIMO dynamic system, specified as one of the following dynamic system models.

If `sys` is not a state-space model, then `tzero` computes `tzero(ss(sys))`.

State-space matrices describing the following 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. To scale the matrices before using `tzero`, `prescale`.

Omit `E` for an explicit state-space model, where E = I.

Relative tolerance controlling rank decisions, specified as a positive scalar. Increasing tolerance helps detect nonminimal modes and eliminate very large zeros (near infinity). However, increased tolerance might artificially increase the number of transmission zeros.

## Output Arguments

collapse all

Column vector containing the invariant zeros of `sys` or the state-space model described by `A,B,C,D,E`.

Normal rank of the transfer function of `sys` or of the transfer function H(s) = D + C(sEA)–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.

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(sEA)–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)`. For an example, see Identify Unobservable and Uncontrollable Modes of MIMO Model.

## Algorithms

`tzero` is based on SLICOT routines AB08ND, AB08NZ, AG08BD, and AG08BZ. `tzero` implements the algorithms in [1] and [2].

## References

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

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

## Version History

Introduced in R2012a