MATLAB Małgorzata Jakubowska Matlab MATrix LABoratory Mathworks Inc. pakiet oprogramowania matematycznego firmy MathWorks Inc. (www.mathworks.com) rozwijany od roku 1984 język programowania i środowisko do obliczeń naukowotechnicznych obszerny zestaw tematycznych bibliotek podprogramów (toolbox ów) obszerna dokumentacja (wiele tysięcy stron podręczników i pomoc wbudowana) oraz przykłady jeden z podstawowych programów na uczelniach Zalety: wykonywanie obliczeń naukowych i inŝynierskich graficzna wizualizacja danych i wyników obliczeń architektura otwarta moŝliwość pisania własnych funkcji oraz modyfikacji wbudowanych moŝliwość rozszerzania zakresu działania z wykorzystaniem procedur dostępnych w internecie daje moŝliwość programowania bez konieczności rozpoznawania środowiska programistycznego (jak BASIC a nie jak C czy C++) przyjazne, interaktywne środowisko pracy stale rozwijany i wzbogacany. MATLAB Tematyka toolboxów Matlaba SIMULINK - Symulacja układów dynamicznych Przetwarzanie i analiza Sygnałów Przetwarzanie i analiza Obrazów Sieci Neuronowe Logika rozmyta Statystyka Finanse i giełda Akwizycja danych Projektowanie filtrów Bazy danych Matematyka symboliczna Analiza falkowa i Fourier'a Optymalizacja Równania róŝniczkowe Sterowanie nieliniowe Sterowanie predykcyjne Analiza chemiczna Geografia i mapy Funkcje sklejane (spline) Metoda elem. skończonych Teoria grafów........ Tematyka toolboxów Matlaba Elementy pakietu Matlab Język Matlab umoŝliwia tworzenie programów, kompletnych aplikacji, udostępnia funkcje, obsługę wejścia/wyjścia i elementy programowania obiektowego. Środowisko robocze Matlaba zestaw narzędzi do zarządzania zmiennymi w przestrzeni roboczej, m-plikami, aplikacjami Matlaba oraz do importowania i eksportowania danych. System graficzny zawiera funkcję do tworzenia dwu- i trójwymiarowych wykresów, funkcje przetwarzania obrazów i tworzenia animacji, budowę graficznego interfejsu uŝytkownika. Biblioteka funkcji matematycznych podstawowe funkcje matematyczne, funkcje macierzowe oraz specyficzne funkcje matematyczne. Interfejs API biblioteka umoŝliwiająca tworzenie programów w językach C i Fortran, współpracujących z programami napisanymi w Matlabie. 1
MATLAB okno programu Help Obszar roboczy Aktualny katalog Historia Okno komend MATLAB typy danych podstawowym typem danych w MATLABie jest tablica (macierz) o elementach rzeczywistych lub zespolonych wszystkie zmienne w MATLABie są traktowane jak macierze wektory i skalary są szczególnymi przypadkami macierzy kaŝda macierz jest identyfikowana przez nazwę zmiennej nazwy zmiennych rozpoczynają się od litery, a po niej mogą być litery, cyfry i znaki podkreślenia pamiętanych jest 31 pierwszych znaków Nazwy i definicje zmiennych MATLAB rozróŝnia duŝe i małe litery polecenia standardowe naleŝy pisać małymi literami do nazywania własnych programów i zmiennych moŝna uŝywać małych i duŝych liter definiowanie typu i wymiarów macierzy odbywa się automatycznie - przez rozpoznanie rodzaju wpisanych wartości MATLAB generuje zmienną automatycznie podczas jej pierwszego uŝycia aby sprawdzić wartość istniejącej juŝ zmiennej, naleŝy w wierszu poleceń wpisać jej nazwę. Liczby Stałopozycyjne - z opcjonalnym uŝyciem znaku + lub oraz kropki dziesiętnej Zmiennopozycyjnej - z uŝyciem znaku e lub E poprzedzającego wykładnik potęgi 10, np. 10e2=100 Do zapisu części urojonej liczb zespolonych uŝywa się stałej i lub j. Polecenia po wydaniu polecenia i naciśnięciu klawisza Enter Matlab natychmiast wyświetla jego wynik umieszczenie po poleceniu średnika spowoduje wykonanie obliczeń, ale bez wyświetlania wyniku polecenie powinno się mieścić w jednym wierszu kilka poleceń w jednym wierszu oddzielamy od siebie przecinkami lub średnikami. 2
Proste obliczenia Komendy wprowadzamy w oknie interpretera po znaku zachęty >>. >> 5+7 ans = 12 >> a=13 a= 13 >> x=sin(pi/2) x= 1 Komenda zakończona średnikiem wykona się lecz nie będzie wyświetlony wynik. >> x=sin(pi/2); >> >> a=10 a = 10 >> b=20 b= 20 >> c=30 c= 30 >> d=(a+b+c)/3 d= 20 Proste obliczenia >> w=[7, 13, 12] w= 7 13 12 >> w=[7 ; 13 ; 12] w= 7 13 12 Wektor, macierz >> m=[2,12,44,14 ; 7,17,27,101 ; 3,13,33,202] m= 2 12 44 14 7 17 27 101 3 13 33 202 Wprowadzanie wektorów <zmienna> =<wartość początkowa>:<krok>:<wartość końcowa> >>czasi=0:100:2300; komenda utworzy wektor o długości 24 elementów zawierający wartości 0, 100, 200,..., 2300 >>czasi(3) ans= 200 >>czasi(24) ans= 2300 Wprowadzanie macierzy elementy w wierszu macierzy muszą być oddzielane spacją lub przecinkami średnik lub znak nowego wiersza kończy wiersz macierzy i powoduje przejście do następnego cała lista elementów musi być ujęta w nawiasy kwadratowe. >>A=[1:9; 2:2:18] A= 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 Operacje na macierzach i ich elementach Operacje macierzowe operacje na macierzach określone regułami algebry liniowej. X*Y mnoŝenie macierzy, zgodna z zasadami rachunku macierzowego (liczba kolumn X jest równa liczbie kolumn Y) X+Y sumowanie macierzy X-Y odejmowanie macierzy X transpozycja macierzy 3
Operacje na macierzach i ich elementach Operacje tablicowe operacje na elementach macierzy. X.*Y mnoŝenie elementów wektorów lub macierzy o tych samych indeksach tzn. X(i,j)*Y(i,j) X.+Y sumowanie elementów macierzy o tych samych indeksach X.-Y odejmowanie elementów macierzy o tych samych indeksach Operacje na macierzach i ich elementach >> X=[1 2 3]; Y=[4 5 6]; >>Y % transpozycja wektora ans= 4 5 6 >>X*Y ans= 32 >>X.*Y ans= 4 10 18 Generacja macierzy i operacje na macierzach Operacje na wektorach Funkcja eye(n) ones(n) zeros(n) macierz jednostkowa nxn macierz zerowa nxn Wynik działania funkcji macierz nxn o elementach równych 1 max(x) min(x) zwraca największy element wektora x zwraca najmniejszy element wektora x rand(n) A=diag(x) x=diag(a) inv(a) macierz nxn wypełniona liczbami pseudolosowymi z przedziału <0,1> o rozkładzie jednostajnym macierz przekątniowa A ze składnikami wektora x na głównej przekątnej wektor x utworzony z elementów znajdujących się na głównej przekątnej macierzy A macierz odwrotna do A sum(x) prod(x) mean(x) zwraca sumę elementów wektora x zwraca iloczyn elementów wektora x zwraca średnią arytmetyczną elementów wektora x Stałe matematyczne Funkcje matematyczne stałe pi eps i lub j Inf lub inf NaN lub nan przybliŝenie wartości względna dokładność zmiennoprzecinkowa pierwiastek z liczby 1 opis nieskończoność (ang. infinity); jest rezultatem operacji, która przekracza zakres arytmetyki komputera, np.dzielenie przez 0 nie liczba; jest wynikiem matematycznie niezdefiniowanych operacji Wbudowane - część jądra pakietu, do których uŝytkownicy nie mają dostępu (np. sqrt) Implementowane w m-plikach - przechowywane w ogólnie dostępnych plikach (np. sinh); takie m-pliki uŝytkownicy mogą tworzyć sami. 4
WaŜniejsze elementarne funkcje matematyczne abs - wartość bezwzględna funkcje trygonometryczne, hiperboliczne i odwrotne exp - e do x fix - zaokrągla w stronę zera floor - zaokrągla w dół log - logarytm naturalny log2 - logarytm o podstawie 2 log10 - logarytm o podstawie 10 round - zaokrągla do najbliŝszej całkowitej sign - znak sqrt- pierwiastek Operacje graficzne Wykresy dwuwymiarowe Rysowanie wykresów Polecenie plot(x,y) plot(y) plot(x,y,s) Opis rysuje wykres elementów wektora y względem elementów wektora x rysuje wykres elementów wektora y, przyjmując x=1:length(y) rysuje wykres y(x) z określeniem dokładnego wyglądu linii; s-łańcuch zawierający kody >> x=[1 2 3 4 5]; >> y=[25 0 20 5 15]; >>plot(x, y); Funkcja xlabel(tekst) ylabel(tekst) title(tekst) text(x,y,tekst) legend(s1,s2,..) grid on/off Opis wykresów Opis wyświetla łańcuch znaków tekst jako opis osi x aktywnego wykresu wyświetla łańcuch znaków tekst jako opis osi y aktywnego wykresu wyświetla łańcuch znaków tekst jako tytuł aktywnego wykresu wyświetla łańcuch znaków tekst w miejscu określonym przez współrzędne x,y wyświetla legendę; łańcuch znaków s1 jest opisem odnoszącym się do pierwszego wykresu,s2-drugiego,... włącza/wyłącza wyświetlanie pomocniczej siatki współrzędnych Rysowanie wykresów parabola >> x=-5 :.1 : 5; >> y=x.^ 2; >>plot(x, y); >>xlabel( x-axis ); >>ylabel( y-axis ); >>title( A Parabola ); >>grid on; 5
Kilka wykresów na rysunku >> x=-10 :.05 : 10; >> line = 5.* x; >> parabola = x.^ 2; >> exponential = exp(x); >> absolute_value=abs(x); >> subplot(2,2,1); plot(x, line)); >> title( Here is the line ); >> subplot(2,2,2); plot(x, parabola)); >> title( Here is the parabola ); >> subplot(2,2,3); plot(x, exponential)); >> title( Here is the exponential ); >> subplot(2,2,4); plot(x, absolute value)); >> title( Here is the absolute value ); Wykres 3D Tworzenie wykresów krzywych: przestrzennych (plot3), siatek (mesh) powierzchni (surf) wykresów konturowych (contour). Pomoc na temat funkcji 3D: help graph3d. Polecenie plot3(x,y,z,s) generuje trójwymiarową krzywą złoŝoną z punktów (xi, yi, zi) współrzędne zostały określone w wektorach x, y, z wektory muszą być tej samej długości funkcja ta jest odpowiednikiem funkcji plot w grafice dwuwymiarowej. Wykres 3D Wykres 3D meshgrid(x,y) - jako argumenty podajemy ciągi (wektory) wartości x oraz y a w wyniku uzyskujemy dwie macierze zawierające łącznie wszystkie pary współrzędnych dla których mają być wyznaczane wartości funkcji zmiennych x, y. mesh(x,y,z,c) rysuje powierzchnię opisaną macierzami x, y, z w postaci kolorowej siatki o polach wypełnionych kolorem tła; elementy macierzy c określają kolory linii poszczególnych pól. Wykres 3D Programowanie w Matlabie 6
Instrukcja warunkowa if warunek polecenia1 else polecenia2 end; Przykład >> if (a ~= 0) c=b/a; else c=12; end; Operatory porównania operator opis a = = b równy a~=b nierówny a<b mniejszy a>b większy a<=b mniejszy lub równy a>=b większy lub równy Operatory logiczne operator a b a&b ~a opis alternatywa koniunkcja negacja relacja a lub b a i b nie a Instrukcja pętli while warunek polecenia end; Instrukcja wykonuje polecenia tak długo, dopóki warunek jest spełniony. Przykład >> i=1; >> while i<10 p(i)=i^2; i=i+2; end; for zmienna = macierz wartości end; polecenia Instrukcja pętli ALE NAJCZĘŚCIEJ for zmienna = wartość początkowa : krok : wartość końcowa polecenia end; Instrukcja powtarza wykonanie poleceń dla zmiennej przyjmującej wartości od wartości początkowej do wartości końcowej, zmieniając co krok. Przykład >> for i =1:5 p(i) = (2*i)^2; end; M-pliki własne programy (wieloliniowe) moŝna pisać w edytorze MATLABa lub w notatniku zapisywane są do plików z rozszerzeniem *.m uruchamiane (wywoływane) są przez wpisanie nazwy pliku (bez rozszerzenia.m) w oknie komend RozróŜniamy: skrypty - operujące na zmiennych przestrzeni roboczej Matlaba funkcje - posiadające zmienne lokalne 7
Skrypty skrypt jest plikiem tekstowym o rozszerzeniu.m (m-plikiem), zawierającym polecenia i instrukcje 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 Matlaba. Przykład m-pliku skryptowego M-pliki skryptowe % po znaku procentu są tzw. komentarze % program rozwiązywania równania kwadratowego a=input('a='); b=input('b='); c=input('c='); delta = b*b-4*a*c; if delta<0 disp('brak pierwiastków rzeczywistych'); else x1=(-b-sqrt(delta))/(2*a); x2=(-b+sqrt(delta))/(2*a); disp('x1='); disp(x1); disp('x2='); disp(x2); end Pierwszy wiersz m-pliku musi zawierać definicję nowej funkcji: słowo kluczowe function Funkcje nazwę funkcji - musi być taka sama, jak nazwa pliku (bez rozszerzenia.m), w którym znajduje się funkcja wartości funkcji (lista argumentów wyjściowych) parametry funkcji (lista argumentów wejściowych). Funkcje function [lista param wyjściowych] = nazwa funkcji (lista param.wejściowych) function c = pitagoras(a,b); c2 = a.^2 + b.^2; % c2 zmienna lokalna c = sqrt(c2); Funkcję zapisać w pliku pitagoras.m Wywołanie funkcji: >> x=3; y=4; z=pitagoras(x,y) www.nr.com Analiza numeryczna 8
Miejsca zerowe i minima funkcji x1=fzero(f,x0) - zwraca miejsce zerowe x1 nieliniowej funkcji jednej zmiennej f(x); argument x0 określa początkowe przybliŝenie wartości szukanego miejsca zerowego; f jest łańcuchem znaków określającym funkcję Matlaba. x1=fminbnd(f,x0,xk) - zwraca wartość x1, dla której nieliniowa funkcja jednej zmiennej f(x) osiąga minimum; argumentami funkcji są liczby x0 i xk, określające początek i koniec przedziału poszukiwań, oraz łańcuch znaków f określa funkcję Matlaba Pierwiastki wielomianu Wielomian n-tego stopnia ma ogólną postać: W(x,a)=a 1 x n +a 2 x n-1 +...+a n x+a n+1 a=poly( r ) - zwraca wektor a współczynników a 1, a 2, a 3,..., a n +1 wielomianu W(x,a) o pierwiastkach podanych w postaci wektora r=[r 1, r 2,..., r n ] p=polyval(a,x0) - zwraca wartość wielomianu W(x,a) w punkcie x=x0; współczynniki wielomianu określa wektor a, przy czym muszą być one uszeregowane w kolejności od najbardziej znaczącego (a 1 ) do wyrazu wolnego (a n+1 ) r=roots(a) - wraca wektor r pierwiastków wielomianu W(x,a); a jest wektorem współczynników wielomianu a 1, a 2, a 3,..., a n+1 rank(a)- oblicza rząd macierzy A Algebra liniowa det(a) - oblicza wyznacznik macierzy kwadratowej A norm(a) - oblicza normę macierzy A cond(a) - oblicza liczbę warunkową macierzy A L=eig(A) - zwraca wektor L, zawierający wartości własne macierzy kwadratowej A x=inv(a)*b lub x=b/a - rozwiązuje układ równań A*x=b (b-wektor kolumnowy) Interpolacja W przedziale [a; b] danych jest n+1 róŝnych punktów x0, x1,..., xn, które nazywamy węzłami interpolacji, oraz wartości pewnej funkcji y=f(x) w tych punktach f(x0)=y0, f(x1)=y1,..., f(xn)=yn. Zadaniem interpolacji jest znalezienie funkcji F(x), zwanej funkcją interpolującą, która w węzłach interpolacji przyjmuje takie same wartości co funkcja y=f(x). Standardowe procedury Matlaba realizują interpolację za pomocą wielomianów pierwszego i trzeciego stopnia oraz funkcji sklejanych stopnia trzeciego. yi=interp1(x,y,xi,metoda) - zwraca wektor yi, będący wartościami funkcji 1 zmiennej y=f(x) w punktach określonych wektorem xi; węzły interpolacji określają wektory x i y; metoda - łańcuch znaków określający metodę interpolacji. Aproksymacja Jest to zagadnienie bardziej ogólne. Funkcja dana i funkcja szukana nie muszą przyjmować tych samych wartości w punktach węzłowych. Funkcję f(x), znaną lub określoną tablicą wartości, będziemy aproksymować (zastępować) inną funkcją F(x), zwaną funkcją aproksymującą. Standardową metodą aproksymacji w Matlabie jest aproksymacja średniokwadratowa wielomianami wybranego stopnia. a=polyfit(x,y,n) - znajduje wektor a współczynników wielomianu stopnia n najlepiej dopasowanego do danych wektorów x, y. Całkowanie metodą Simpsona Matematyczny opis metody Całka obliczana jest dla prostej funkcji podcałkowej f(x) b a f ( x) dx gdzie a < b (granice całkowania). PrzybliŜoną wartość całki oblicza się na podstawie wzoru Simpsona. (1) 9
Całkowanie metodą Simpsona Dany przedział [a, b] dzieli się na trzy równe podprzedziały: [a, x1] = [x0, x1], [x1, x2], [x2, x3] = [x2, b]. (2) W kolejnych podprzedziałach stosujemy wzór Simpsona xi h + 1 f ( x) dx [ f ( xi ) + 4 f ( xi + h) + f ( xi+ 1)] 3 xi h obliczane jest jako xi 1 x = + i h, i = 0,1,2 2 = I i (3) (4) Całkowanie metodą Simpsona Czynność powtarzana jest w kaŝdym podprzedziale. Uzyskujemy sumę: Następnie kaŝdy z przedziałów dzieli się znowu na trzy części i w podobny sposób otrzymuje się drugie przybliŝenie całki. Procedura ta jest kontynuowana do chwili, gdy róŝnica pomiędzy dwoma kolejnymi przybliŝeniami obliczanej całki jest dostatecznie mała lub gdy długości podprzedziałów są mniejsze od (b-a)/3n, gdzie n oznacza zadaną liczbę naturalną. W Matlabie b 2 f ( x) dx I i a i= 0 quad(f,a,b,) całkowanie metodą Simpsona. (5) Całkowanie Dziękuję za uwagę! 10