cauerpoleszeros.mws

syntfil[CauerPolesZeros]  - compute the poles and zeros of the transfer function for the Cauer approximation

syntfil[CauerBPolesZeros]  - compute the poles and zeros of the transfer function for the type B Cauer approximation

syntfil[CauerCPolesZeros]  - compute the poles and zeros  of the transfer function for the type C Cauer approximation

Calling sequence:

      CauerPolesZeros(order, Os, ap)

      CauerBPolesZeros(order, Os, ap)

      CauerCPolesZeros(order, Os, ap)

Parameters:

      order    - order of the Cauer approximation [-]

      Os       - stopband frequency of normalized lowpass (NLP) [1/s]

  ap       - passband ripple [dB]

Parameter order  must be positive integer and for type B and C in addition even. Parameters Os   and   ap  must be positive numbers where Os  > 1 .

Description:

Info level:

Setting of variable infolevel[syntfil]  can be used to get more detailed results.

infolevel[syntfil] =

      2  - print leading coefficient of denominator polynomial of transfer function and two 1D arrays of transfer function's poles and zeros on separate lines with description

      3  - as level 2 +  print parameter epsilon .

      4  - as level 3 +  print characteristic function's poles and zeros.

      5  - for type B - as level 4 + print transfer and characteristic function's poles and zeros for type A,

         - for type C - as level 4 + print transfer and characteristic function's poles and zeros for type A and B.

Example:

>    with(syntfil):

`Syntfil version 1.53 loaded`

`You can set infolevel[syntfil] variable to 2..5 to get more detailed results!`

>    CauerPolesZeros(4,2,3);

772.1431299, vector([-.2139614671+.4198361739*I, -.2139614671-.4198361739*I, -.7525714614e-1+.9545533527*I, -.7525714614e-1-.9545533527*I]), vector([4.922113488*I, -4.922113488*I, 2.143189336*I, -2.143...
772.1431299, vector([-.2139614671+.4198361739*I, -.2139614671-.4198361739*I, -.7525714614e-1+.9545533527*I, -.7525714614e-1-.9545533527*I]), vector([4.922113488*I, -4.922113488*I, 2.143189336*I, -2.143...
772.1431299, vector([-.2139614671+.4198361739*I, -.2139614671-.4198361739*I, -.7525714614e-1+.9545533527*I, -.7525714614e-1-.9545533527*I]), vector([4.922113488*I, -4.922113488*I, 2.143189336*I, -2.143...

>    CauerBPolesZeros(4,2,3);

>    infolevel[syntfil]:=3:

>    CauerCPolesZeros(4,2,3);

39.27611208, vector([-.2115978052+.4114001456*I, -.2115978052-.4114001456*I, -.7803771035e-1+.9523727340*I, -.7803771035e-1-.9523727340*I]), vector([2.331069616*I, -2.331069616*I])
39.27611208, vector([-.2115978052+.4114001456*I, -.2115978052-.4114001456*I, -.7803771035e-1+.9523727340*I, -.7803771035e-1-.9523727340*I]), vector([2.331069616*I, -2.331069616*I])
39.27611208, vector([-.2115978052+.4114001456*I, -.2115978052-.4114001456*I, -.7803771035e-1+.9523727340*I, -.7803771035e-1-.9523727340*I]), vector([2.331069616*I, -2.331069616*I])

epsilon = .9976283451

CauerCPolesZeros:

Gc = 33.01648338

Poles = [-.3554897032+.2913038752*I, -.3554897032-.2913038752*I, -.9366802015e-1+.9438822515*I, -.9366802015e-1-.9438822515*I]

Zeros = [2.504897318*I, -2.504897318*I]

33.01648338, vector([-.3554897032+.2913038752*I, -.3554897032-.2913038752*I, -.9366802015e-1+.9438822515*I, -.9366802015e-1-.9438822515*I]), vector([2.504897318*I, -2.504897318*I])
33.01648338, vector([-.3554897032+.2913038752*I, -.3554897032-.2913038752*I, -.9366802015e-1+.9438822515*I, -.9366802015e-1-.9438822515*I]), vector([2.504897318*I, -2.504897318*I])
33.01648338, vector([-.3554897032+.2913038752*I, -.3554897032-.2913038752*I, -.9366802015e-1+.9438822515*I, -.9366802015e-1-.9438822515*I]), vector([2.504897318*I, -2.504897318*I])

See also:

CauerNLPOrder

Cauer, CauerBOmega, Cauer_asnew

NLP2LP, NLP2HP, NLP2BP, NLP2BP2, NLP2BS, BodePlot

in addition to Cauer approximation the following approximations can be used
ButterworthPoles, ChebyshevPoles, InvChebyschevPolesZeros, InvChebyshevBPolesZeros