MATLAB jako narzędzie do obliczeń numerycznych Pakiet MATLAB jest to potężne narzędzie stosowane do przeprowadzania obliczeń i symulacji w wielu dziedzinach nauki. Głównym przeznaczeniem pakietu są obliczenia nauko-techniczne, inżynierskie oraz wizualizacje dwu i trójwymiarowe. Program ten pozwala na wykonywanie skomplikowanych obliczeń numerycznych z końcową wizualizacją otrzymanych wyników. Cel ćwiczenia: Zapoznanie się z pakietem MATLAB wstęp. Samodzielne rozwiązanie wybranych problemów matematycznych przy użyciu pakietu. Przebieg ćwiczenia: I. Uruchomienie pakietu MATLAB (ikona na pulpicie). - po uruchomieniu dostępne jest okno komend MATLAB a, w którym wprowadzane są wszystkie polecenia, II. W otwartym oknie napisz help (po znakach >> ) i naciśnij ENTER. - efektem tej komendy będzie wyświetlenie nazw wszystkich dostępnych w pakiecie toolbox ów. W Dodatku przedstawiono listę wybranych toolbox ów wraz z krótkim opisem. - napisz help nazwa_toolbox u wyświetlenie listy funkcji dostępnych w danym toolbox ie. III. Nadawanie wartości zmiennym. Podstawowym typem danych wykorzystywanych w MATLAB-ie są macierze. W pamięci przechowywane są w dwojaki sposób: gęsty przechowuje całą macierz i x j w pamięci albo rzadkizapamiętywane są tylko wartości niezerowe wraz z ich położeniami. Należy pamiętać, że MATLAB traktuje liczby i wektory jako macierze, tzn. liczby są traktowane jak macierze x, a wektory jak macierze xn. Macierze dwuwymiarowe (w pakiecie dostępne są również macierze wielowymiarowe) Tworząc macierz należy pamiętać o tym że: elementy w wierszu macierzy muszą być oddzielane spacją lub przecinkami średnik kończy wiersz macierzy i powoduje przejście do następnego cała lista elementów musi być ujęta w nawiasy kwadratowe. obowiązuje zasada indeksowania macierzy począwszy od Najprostszą macierz tworzy się wymieniając jej elementy w nawiasach kwadratowych. Napisz: >>M=[ 2.2 4 ; 5. 8 2 ]; Następnie napisz: >>M W efekcie otrzymamy macierz następującej postaci: M=.0000 2.0000 0.2000 4.0000 5.000 8.0000 2.0000.0000 Napisanie: >>M=[ 2.2 4 ; 5. 8 2 ] Powoduje natychmiastowe wyświetlenie macierzy. Odwołania do macierzy oraz kilka podstawowych komend umieszczono w Dodatku 2. IV. Podstawowe operatory arytmetyczne Operatory: +,-,*,/,^ to odpowiednio: dodawanie, odejmowanie, mnożenie, dzielenie i potęgowanie (wymiary macierzy muszą umożliwiać wykonanie danej operacji).
Wykonaj przykład (napisz): >>a=[,,;2,2,2;3,3,3] >>b=[0,0,;0,,0;,,] >>a+b >>c=a+b >>a-b >>d=a*b >>e=a/b (jeżeli chcesz wiedzieć w jaki sposób wykonywane jest to działanie, to napisz :) >>help / >>f=a^2 >>g=exp(a) (operacja bardzo często wykonywana przy rozwiązywaniu zadań z automatyki) V. Skrypty Skrypt jest plikiem tekstowym o rozszerzeniu.m (m-plikiem), zawierającym polecenia i instrukcje Matlaba. Polecenia w pliku muszą być zgodne z semantyką MATLABA. Skrypty nie pobierają żadnych argumentów wejściowych ani nie zwracają argumentów wyjściowych mogą tylko operować na zmiennych dostępnych w przestrzeni roboczej MATLAB-a. Umieszczanie komentarza w pliku skryptu (pierwsze 3 linie) daje nam możliwość uzyskania pomocy na temat skryptu. Wywołujemy: help nazwa skryptu. Funkcje obsługi wejścia skryptu:. x=input(tekst) - wyświetla łańcuch tekst, oczekuje na wpisanie przez użytkownika danej liczbowej i przypisuje ją zmiennej liczbowej x, zamiast danej liczbowej można wpisać wyrażenie MATLAB-a, 2. x=input(tekst,s) - wyświetla łańcuch tekst, oczekuje na wpisanie przez użytkownika łańcucha znakowego i przypisuje go zmiennej x, 3. pause - zatrzymuje wykonywanie skryptu do momentu naciśnięcia dowolnego klawisza, 4. pause(n) - zastępuje wykonywanie skryptu na n sekund. Przykład : W oknie komend MATLAB-a, na pasku narzędzi (na górze ikona z biała kartką) wybierz ikonę New M-FILE (w ten sposób otworzysz okno edytora). Napisz w edytorze: %To jest skrypt %Dodaje dwie macierze aa=input('wprowadź macierz A: ') bb=input('wprowadź macierz B: \n') cc=aa+bb; cc Zapamiętaj utworzony skrypt pod nazwą naszskrypt.m tzn. na pasku w edytorze wybierz ikonę z dyskietką i zamiast untitle wpisz naszskrypt. Następnie w oknie komend MATLAB-a uruchom skrypt pisząc: >>naszskrypt Nie zapomnij poprawnie wprowadzić dwie macierze A i B. 2
VI. Wizualizacja wyników. MATLAB udostępnia liczne metody wizualizacji otrzymanych wyników obliczeń. Funkcje graficzne można podzielić na cztery podstawowe grupy:. przeznaczone do tworzenia wykresów dwu- i trójwymiarowych, 2. prezentujące wykresy ciągłe i dyskretne, 3. umożliwiające tworzenie grafiki wektorowej i rastrowej, 4. wysokiego i niskiego poziomu. Bliżej zajmiemy się grafiką dwuwymiarową 2D w układzie kartezjańskim. Przykład 5.: Dane są dwie funkcje: 2x f ( x) = oraz g( x) = sin( x) x 2 + 5 Znajdź graficznie współrzędne wszystkich punktów z przedziału <-0; 0> dla których funkcje te przyjmują te same wartości. Funkcję f(x) wykreśl zieloną, a g(x) czerwoną linią ciągłą. Napisz odpowiedni skrypt. Po otwarciu czystego dokumentu w edytorze należy napisać: fplot( -sin(.2*x),[-0,0],'r') hold on fplot( (-2*x)/(x^2+),[-0,0],'g') grid hold off ginput (3) Skrypt zapamiętać pod dowolną nazwą np. wykresy i uruchomić w oknie komend MATLAB-a. - komenda hold on powoduje, że następny wykres będzie rysowany bez niszczenia poprzedniego, hold off wyłącza ten tryb; - ginput (n) pozwala odczytać współrzędne n punktów na wykresie (klikając na nie). Przykład 5.2: Napisz odpowiedni skrypt i rozwiąż graficznie następujący układ równań (wykresy mają być wykreślone w nowym oknie w tym celu należy użyć funkcji figure): y = + 6 2 2 ( x 0.3) + 0.0) ( x 0.9) + 0.04) 2 2 y + x = 4 W edytorze napisz: figure ezplot('./((x - 0.3).^2 + 0.0) +./((x - 0.9).^2 + 0.04)-y-6',[-0,0]) hold on ezplot('y^2+x^2-',[-0,0]) grid hold off 3
Zapamiętaj i nazwij utworzony skrypt, a następnie uruchom go w oknie komend MATLAB-a pisząc jego nazwę. Przeskaluj współrzędne, aby dokładniej odczytać rozwiązania (użyj funkcji axis([xmin,xmax,ymin,ymax]). Napisz w oknie komend MATLAB-a : axis([-3,3,-3,3]) Zobacz ile jest rozwiązań podanego układu równań i używając funkcję ginput (n) odczytaj te rozwiązania. Przykład 5.3 Po jakim torze przemieszcza się punkt, jeżeli wiadomo, że w czasie t jedna współrzędna zmienia się wg funkcji x=sin(t), a druga y=cos(t). Wykreśl tor dla czasu t z przedziału [0,0Π]. Napisz skrypt lub bezpośrednio w oknie komend MATLAB-a : >>t = 0:pi/50:0*pi; >>plot3(sin(t),cos(t),t) >>grid Operacja t = 0:pi/50:0*pi tworzy wektor t 50-elementowy (sprawdź używając length(t)) o wartościach od 0 do 0*Π co Π. 50 Dodatek Poniżej przedstawiono listę wybranych TOOLBOX-ów z krótkim opisem: Chemometrix Toolbox przeznaczony do opracowywania danych chemicznych, Financial Toolbox przeznaczony do analiz i obliczeń finansowych (planowanie stałych przychodów, badanie wydajności obligacji, kalkulacja przepływu gotówki, obliczanie stóp procentowych etc.). Fuzzy Logic Toolbox środowisko do projektowania i diagnostyki inteligentnych układów sterowania wykorzystujących metody logiki rozmytej i uczenie adaptacyjne, Image Processing Toolbox programowe narzędzia do przetwarzania obrazów, Mapping Toolbox przeznaczony do analizy informacji geograficznych i wyświetlania map, z możliwością dostępu do zewnętrznych źródeł geograficznych, Neural Network Toolbox zbiór funkcji do projektowania i symulacji sieci neuronowych, Higher-Order Spectral Analisis Toolbox przeznaczony do analizy sygnałów zakłóconych szumem niegaussowskim lub sygnałami generowanymi przez procesy nieliniowe. Biblioteka ta znajduje zastosowanie w biomedycynie, akustyce, ekonometrii, oceanografii, przetwarzaniu sygnałów mowy, technice radarowej i sonarowej, Symbolic Math Toolbox zestaw funkcji do obliczeń symbolicznych - rozszerza możliwości Matlaba o możliwość wykonywania obliczeń symbolicznych, Parial Differential Equation Toolbox zestaw funkcji do numerycznego rozwiązywania równań różniczkowych cząstkowych metodą elementów skończonych, Simulink pakiet służący do modelowania, symulacji i analizy układów dynamicznych. Simulink dostarcza także graficzny interfejs użytkownika umożliwiający konstruowanie modeli w postaci diagramów blokowych, Spline Toolbox zestaw bibliotek do aproksymacji i interpolacji funkcjami sklejanymi, 4
Wavelet Toolbox biblioteka do analizy sygnałów oraz usuwania szumów. Dodatek 2 Odwołania do macierzy i kilka podstawowych komend (obliczanie rzędu macierzy, wektrów wasnych ipt.): x(j:k)- elementy wektora wierszowego x o numerach od j do k A(i,:)- wszystkie elementy w wierszu i macierzy A A(i,j:l)- wszystkie elementy w wierszu i macierzy A o numerach od j do l A(i:k,j:l)- wszystkie elementy w kolumnach od j do l wierszy od i do l A(x,j:l)- wszystkie elementy w kolumnach od j do l w wierszach macierzy A o numerach określonych przez elementy wektora x A(:,:)- cała dwuwymiarowa macierz A A(:)- cała macierz A w postaci wektora kolumnowego. disp(a)- wyświetla zawartość macierzy A w oknie poleceń size(a)- wyświetla rozmiar dwuwymiarowej macierzy A (liczbę wierszy i kolumn) w postaci dwuelementowego wektora wierszowego; [n m]=size(a) - przypisuje zmiennej n liczbę wierszy, a zmiennej m liczbe kolumn; n=size(a,)- przypisuje zmiennej n liczbę wierszy macierzy A. m=size(a,2) przypisuje zmiennej m liczbę kolumn macierzy A. length(x)- zwraca długość wektora x lub dłuższy z wymiarów macierzy det(a)- zwraca wyznacznik macierzy kwadratowej A. inv(a)- zwraca macierz odwrotną do macierzy A. eye(n)- tworzy macierz jednostkową nxn tril(a)- utworzenie z macierzy A macierzy trójktnej dolnej. triu(a)- utworzenie z macierzy A macierzy trójkątnej górnej. Dodatek 3 Do rysowania prostych wykresów służy funkcja: plot. W zależności od podanych parametrów wywołania: plot(x,y) - rysuje wykres elementów wektora y względem elementów wektora x, plot(y) - rysuje wykres elementów wektora y, przyjmując x =, plot(x,y,s) - rysuje wykres y(x) z określeniem dokładnego wyglądu linii; s łańcuch zawierający kody, plot(x,y,x2,y2,...) - rysuje w jednym oknie wiele wykresów:y(x), y2(x2),..., plot(x,y,s,x2,y2,s2,..) - rysuje w jednym oknie wiele wykresów z określeniem dokładnego wyglądu linii każdego z nich. ezplot(f,[a,b]) rysuje wykres f=f(x,y)=0 w przedziale [a,b]. plot3(x,y,z) - rysuje wykres trójwymiarowy, Funkcja linspace pomaga w tworzeniu danych do wykresu: linspace(x,x2,n) - generuje wierszowy wektor N liczb rozłożonych równomiernie wprzedziale od x do x2, linspace(x,x2) - generuje domyślnie 00 liczb z przedziału x dox2, fplot(f,[x0,xk]) - f-łańcuch znaków zawierających nazwę funkcji x0,xk-poczatek i koniec przedziału rysowania funkcji, [x,y]=fplot(...) - nie powoduje narysowania wykresu, tylko zwraca wektor argumentów x i wektor wartoci funkcji y. Wykres uzyskanych danych można narysować za pomocą polecenia plot(x,y) W celu dokładniejszych informacji o funkcji plot, fplot, ezplot skorzystaj z np. help plot. 5
Funkcje wykorzystywane do opisu wykresów: Aby zwiększyć czytelność i zrozumienie wykresów warto je opisywać. Można to zrealizować korzystają z jednej z funkcji: title(txt) - tekst opisujący dany wykres, text(x,y,txt) - umieszczenie tekstu w podanych współrzędnych x i y, xlabel(txt), ylabel(txt) - opis tekstowy osi układu, gird - bezparametrowe wywołanie, nakładamy siatkę na układ współrzędnych. 6