Střídavá analýza

Uvázka střídavé alanýzy jednoduchého lineárního modelu (jednostupňový zesilovač SE s neblokovaným emitorovým odporem -- zjednodušeno).

[Maple Bitmap]  

>    ZZ:=" zesilovač
V 1 0
C1 1 2
CB 2 3
RB 2 3
RE 3 0
RC 4 0
Gm 4 3 2 3 Gm
.end":

>    napeti:=syrup(ZZ, ac, 'proudy');

parsedeck:   Analyzing SPICE deck "zesilovač" (ignoring this line)

napeti := {v[4] = -Gm*RC*s*C1*RB*V/(s*C1*RB+s*C1*RB*Gm*RE+1+s*CB*RB+s*C1*RE+s^2*C1*RE*CB*RB), v[1] = V, v[3] = s*C1*V*RE*(Gm*RB+1+s*CB*RB)/(s*C1*RB+s*C1*RB*Gm*RE+1+s*CB*RB+s*C1*RE+s^2*C1*RE*CB*RB), v[2...
napeti := {v[4] = -Gm*RC*s*C1*RB*V/(s*C1*RB+s*C1*RB*Gm*RE+1+s*CB*RB+s*C1*RE+s^2*C1*RE*CB*RB), v[1] = V, v[3] = s*C1*V*RE*(Gm*RB+1+s*CB*RB)/(s*C1*RB+s*C1*RB*Gm*RE+1+s*CB*RB+s*C1*RE+s^2*C1*RE*CB*RB), v[2...
napeti := {v[4] = -Gm*RC*s*C1*RB*V/(s*C1*RB+s*C1*RB*Gm*RE+1+s*CB*RB+s*C1*RE+s^2*C1*RE*CB*RB), v[1] = V, v[3] = s*C1*V*RE*(Gm*RB+1+s*CB*RB)/(s*C1*RB+s*C1*RB*Gm*RE+1+s*CB*RB+s*C1*RE+s^2*C1*RE*CB*RB), v[2...

!!!!! V popisu řízeného zdroje musí být jeho hodnota !!! `Gm 4 3 2 3 Gm`!!!

Zde se jedná o řešení početní, ale jelikož nebyly zadané žádné hodnoty součástek, je jeho tvar symbolický. Lze také zadat jen hodnoty některých součástek, potom dosteneme výsledek v číselné podobě a velikost nezadaných prvků bude nahrazena jejich identifikátory.  

Základní příkazy MAPLE

Vypočítáme napěťový přěnos v uzlu 1 na uzel 4.

>    P:=simplify(subs(napeti,v[4]/v[1]));

P := -Gm*RC*s*C1*RB/(s*C1*RB*Gm*RE+s*C1*RB+s*C1*RE+s^2*C1*RE*CB*RB+1+s*CB*RB)

Výsledek si můžeme, pro přehlednost, ještě uspořádat podle mocnin s .

>    P:=collect(P,s);

P := -Gm*RC*s*C1*RB/(1+s^2*C1*RE*CB*RB+(C1*RB+C1*RE+C1*RB*Gm*RE+CB*RB)*s)

Dosadíme numercké hodnoty a I*omega  za s .

>    Pn:=subs({C1=1e-6,CB=1e-7,RB=10e3,RC=5e3,RE=500,Gm=0.01,s=I*omega},P);

Pn := -.50*I*omega/(1-.5000e-6*omega^2+.61500e-1*I*omega)

Následuje vykreslení modulové charakteristiky. K tomuto účelu je výhodný příkaz semilogplot, jehož implementace však není ideální a při velkém rozsahu hodnot osy x  je vykreslení chybné i při implicitním zadání velkého počtu bodů (např. numpoints=200). Výpočet polohy bodů na ose x  je nevhodný. Je proto výhodné použít možnosti implicitního zadání "startovních bodů" výpočtu s adaptivním algoritmem nebo si rozložení bodů udělat sami (jako návod může sloužit procedura dd ).   

>    modul:=simplify(evalc(abs(Pn))):

>    semilogplot(20*log10(modul),omega=2..10e5);

[Maple Plot]

>    semilogplot(20*log10(modul),omega=2..10e5,sample=[2,5,10,50,100,1e3,1e4,5e4,1e5,5e5,1e6],adaptive=true);

[Maple Plot]

Procedura na výpočet bodů - při prvním čtení vynechat

Vyčíslení hodnoty modulu přenosu (v dB) pro konkrétní kmitočet.

>    20*log10(evalf(subs(omega=1e3,modul)));

18.20161072

Následuje zjednodušování přenosu při různých podmínkách.

>    Ps:=simplify(limit(P,{C1=infinity,CB=0}));

Ps := -Gm*RC*RB/(RB+RE+Gm*RE*RB)

Následující výsledek je už známý.

>    Ps_pribl:=limit(P,Gm=infinity);

Ps_pribl := -RC/RE

Není samozřejmě možné dělat podmínky typu x >> y. MAPLE je matematický program a nelze ho přinutit dělat přibližná zjednodušení.