Bazy danych zawierające materiały źródłowe przydatne dla humanistów
WPROWADZENIE DO ŚRODOWISKA SCILAB - pg.gda.plmkwies/dyd/paira/scilab.pdf · Polecenia Scilab...
Transcript of WPROWADZENIE DO ŚRODOWISKA SCILAB - pg.gda.plmkwies/dyd/paira/scilab.pdf · Polecenia Scilab...
Politechnika GdańskaWydział Elektrotechniki i Automatyki
WPROWADZENIE DO ŚRODOWISKA SCILAB
Materiały pomocnicze do ćwiczeń laboratoryjnych
Opracowanie:
Paweł Lieder
Gdańsk, 2007
Podstawy pracy z Scilab
1. Każda komenda musi być zakończona wciśnięciem klawisza ENTER, co spowoduje jej wykonanie.
2. Zbyt długie polecenia mogą być dzielone na kilka linii używając składni „ .. „
1. Podstawową strukturą danych używaną przez Scilab jest macierz. Nawet skalary są traktowane jako macierz rzędu 1x1.
2. Kopiowanie, wklejanie oraz wycinanie zaznaczonych fragmentów jest możliwe przy pomocy skrótów ctrl+c, ctrl+v oraz ctrl+x.
2. Komentarze wpisujemy po wyrażeniu używając składni „ // „ , np.
A+b // dodawanie
Operacje arytmetyczne:
1. Dodawanie oraz odejmowanie – rozmiary dodawanych lub odejmowanych macierzy muszą być takie same. Istnieje także możliwość dodania/odjęcia skalara od macierzy. Wynikiem takiego działania będzie dodanie do każdego elementu macierzy wartości pożądanego skalara.
2. Mnożenie – dla skalarów działanie mnożenia wykonywane jest normalnie, zaś w przypadku macierzy jest to mnożenie macierzy. Należy pamiętać, iż rozmiary macierzy muszą się zgadzać. Scilab posiada także specjalny operator „ .* „ , który mnoży wszystkie elementy macierzy po kolei.
3. Dzielenie – dzielenie skalarów odbywa się standardowo. Dzielenie macierzy jest działaniem definiowanym w matematyce jako mnożenie przez odwrotność macierzy będącej dzielnikiem. Operator „ / „ pozwala na dzielenie przez siebie odpowiednich elementów macierzy. Do dzielenia lewostronnego używamy „ \ „.
4. Potęgowanie oraz pierwiastkowanie – potęgowanie wykonuje się używając polecenia „ ^ ”, zaś pierwiastkowanie „ sqrt ”.
5. Transpozycja – w celu transpozycji macierzy używany jest operator „ ‘ „.
6. Wartość bezwzględna – moduł liczby wyliczamy używając polecenia abs(x). gdzie x to wartość rzeczywista, wektor lub macierz.
Polecenia Scilab
Scilab posiada specjalne zmienne predefiniowane przydatne podczas modelowania zagadnień.
• %e - podstawa logarytmu naturalnego;• %pi – stała Pi;• %inf – zmienna nieskończoność (infinity);• %nan – zmienna not a number;• %t oraz %f – wartości true oraz false dla wyrażeń binarnych.
Wprowadzanie skalarów:
• Skalary rzeczywiste – po wprowadzeniu nazwy zmiennej podajemy jej wartość. Po wykonaniu polecenia możemy wyświetlić wartość tej zmiennej wpisując jej nazwę. Zmienne nie zdefiniowane są dostępne pod nazwą ans.
b= 100
• Porównanie skalarów binarnych – porównanie wykonywane jest przy użyciu operatora „ ==”
5==5 // Odpowiedź T (True)
1==5 // Odpowiedź F (False)
• Wprowadzenie wielomianów – w tym celu definiujemy najpierw zmienną niewiadomą przy pomocy komendy „ poly „.
x=(0,”x”)
Następnie wprowadzamy pożądany wielomian:
a= 3+ x+3*x^2
• Wyznaczanie pierwiastków równania wielomianowego – służy do tego komenda roots.
x=(0,”x”) a= 3+ x+3*x^2 roots(a)
• Dostępne są wszystkie operacje arytmetyczne jak dodawanie, dzielenie, mnożenie, potęgowanie itp.
Generowanie macierzy:
• Wprowadzanie macierzy – elementy macierzy wpisujemy pomiędzy nawiasy kwadratowe. Kolejne wiersze wprowadzamy używając znaku średnika.
P=[ 2 3 1; 4 6 3; 9 0 5] // tworzy macierz: 509364132
=A
• Do wyznaczenia wyznacznika macierzy służy komenda det.
• Macierz odwrotną uzyskuje się komendą inv.
• Komenda ones – służy do wygenerowania macierzy składającej się z samych jedynek, np.
a=ones(3,3) // tworzenie macierz 3x3 zawierające same jedynki.
• Komenda zeros –polecenie bardzo podobno do poprzedniego generujące macierz zawierającą same zera.
• Macierz jednostkowa – do wygenerowania macierzy jednostkowej służy polecenie eye(m,n), gdzie m oraz n to ilość wierszy i kolumn.
• Tworzenie ciągu elementów realizowane jest przy pomocy operatora „ : „W pierwszej kolejności podaje się pierwszy element , następnie krok oraz ostatni element ciągu, np.
10:1:15
Polecenie wygeneruje ciąg: 10, 11, 12,13, 14, 15.
Należy pamiętać, iż ostatni podany element nie musi znaleźć się w wygenerowanym ciągu.
Np.
10:2:15
Wygenerowane liczby to: 10, 12, 14.
• Odnoszenie się do konkretnych elementów macierzy – Scilab pozwala na pobranie i wyświetlenie konkretnych elementów z macierzy. Zastosowanie zostanie pokazane na macierzy 5x5
A=[1 2 3 4 5; 2 4 6 8 0; 0 9 8 7 6;5 5 5 5 5; 3 4 5 6 7] // generowanie macierzy
7654355555678900864254321
=A
A(3,4) // wyświetlenie elementu z 3 wiesza, 4-tej kolumny
A(1:3,1:2) // wyświetlenie elementów z pierwszych trzech wierszy, a także kolumn 1 i 2.
A(:,5) // wyświetlenie piątej kolumny
A(5,:) // wyświetlenie piątego wiersza
Operacje arytmetyczne na macierzach:
Zdefiniujmy dwie macierze: 352542
oraz 543432
== BA .
• Działanie mnożenia macierzowego
A*B
Ze względu na niewłaściwy rozmiar macierzy działanie nie może zostać wykonane
A*B’
41473136
'* == BAc
• Mnożenie element po elemencie
A.*B
1520620124
*. == BAc
• Mnożenie macierzy przez skalar
5*A
252015201510
*5 == Ac
Wykresy
Scilab posiada wbudowane narzędzia do wyświetlania wykresów oraz grafiki. Najbardziej interesuje nas rysowanie wykresów dwuwymiarowych. Do tego celu służy polecenie plot2d.
Składnia polecenia: plot2d([x],y, <opt_args>)
,gdzie:
X,y to macierze rzeczywiste lub wektory, opt_args - argumenty polecenia.
Wyświetlenie kilku wykresów w jednym oknie uzyskujemy przy pomocy polecenia subplot(m,n,p). M odpowiada za ilość wierszy, n za kolumny. P wybiera pod-okno.
Okno zawierające wykres czyścimy poleceniem xbasc(). W nawias podawany jest numer id okna.
Do innych pożytecznych komend przy generowaniu wykresów możemy zaliczyć:
- x_vals – określenie współrzędnych osi x;
- y_vals - określenie współrzędnych osi y;
- legends – legenda;
- xtitle – nazwa wykresu.
Funkcje
W Scilab zaimplementowano bardzo prostą oraz intuicyjną obsługę funkcji. Zastosowanie tej procedury pokazane zostanie na przykładzie przebiegu wielomianu 152 23 ++− xxx .
function [y]=f(x) // deklaracja funkcjiy= x^3-2*x^2+5*x+1 endfunction // koniec funkcji
x=(-10:0.5:10) // zadeklarowanie przedziału czasowego
fplot2d(x,f) // rysowanie funkcji title('Przebieg Funkcji') legend('Wielomian')
Otrzymany przebieg:
Należy zwrócić uwagę na komendę użytą do rysowania funkcji. Zamiast polecenia plot2d użyto fplot2d, która znajduje zastosowanie wyłączne w przypadku rysowania funkcji.
Pomocnym narzędziem przy rozwiązywaniu równań różniczkowych jest solwer ode.
Składnia wywołania ma postać:
Y = ode(y0,t0,t,f)
,gdzie
y0- warunki początkowe;t0- czas początkowy;t- czas końcowy( dla którego równanie ma być liczone);f- dana funkcja.
Polecenia Control Toolbox
Tworzenie systemów:
• Syslin – definiowanie systemu liniowego;
• Ts2ss – przejście z transmitancji na współrzędne stanu;
• Ss2tf - przejście z transmitancji na współrzędne stanu;
• Dscr – dyskretyzacja systemu liniowego;
• Linspace – generowanie wektorów pomocnych przy tworzeniu podstawy czasowej dla symulacji.
Symulowanie systemów
• Csim – symulacja systemu liniowego;
• Ltitr – odpowiedz systemu dyskretnego;
• Dsimul – symulacja systemu dyskretnego zdefiniowanego przy pomocy równań stanu.
Typowe charakterystyki
• Bode – charakterystyka Bode’go;
• Nyquist- charakterystyka Nyquist;
• Evans – pokazuje rozłożenie pierwiastków systemu;
• G_margin – wyznaczanie zapasu wzmocnienia;
• P-margin – wyznaczanie zapasu fazy.
Zadania
1. Rozwiąż równanie
=+−=++−
=−+
71292435
532
321
321
321
xxxxxx
xxx.
2. Dla dowolnych macierzy udowodnij, że 111)( −−− = ABAB .
3. Na jednym wykresie narysuj funkcje :
)3626
(32
)3626
(32
22
2
22
2
xxxxx
y
xxxxx
y
−−++−+
=
−+++−+
=
4. Dla obiektu o transmitancji 13
5)(+
=s
sG wyznacz odpowiedz na skok jednostkowy,
wymuszenie sinusoidalne. Dodatkowo wykreśl charakterystykę Nyquista oraz Bode’go.