> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
Příklad 1
> y:=matrix([[0, 0, 0], [A, -1, -0], [0, -G2, G2]]);
Napěťový přenos
> Au:=det(minor(y,1,3))/det(minor(y,1,1));
> det(y);
Pozor! determinant je nulový --> lze počítat pouze některé parametry (u kterých se determinanty zkrátí) -> lépe takto:
> y[1,1]:=G1: eval(y);
Napěťový přenos musí samozřejmě vyjít stejně.
> Au:=det(minor(y,1,3))/det(minor(y,1,1));
Vstupní odpor
> subs(G1=1/R1,det(minor(y,1,1))/det(y));
Výstupní odpor
> subs(G2=1/R2,det(minor(y,3,3))/det(y));
Výstupní odpor při vstupu nakrátko (vstup - uzel 1 pripojen za ref. uzel = vypustíme 1. řádek i sloupec (přičteme k ref. a vypustime). V tomto případě musí samozřejmě vyjít stejně.
>
delrows(y, 1..1): Y:=delcols(%, 1..1);
subs(G2=1/R2,det(minor(Y,2,2))/det(Y));
Výstupní odpor při vstupu nakrátko počítaný pomocí dvojitých doplňků.
> subs(G2=1/R2,det(minor(minor(y,3,3),1,1))/det(minor(y,1,1)));
jen jiný zápis dvojitého doplňku
> subs(G2=1/R2,det(minor(minor(y,1,1),2,2))/det(minor(y,1,1)));
Transimpedance u3/I01 (musí být samozřejmě shodné s u2/I01)
> subs(G1=1/R1,det(minor(y,1,3))/det(y));
> subs(G1=1/R1,-det(minor(y,1,2))/det(y));
Proudove zesileni
> subs({G1=1/R1,G2=1/R2},det(minor(y,1,3))/det(minor(y,3,3)));
Transadmitance
> subs(G2=1/R2,det(minor(y,1,3))/det(minor(minor(y,3,3),1,1)));
Nebo jinak
u3=0, přičtu k ref. uzlu a nuluji. Místo této proměnné mohu pak dát výst. zkrat. proud i3.
> y3:=matrix([[G1, 0, 0], [A, -1, 0], [0, -G2, 1]]);
Proudové zesílení
> subs({G1=1/R1,G2=1/R2},det(minor(y3,1,3))/det(y3));
Transadmitance
> subs(G2=1/R2,det(minor(y3,1,3))/det(minor(y3,1,1)));
>
Příklad 2
> m:=matrix([[G1, -G1, 0, 0], [-G1, G1+G2, -G2, 0], [0, -G2, G2+G3+Gz, -G3], [0, -A, 0, -1]]);
> Au:=det(minor(m,1,3))/det(minor(m,1,1));
> Aur:=simplify(subs({G1=1/R1,G2=1/R2,G3=1/R3},Au));
> Aue:=expand(numer(Aur)/R2)/subs(Gz=1/Rz,expand(denom(Aur)/R2));
Nechť R3<<R2, R3<<Rz a A>>1, pak
> Aua:=-A/(1+A*R1/R2);
Lze provést ještě další zjednodušení, ale pak se dotaneme ke známému vztahu, který platí pro .
> Auin:=limit(Aue, A=infinity);
Potom je samozřejmě u2=0 (ideální OZ).
> u2:=-det(minor(m,1,2))/det(m):
> limit(u2, A=infinity);
Pravidla pro zařazení OZ si je tudíž možné zde ověřit
>
delrows(m, 4..4): mOZ:=delcols(%, 2..2);
Au:=simplify(subs({G1=1/R1,G2=1/R2,G3=1/R3,Gz=1/Rz},-det(minor(mOZ,1,2))/det(minor(mOZ,1,1))));
V tomto případě lze převést řízený zdroj napětí na řízený zdroj proudu
>
delrows(m, 4..4): mg:=delcols(%, 4..4): mg[3,2]:=mg[3,2]+Gm: print(mg);
Aug:=simplify(subs({G1=1/R1,G2=1/R2,G3=1/R3,Gm=A/R3},det(minor(mg,1,3))/det(minor(mg,1,1))));
Výsledek musí být samozřejmě identický
> Aur-Aug;
>
Priklad 3
zesilovač se zdrojem napětí řízeným proudem
> Yv:=matrix([[1,G2,0,0],[-1,G1,0,0],[-H,0,1,0],[0,0,-G3,G3]]);
napěťový přenos u4/u1 (mohu budit jednak do uzlu 1 a jednak do uzlu 2 a vysledek je identický, protože i byzení je identické)
> det(-minor(Yv,1,4))/det(minor(Yv,2,2));simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
> det(-minor(Yv,2,4))/det(minor(Yv,2,2));simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
Zvst
> det(minor(Yv,2,2))/det(Yv);simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
Zvýst
> det(minor(Yv,4,4))/det(Yv);simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
řídící proud i0
> I01*det(minor(Yv,1,1))/det(Yv);simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
proudový přenos i4/I01
> det(-minor(Yv,1,4))/det(minor(Yv,4,4));simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
transimpedance u4/I01 (výstup naprázdno)
> det(-minor(Yv,1,4))/det(Yv);simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
transkonduktance i4/u1 (výstup nakrátko)
> det(-minor(Yv,1,4))/det(minor(minor(Yv,4,4),2,2));simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
Rvýst, ale pro zkratovaný vstup!!! Tady to sice vyjde stejně, ale při nenulovém zpětném přenosu se to hodí (výst. odpor emitor. sledovače).
> det(minor(minor(Yv,4,4),2,2))/det(minor(Yv,2,2));simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
ještě jinak, vyhnu se počítání dvojného doplňku.
> Yvu:=matrix([[1,G2,0,0],[-1,G1,0,0],[-H,0,1,0],[0,0,-G3,1]]);
transkonduktance i4/u1
> det(-minor(Yvu,1,4))/det(minor(Yvu,2,2));simplify(subs(G1=1/R1,G2=1/R2,G3=1/R3,%));
vyšlo
>