Politechnika Gdańska Wydział Elektrotechniki i Automatyki WPROWADZENIE DO ŚRODOWISKA SCILAB Materiały pomocnicze do ćwiczeń laboratoryjnych Opracowanie: Paweł Lieder Gdańsk, 007
Podstawy pracy z Scilab. Każda komenda musi być zakończona wciśnięciem klawisza ENTER, co spowoduje jej wykonanie.. Zbyt długie polecenia mogą być dzielone na kilka linii używając składni... Podstawową strukturą danych używaną przez Scilab jest macierz. Nawet skalary są traktowane jako macierz rzędu.. Kopiowanie, wklejanie oraz wycinanie zaznaczonych fragmentów jest możliwe przy pomocy skrótów ctrlc, ctrlv oraz ctrl.. Komentarze wpisujemy po wyrażeniu używając składni //, np. Ab // dodawanie Operacje arytmetyczne:. 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.. 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.. 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 \.. Potęgowanie oraz pierwiastkowanie potęgowanie wykonuje się używając polecenia ^, zaś pierwiastkowanie sqrt.. Transpozycja w celu transpozycji macierzy używany jest operator.. Wartość bezwzględna moduł liczby wyliczamy używając polecenia abs(). gdzie 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 00 Porównanie skalarów binarnych porównanie wykonywane jest przy użyciu operatora // Odpowiedź T (True) // Odpowiedź F (False) Wprowadzenie wielomianów w tym celu definiujemy najpierw zmienną niewiadomą przy pomocy komendy poly. (0, ) Następnie wprowadzamy pożądany wielomian: a *^ Wyznaczanie pierwiastków równania wielomianowego służy do tego komenda roots. (0, ) a *^ 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[ ; ; 9 0 ] // tworzy macierz: A 9 0 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. aones(,) // tworzenie macierz 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. 0:: Polecenie wygeneruje ciąg: 0,,,,,. Należy pamiętać, iż ostatni podany element nie musi znaleźć się w wygenerowanym ciągu. Np. 0:: Wygenerowane liczby to: 0,,. Odnoszenie się do konkretnych elementów macierzy Scilab pozwala na pobranie i wyświetlenie konkretnych elementów z macierzy. Zastosowanie zostanie pokazane na macierzy A[ ; 8 0; 0 9 8 7 ; ; 7] // generowanie macierzy
A 0 9 8 8 7 0 7 A(,) // wyświetlenie elementu z wiesza, -tej kolumny A(:,:) // wyświetlenie elementów z pierwszych trzech wierszy, a także kolumn i. A(:,) // wyświetlenie piątej kolumny A(,:) // wyświetlenie piątego wiersza Operacje arytmetyczne na macierzach: Zdefiniujmy dwie macierze: A oraz B. 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 c A* B' 7 Mnożenie element po elemencie A.*B c A. * B 0 0
Mnożenie macierzy przez skalar *A c * A 0 0 0 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 plotd. Składnia polecenia: plotd([],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 basc(). W nawias podawany jest numer id okna. Do innych pożytecznych komend przy generowaniu wykresów możemy zaliczyć: - _vals określenie współrzędnych osi ; - y_vals - określenie współrzędnych osi y; - legends legenda; - title nazwa wykresu. Funkcje W Scilab zaimplementowano bardzo prostą oraz intuicyjną obsługę funkcji. Zastosowanie tej procedury pokazane zostanie na przykładzie przebiegu wielomianu. function [y]f() y ^-*^* endfunction (-0:0.:0) // deklaracja funkcji // koniec funkcji // zadeklarowanie przedziału czasowego
fplotd(,f) title('przebieg Funkcji') legend('wielomian') // rysowanie funkcji Otrzymany przebieg: Należy zwrócić uwagę na komendę użytą do rysowania funkcji. Zamiast polecenia plotd użyto fplotd, 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 Toolbo Tworzenie systemów: Syslin definiowanie systemu liniowego; Tsss przejście z transmitancji na współrzędne stanu; Sstf - 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. Rozwiąż równanie 7 9.. Dla dowolnych macierzy udowodnij, że ) ( A B AB.. Na jednym wykresie narysuj funkcje : ) ( ) ( y y. Dla obiektu o transmitancji ) ( s s G wyznacz odpowiedz na skok jednostkowy, wymuszenie sinusoidalne. Dodatkowo wykreśl charakterystykę Nyquista oraz Bode go.