prvo prelaz na vektorsku grafiku
%plot inline -f "svg"
da učitamo control toolbox
pkg load control
Q = 0.25;
wc = 1e3;
wp = wc * sqrt((1 + sqrt(1 + 4 * Q^4)) / (2 * Q^2));
Hq025 = tf([1], [(1 / wp^2), (1 / (Q * wp)), 1])
Q = 0.5;
wc = 1e3;
wp = wc * sqrt((1 + sqrt(1 + 4 * Q^4)) / (2 * Q^2));
Hq05 = tf([1], [(1 / wp^2), (1 / (Q * wp)), 1])
Q = 1;
wc = 1e3;
wp = wc * sqrt((1 + sqrt(1 + 4 * Q^4)) / (2 * Q^2));
Hq1 = tf([1], [(1 / wp^2), (1 / (Q * wp)), 1])
Q = 1.2;
wc = 1e3;
wp = wc * sqrt((1 + sqrt(1 + 4 * Q^4)) / (2 * Q^2));
Hq12 = tf([1], [(1 / wp^2), (1 / (Q * wp)), 1])
step(Hq025, Hq05, Hq1, Hq12, 0.01)
Tq025 = minreal(Hq025 / (1 - Hq025))
kada je ovaj fajl već koncepcijski bio formiran, nastala je funkcija unitnegativefeedback() data u vašem direktorijumu; motiv je bio da se izbegne numerička greška konačne dužine reči i sa njom povezan problem nepotrebnog rasta reda sistema; sledeća ideja je bila funkcija openlooptransferfunction() koja joj je inverzna, određuje funkciju prenosa koja kada joj se zatvori jedinična "negativna" povratna sprega daje funkciju prenosa koja se zadaje kao argument; ovde je isprobavamo; numerički različito, suštinski isto
Tq025a = openlooptransferfunction(Hq025)
Tq05 = minreal(Hq05 / (1 - Hq05))
Tq05a = openlooptransferfunction(Hq05)
Tq1 = minreal(Hq1 / (1 - Hq1))
Tq1a = openlooptransferfunction(Hq1)
Tq12 = minreal(Hq12 / (1 - Hq12))
Tq12a = openlooptransferfunction(Hq12)
bode(Tq025, Tq05, Tq1, Tq12)
uočite da sve funkcije prenosa imaju isto $\omega_C = 1000$, ali im se margine faze razlikuju
bode(Tq025a, Tq05a, Tq1a, Tq12a)
dakle, isti rezultati za oba načina računanja funkcije prenosa u otvorenoj sprezi
bode(Hq025, Hq05, Hq1, Hq12)