# .Modelica_LinearSystems2.ZerosAndPoles

## Information

This record defines a transfer function by its zeros, poles and a gain:

```         product(p - z[i])
y = k*------------------- * u
product(p - n[i])
```

where z[:] is a Complex vector of zeros, n[:] is a Complex vector of poles and k is an additional multiplicative factor. The elements of the two Complex vectors must either be real numbers or conjugate complex pairs (in order that their product results in a polynomial with Real coefficients).

In the record, the zeros and poles are transformed into a product of first and second order polynomials. The data structure is especially useful in applications where first and second order polynomials are naturally occurring, e.g., as for filters. In fact, via function ZerosAndPoles.Design.filter, a ZeroAndPole transfer function is generated from low and high pass analog filters (CriticalDamping, Bessel, Butterworth, Chebyshev). The filters are available in normalized (default) and non-normalized form. In the normalized form, the amplitude of the filter transfer function at the cutoff frequency is 3 dB.

A ZeroAndPole transfer function is internally stored by the coefficients of first and second order polynomials, and by an additional multiplicative factor k:

```         product(p + n1[i]) * product(p^2 + n2[i,1]*p + n2[i,2])
y = k*---------------------------------------------------------
product(p + d1[i]) * product(p^2 + d2[i,1]*p + d2[i,2])
```

Note, the degrees of the numerator and denominator polynomials are given as:

```   degree of numerator   = size(n1,1) + 2*size(n2,1);
degree of denominator = size(d1,1) + 2*size(d2,1);
```

Example:

```                          (p+1)
zp = 4* -------------------------------------
(p - 1)*(p - (2+j*3))*(p - (2-j*3))
```

with j=sqrt(-1), is defined as

```   import Modelica_LinearSystems2.Math.Complex;
import Modelica_LinearSystems2.ZerosAndPoles;

zp = ZerosAndPoles(z = {Complex(-1,0)},
p = {Complex(1,0),
Complex(2,3),
Complex(2,-3)},
k=4);
```

## Contents

Name Description
'constructor' Collection of operators to construct a ZerosAndPoles data record
'-' Collection of operators for subtraction of zeros and poles descriptions
'+' Addition of two zeros and poles descriptions zp1 + zp2, i.e. parallel connection of two transfer functions (= inputs are the same, outputs of the two systems are added)
'*' Multiply two zeros and poles descriptions (zp1 * zp2)
'/' Divide two zeros and poles descriptions (zp1 / zp2)
'^' Integer power of zeros and poles description (zp^k)
'==' Check whether two zeros and poles descriptions are identical
'String' Transform zeros and poles description into a String representation
p Generate the transfer function p
Analysis Package of functions to analyse zeros-and-poles description represented by a ZerosAndPoles record
Design Package of functions to design zeros-and-poles controllers and observers
Plot Package of functions to plot zeros and poles description responses
Conversion Package of functions for conversion of ZerosAndPoles data record
Import Package of functions to generate a ZerosAndPoles data record from imported data
Internal Package of internal material of record ZerosAndPoles (for advanced users only)

Generated at 2020-02-17T02:38:25Z by OpenModelicaOpenModelica 1.16.0~dev-189-gf9a0b48 using GenerateDoc.mos