Politechnika Warszawska - Wydzial Samochodow i Maszyn Roboczych
Teoria Maszyn i Podstawy Automatyki
plik pomocniczy do zajec projektowych
Sebastian Korczak
15.01.2017
(brak polskich znakow z powodu bledu kodowania znakow w systemie linux)

Parametry liczbowe definiujemy z uzyciem dwukropka.
Mozemy uzywac liczba calkowitych, z rozwinieciem dziesietnym i ulamkow.
Polecenia oddzielamy srednikiem. Enterem przechodzimy do nowej linii.
Kod uruchamiamy kombinacja CTRL+ENTER (lub enterem klawiatury numerycznej).
Maxima stara sie uzywac w pierwszej kolejnosci obliczen symbolicznych i ulamkow.
Jesli chcemy otrzymac wartosc z rozwinieciem dziesietnym uzywamy funkcji float().

a: 4;
b: 1.5;
c: 1/3;
d: 3-2/5;
e: float(d);

Na liczbach i parametrach mozemy wykonywac dowolne dzialania.

b+a*d;
sqrt(b)-d;
a+g-%omega^2*sqrt(z);

Transmitancje proponuje deklarowac w nastepujacy sposob:

G1: 5;
G2: 1/(2*s+3);
G3: k/(3.5*s^2+4.1*s+2);

Na transmitancjach zawierajacych zarowno liczby jak i parametry mozna dokonywac
operacji matematycznych oraz uzywac funkcji upraszczajacych zapis
expand() - rozbicie znalezionych iloczynow nawiasow na sumy
ratsimp() - uproszczenie wyrazenia do postaci wielomianowej

Gz: (G1*G3)/(1+G1*G3*G2);
Gz1: expand(Gz);
Gz2: ratsimp(Gz);

TRANSFORMATA LAPLACE'A

Transformate Laplace'a wyrazenia liczymy w ponizszy sposob:

x: a;
X: laplace(x,t,s);

y: exp(-2*t);
Y: laplace(y,t,s);

Odwrotna transformate Laplace'a wyrazenia liczymy w ponizszy sposob:

Z: 2/(3*s+2);
z: ilt(Z,s,t);
U: 2/(2*s^2+3*s+2);
u: ilt(U,s,t);
E: 2*s/(s^3+4*s^2+5*s+2);
e: ilt(E,s,t);

Jesli program nie jest w stanie policzyc odwrotnej transformaty laplacea, to znaczy, ze
mianownik transmitancji posiada pierwiastki zespolone. Pierwiastki wielomianu mozemy policzyc
dokladnie z pomoca funkcji solve: 

M1: s^3+4*s^2+5*s+2;
solve(M1,s);
M2: s^2+k*s+2;
solve(M2,s);
M3: s^2+2*s+8;
solve(M3,s);

Jednostka urojona w maximie oznaczana jest przez %i

Pierwiastki wielomianu mozemy policzyc w sposob numeryczny (przyblizony) funkcja allroots
(ale wielomian moze miec tylko jedna zmienna)

M4: s^3+4*s^2+5*s+2;
allroots(M4,s);
M5: s^4+4*s^3+4*s^2+5*s+2;
allroots(M5,s);

Tworzac transmitancje widmowa mozemy uzyc funkcji podstawiania: subst(co wstawic, zamiast czego, gdzie)

Gz: 2/(2*s^2+3*s+2);
Gzw: subst(%i*w, s, Gz);

Czesc rzeczywista i urojona z transmitancji widmowej mozemy otrzymac poleceniami:

P: realpart(Gzw);
Q: imagpart(Gzw);

RYSOWANIE WYKRESOW

Wykres funkcji jednej zmiennej tworzymy poleceniem wxplot2d, gdzie
[t,0,15] - oznacza zakres zmiennej na osi x
grid2d - rysuje siatke
ylabel i xlabel - definiuja podpisy osi
legend false lub true - ukrywa lub wyswietla legede

q: sin(3*t);
wxplot2d(q, [t, 0, 15],grid2d,[ylabel,"y(t)"],[xlabel,"t"],[legend,false])$

Jesli zalezy nam na modyfikacji wielkosci wykresu mozna uzyc analogicznej funkcji plot2d

plot2d(q, [t, 0, 15],grid2d,[ylabel,"y(t)"],[xlabel,"t"],[legend,false])$

Wzmocnienie i przesuniecie fazowe najszybiej liczy sie tak:
(uwaga, w maximie jest dostepna tylko funkcja logarytmu naturalnego log(), aby wyliczyc logarytm 
 dziesietny z liczby nalezy logarytm naturalny tej liczby podzielic przez logarytm naturalny z 10)

A: ratsimp(sqrt(P^2+Q^2));
L: (20*log(A)/log(10));
Fi: atan2(Q,P);

MACIERZE
Macierze definiujemy poleceniem matrix podajac po przecinku wiersze macierzy. Weznacznik liczy funkcja determinant

D: matrix( [ 5, 2, 1 ],
           [ 3, 2, 1 ],
           [ 2, 2, 2 ]  );
determinant(D);

UZUPELNIENIE


Rozklad na ulamki proste jest mozliwy z uzyciem funkcji partfrac (ale dziala tylko dla rzeczywistych pierwiastkow mianownika)

partfrac(2*s/(2*s^2+4*s+2),s);

Rysowanie funkcji parametrycznych (przydatne do wykresu Nyquista) musi przebiegac wedlug ponizszego wzoru
(uwaga! mozna uzyc tylko zmiennej t)

P:2/(t^2+4) $ Q:-t/(t^2+4) $
wxplot2d([parametric, P, Q,[t, 0.001, 1000],[nticks, 100]],[xlabel,"P"],[ylabel,"Q"],grid2d)$