# .Modelica_LinearSystems2.WorkInProgress.DiscreteZerosAndPoles

## 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(s + 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' Generate a ZerosAndPoles object
'-'
'+' Addition of to tarnsfwer functions zp1 + zp2, i.e. parallel connection of two transfer functions (= inputs are the same, outputs of the two systems are added)
'*' Multiply two ZerosAndPoles transfer functions (zp1 * zp2)
'/' Divide two transfer functions (zp1 / zp2)
'^' Integer power of TransferFunction (zp^k)
'==' Check whether two transfer functions are identical
'String' Transform ZerosAndPoles transfer function into a String representation
q Generate the transfer function p
Analysis
Design
Plot
Conversion
Import
Internal Internal library of record Filter (should not be directly used by user)

Generated at 2020-09-27T00:59:23Z by OpenModelicaOpenModelica 1.16.0~dev-655-g93494e4 using GenerateDoc.mos