prik02.mws

Úvodní sekvence příkazů - start programu a připojení knihovny SYNTFIL:

> restart;

> read `F:/usr/bicak/maple/los/syntfil.m`;

> with(syntfil):

`Syntfil version 0.93 loaded`

> Digits:=18;

Digits := 18

Během výpočtu bylo zjištěno, že přesnost na implicitních deset cifer nevyhovuje, proto byl nastaven počet platných cifer 18. Tím jsou komplikovanější i všechny výpisy. Bylo by možné nastavení provést až pro "kritické" části výpočtu.

Zadání tolerančního schema pásmové propusti a jeho transformace na NDP:

Po zpracování příkazu se zobazí toleranční schema s vyznačením oblasti nesymetrie a parametry pro popis PP pomocí středního kmitočtu fm,

šířky propustného pásma (delta_fp) a vzdálenosti mezí nepropustného pásma (delta_fs) pro symetrizovanou PP.

> x:=BP2NLP(1000,1100,1300,1700,1,30);

Filter specification:

f_s = 1000.000000 Hz

f_p = 1100.000000 Hz

fp = 1300.000000 Hz

fs = 1700.000000 Hz

ap = 1.000000 dB

as = 30.000000 dB

Non-symetrical BP was entered.

New stopband frequency was calculated fs = 1430.000000 Hz.

fm = 1195.826074 Hz

delta_fp = 200.000000 Hz

delta_fs = 430.000000 Hz

[Maple Plot]

Specification of NLP:

Os = 2.150000 1/s

ap = 1.000000 dB

as = 30.000000 dB

x := 2.15000000000000000, 1, 30

Výpočet stupňů pro jednotlivé aproximace:

> bx:=ButterworthNLPOrder(x);

bx := 6, 2.15000000000000000, 1

> cx:=ChebyshevNLPOrder(x);

cx := 4, 2.15000000000000000, 1

> dx:=CauerNLPOrder(x);

dx := 3, 2.15000000000000000, 1

Zjištění útlumu na mezi nepropustného pásma pro daný stupeň a aproximaci:

> Butterworth_asnew(bx);

34.0260808918057340

> Chebyshev_asnew(cx);

36.7367721399550404

> Cauer_asnew(dx);

36.6097708334920226

Výpočet provozního činitele přenosu a charakteristické funkce pro vybrané aproximace:

> bpol,bchpol:=Butterworth(bx,s);

bpol, bchpol := .508847139909587396*s^6+2.200357346...
bpol, bchpol := .508847139909587396*s^6+2.200357346...

> cpol,cchpol:=Chebyshev(cx,s);

cpol, cchpol := 4.07077711927669917*s^4+3.878682761...
cpol, cchpol := 4.07077711927669917*s^4+3.878682761...
cpol, cchpol := 4.07077711927669917*s^4+3.878682761...

> Cauer();

Error, (in Cauer) Cauer needs 4 parameters: order, Os, ap, var

U Cauerovy aproximace je třeba navíc zadávat variantu (a,b,c).

> capol,cachpol,cazero:=Cauer(cx,s,b);

