Zmienne, wykresy, skrypty
Transkrypt
Zmienne, wykresy, skrypty
P ra k t y c z n e wp ro wa d ze n i e d o o p i su , a n a l i zy i sy m u l a c j i d y n a m i k i o b i e k t ó w Część II: Badania symulacyjne Badania symulacyjne przedstawione w tej części zostały oparte na podstawowych możliwościach jakie oferuje komercyjne oprogramowanie Matlab (wer.≥5.3) wraz z bibliotekami Simulink i Control, oraz jego darmowe odpowiedniki – Scilab (wer.≥5.3) i Octave. Pełny opis funkcji użytych w przykładach jest dostępny w dokumentacji poszczególnych pakietów, m. in. po wywołaniu podręcznej pomocy: „help nazwa_funkcji”. 1. Zmienne, wykresy, skrypty 1.1. Wprowadzenie – elementy 1.1.1. Zmienne Programy symulacyjne takie jak Matlab i jemu podobne są przystosowane w szczególny sposób do wykonywania operacji na wektorach i macierzach. Tę własność wykorzystuje się nie tylko do wykonywania operacji na macierzach (np.: A+B, A-B, A*B, A/B), ale także jako sposób realizacji szybkich pętli programowych – wówczas używane są operatory z kropką działające na elementach macierzy (np. A.+B, A.-B, A.*B, A./B). W każdym przypadku warunkiem wykonania operacji jest zgodność wymiarów macierzy odpowiednia dla operacji. Wektory i macierze są również typowym sposobem definiowania zestawu współczynników, na przykład dla wielomianów. Właściwie każda prosta zmienna (liczba, zmienna logiczna, znak, tekst, wektor) może być traktowana jako macierz o określonych wymiarach, niezależnie od tego jak została zdefiniowana. Zmienne mogą być definiowane przez: - podstawienie wartości, np.: a=3, b=[1 2; 3 4], c='cos', d=['aaa';'bbb';'ccc'], - zastosowanie specjalistycznych funkcji, np.: zeros(2), ones(3), eye(2), - wygenerowane za pomocą operatora ':', np.: a=0:2:20. 1.1.2. Wykresy P ra k t y c zn e wp ro wa d z e n i e d o o p i su , a n a l i zy i s y m u l a c j i d y n a m i k i o b i e k t ó w 1.2. Przykłady – podstawowe funkcje i operacje Kilka poniższych fragmentów skryptów (Tab. II-2) zawiera przykłady generowania i operacji na zmiennych (w szczególności macierzy), tworzenia i definiowania własności okna graficznego oraz rysowania dwu- i trój-wymiarowych wykresów funkcji. Tab. II-2. Przykłady skryptów generujących wykresy Matlab Scilab Octave Nazwa skryptu *.m *.sci *.m figure; Otarcie okna figure; figure(); Bez kasowania hold on; set(gca(), 'auto_clear', 'off'); hold on; set(gca(), 'grid', [1,1]); grid on; Włącz siatkę grid on; Wykres funkcji x = [-10:1:10]; x = [-10:1:10]; x = [-10:1:10]; for a = -2 : .5 : 2; for a = -2 : .5 : 2 do for a = -2 : .5 : 2; ax 2 plot(x, a*x.*x); plot(x, a*x.*x); plot(x, a*x.*x); endfor end end Wykres funkcji [x,y]=meshgrid(-2:.2:2,-2:.2:2); [x,y]=meshgrid(-2:.2:2,-2:.2:2); [x,y]=meshgrid(-2:.2:2,-2:.2:2); 2 2 z = x.*exp(-x.^2-y.^2); z = x.*exp(-x.^2-y.^2); z = x.*exp(-x.^2-y.^2); xe (− x − y ) mesh(z) mesh(z) mesh(x,y,z) Wykresy są często podstawowym sposobem prezentacji wyników badań, powinny więc być wykonane i opisane w przejrzysty sposób, czemu służą przedstawione funkcje - Tab. II-3. Tab. II-3. Funkcje pomocnicze wykresów Matlab Tytuł wykresu title('Tytul wykresu'); Opis osi x xlabel('Czas [s]'); Opis osi y ylabel('Wyjście'); Tekst na wykresie text (1,27, 'dowolny'); Legenda legend('A', 'B'); Kolor i typ linii plot(x, x+x, 'r-') Podział okna i wybór subplot(2,1,1); plot(x, x+x); części aktywnej subplot(2,1,2); plot(x, x); Scilab title('Tytul wykresu'); xlabel('Czas [s]'); ylabel('Wyjście'); xstring(1, 27, 'dowolny'); legend('A', 'B'); plot(x, x+x, 'r-') subplot(2,1,1);plot(x, x+x); subplot(2,1,2); plot(x, x); Octave title("Tytul wykresu") xlabel"Opis osi x") ylabel("Opis osi y") text (1, 27, "dowolny"); legend ("A","B"); Własności obiektów automatyki bardzo często są prezentowane i badane na podstawie różnego typu wykresów. Zazwyczaj stosowane są rodziny wykresów w układzie x-y, a dane do wykresów zawarte są w zmiennych typu wektor lub macierz. Do utworzenia wykresów wystarcza podstawowa funkcja typu plot, która umożliwia rysowanie wykresów w różnych kolorach i różnymi typami linii. Dodatkowe możliwości zapewniają funkcje do definiowania różnych własności wykresu lub okna graficznego, w którym ten wykres jest wyświetlany, na przykład tytuł, opis osi, legenda, skalowanie, itp. 1.3. Zadania – zastosowanie macierzy i wykresów 1.1.3. 1º Zdefiniuj przykładowe macierze o wybranej ilości wierszy i kolumn, a następnie zrealizuj operacje mnożenia/dzielenia: a) dwóch macierzy, b) elementów dwóch macierzy. Zwróć uwagę na dopasowanie wymiarów macierzy zależnie od operacji. 2º Za pomocą wektora/macierzy zdefiniuj przykładowy wielomian oraz układ równań, a następnie wyznacz jego pierwiastki. Sprawdź np. funkcje poly i roots w Matlabie. 3º Określ typ () podanych funkcji i przedstaw rodziny wykresów tych funkcji: 2 1 a + bx x−a b) y = , c) y = , d) y = a x a) y = +c , c + dx ax 2 + b b Skrypty Badania symulacyjne polegają zazwyczaj na wygenerowaniu wielu serii wyników, otrzymywanych na przykład dla różnych wartości wybranych parametrów. Pojawia się więc problem sposobu dokumentowania prowadzonych badań. Można to w prosty sposób osiągnąć za pomocą skryptów, w których będą zapisane pełne programy badań – od zdefiniowania zmiennych, przez wykonanie symulacji, do opracowania wyników. Skrypt zapewnia nie tylko dokumentowanie ale także możliwość powtórzenia badań, poprawienia błędów, zmodyfikowania zakresu, itd. W skryptach często wykorzystuje się elementy programowania, takie jak instrukcje warunkowe czy pętle (Tab. II-1). Celem pierwszych symulacji jest sprawdzenie funkcji związanych z generowaniem wykresów oraz zastosowaniem macierzy (wektorów) w różnych rolach: - generowanie macierzy i odwoływanie się do wybranych elementów (m.in. operator ':'), - operacje na macierzach i na elementach macierzy, - rysowanie wykresów dwu- i trój-wymiarowych. Symulacje należy zrealizować z wykorzystaniem skryptów. Tab. II-1. Elementy programowania Matlab Scilab Octave komentarz liniowy % … // … # … lub % … komentarz blokowy #{ … #} lub %{ … %} warunek if WL, OP1, else OP2, end if WL, OP1, else OP2, end if WL OP1 else OP2 endif wybór switch WL, case OP1, … select WL, case OP1 switch WL case OP1 … otherwise OPn, end else OPn, end otherwise OPn, endswitch pętla for for LP, operacje end for LP do, operacje end for LP operacje endfor pętla while while WL, OP end while WL do, OP end while WL OP endwhile gdzie: WL – warunek logiczny, OP – operacje, LP – licznik pętli, np.: i=poczatek:krok:koniec, Dobierz odpowiednio dziedzinę funkcji, a spośród różnych wartości parametrów (a, b, c, d) wybierz takie zestawy aby uzyskać różne postaci krzywych. Rysowanie danej rodziny wykresów dla różnych wartości parametrów zrealizuj przy użyciu pętli. Zastosuj różne kolory i typy linii – zestaw ciągów formatujących linii zdefiniuj w macierzy, np. format= ['r- ' ; 'b--'] 4º Narysuj powierzchnie z(x,y) opisane następującymi funkcjami: b) a 2 x 2 + b 2 y 2 + cz 2 = 1 . a) ax 2 + by 2 = cz , Dobierz dziedzinę funkcji, tak aby przedstawić wszystkie charakterystyczne cechy powierzchni, np. punkty nieciągłości, ekstrema. Jak wartości parametrów (a, b, c) wpływają na wygląd powierzchni? - 52 - - 53 - I.1.1