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