capol, cachpol, cazero := (548.367488087773856*s^4+...
capol, cachpol, cazero := (548.367488087773856*s^4+...
capol, cachpol, cazero := (548.367488087773856*s^4+...
capol, cachpol, cazero := (548.367488087773856*s^4+...

Převod provozního činitele přenosu na přenos:

> Hb:=unapply(1/bpol,s);

Hb := proc (s) options operator, arrow; 1/(.5088471...
Hb := proc (s) options operator, arrow; 1/(.5088471...

> Hc:=unapply(1/cpol,s);

Hc := proc (s) options operator, arrow; 1/(4.070777...

> Hca:=unapply(1/capol,s);

Hca := proc (s) options operator, arrow; (s^4+33.82...

Několik příkladů zobrazení přenosové funkce:

> plot(20*log10(abs(Hb(I*omega))),omega=0..1);

[Maple Plot]

> plot(20*log10(abs(Hc(I*omega))),omega=0..1);

[Maple Plot]

> plot(20*log10(abs(Hca(I*omega))),omega=0..1);

[Maple Plot]

> plot(20*log10(abs(Hca(I*omega))),omega=2..7);

[Maple Plot]

Zjištění parametrů funkce pro výpočet prvků NDP:

> DroppNLP();

Error, (in DroppNLP) DroppNLP needs 6 or 7 parameters: termination::{common,open,short}, R, direction::{front,rear}, struct::{PI,T}, pol, chpol, [zeros]

Výpočet prvků NDP pro Butterworthovu aproximaci:

> matb,elemsb:=DroppNLP(common,1,front,T,bpol,bchpol);

matb, elemsb := matrix([[.999999995527864, 0.], [0....
matb, elemsb := matrix([[.999999995527864, 0.], [0....
matb, elemsb := matrix([[.999999995527864, 0.], [0....
matb, elemsb := matrix([[.999999995527864, 0.], [0....
matb, elemsb := matrix([[.999999995527864, 0.], [0....
matb, elemsb := matrix([[.999999995527864, 0.], [0....
matb, elemsb := matrix([[.999999995527864, 0.], [0....
matb, elemsb := matrix([[.999999995527864, 0.], [0....

Výpočet prvků zadané Dp (t.j. zpětná transformace z NDP na zadanou DP):

> velemsb:=ElemsBP(elemsb,100,1100,1300):

R1 = 100

R2 = 100.000000894427194

`block `(1), [elements = {L1 = .36806e-1, C1 = .481...

`block `(2), [elements = {L1 = .17616e-2, C1 = .100...

`block `(3), [elements = {L1 = .13736, C1 = .12896e...

`block `(4), [elements = {L1 = .12896e-2, C1 = .137...

`block `(5), [elements = {L1 = .10055, C1 = .17616e...

`block `(6), [elements = {C1 = .36806e-5, L1 = .481...

Výpočet přenosové funkce z prvků filtru a zobrazení průběhu modulové kmitočtové charakteristiky přenosu v dB:

> Hbb:=unapply(MakeH(velemsb),s);

Hbb := proc (s) options operator, arrow; 1.00000000...
Hbb := proc (s) options operator, arrow; 1.00000000...
Hbb := proc (s) options operator, arrow; 1.00000000...
Hbb := proc (s) options operator, arrow; 1.00000000...

> plot(20*log10(abs(Hbb(I*2*Pi*f))),f=800..3000);

[Maple Plot]

Obdobný výpočet pro Čebyševovu aproximaci:

> matc,elemsc:=DroppNLP(common,1,front,PI,cpol,cchpol);

matc, elemsc := matrix([[1.00000000000000, 0.], [0....
matc, elemsc := matrix([[1.00000000000000, 0.], [0....
matc, elemsc := matrix([[1.00000000000000, 0.], [0....
matc, elemsc := matrix([[1.00000000000000, 0.], [0....
matc, elemsc := matrix([[1.00000000000000, 0.], [0....
matc, elemsc := matrix([[1.00000000000000, 0.], [0....
matc, elemsc := matrix([[1.00000000000000, 0.], [0....

> velemsc:=ElemsBP(elemsc,100,1100,1300):

R1 = 100

R2 = 37.5979060793674050

`block `(1), [elements = {C1 = .16704e-4, L1 = .106...

`block `(2), [elements = {C1 = .20912e-6, L1 = .847...

`block `(3), [elements = {C1 = .22529e-4, L1 = .786...

`block `(4), [elements = {C1 = .28205e-6, L1 = .628...

> Hbc:=unapply(MakeH(velemsc),s);

plot(20*log10(abs(Hbc(I*2*Pi*f))),f=1000..1400);

Hbc := proc (s) options operator, arrow; 1.00000000...
Hbc := proc (s) options operator, arrow; 1.00000000...
Hbc := proc (s) options operator, arrow; 1.00000000...

[Maple Plot]

Výpočet pro Cauerovu aproximaci:

> matca,elemsca:=DroppNLP(common,1,front,PI,capol,cachpol,cazero);

matca, elemsca := matrix([[.999999999999997154, 0],...
matca, elemsca := matrix([[.999999999999997154, 0],...
matca, elemsca := matrix([[.999999999999997154, 0],...
matca, elemsca := matrix([[.999999999999997154, 0],...
matca, elemsca := matrix([[.999999999999997154, 0],...
matca, elemsca := matrix([[.999999999999997154, 0],...
matca, elemsca := matrix([[.999999999999997154, 0],...
matca, elemsca := matrix([[.999999999999997154, 0],...

> velemsca:=ElemsBP(elemsca,100,1100,1300):

R1 = 100

R2 = 37.5979060793674050

`block `(1), [elements = {C1 = .16552e-4, L1 = .107...

`block `(2), [elements = {L2 = .83667e-1, C1 = .265...

`block `(3), [elements = {L1 = .81811e-3, C1 = .216...

`block `(4), [elements = {C1 = .22783e-5, L1 = .777...

`block `(5), [elements = {C1 = -.20638e-5, L1 = -.8...

> Hbca:=unapply(MakeH(velemsca),s);

plot(20*log10(abs(Hbca(I*2*Pi*f))),f=500..2200);

Hbca := proc (s) options operator, arrow; (.9999999...
Hbca := proc (s) options operator, arrow; (.9999999...
Hbca := proc (s) options operator, arrow; (.9999999...
Hbca := proc (s) options operator, arrow; (.9999999...

[Maple Plot]

>