MATLAB – funkcje i skrypty
Transkrypt
MATLAB – funkcje i skrypty
Modele układów dynamicznych laboratorium MATLAB – funkcje i skrypty M-pliki M-plik jest plikiem dyskowym z rozszerzeniem *.m. Tworzy się je przy uŜyciu edytorów (np. edytora Matlaba). Zawierają sekwencję poleceń Matlaba. Mogą zawierać wywołania do innych m-plików. RozróŜnia się dwa rodzaje m-plików: skryptowe, funkcyjne. M-pliki skryptowe ● ● Skrypty zawierają ciągi poleceń Matlaba potrzebnych do wykonania danego programu. Skrypt moŜe być wykonywany wielokrotnie. Działają na zmiennych globalnych w przestrzeni roboczej Matlaba. ● Nie mają argumentów wejściowych czy wyjściowych. ● Polecenia pracy interaktywnej stosowane w skryptach: − input – tekst zachęty do wprowadzania danych, − keyboard – wywołanie klawiatury w trakcie wykonywania mpliku, menu – generowanie okna dla wyboru danych uŜytkownika, pause – wstrzymanie wykonywania m-pliku w oczekiwaniu na reakcję uŜytkownika. − − M-pliki funkcyjne ● ● ● ● M-pliki funkcyjne zawierają funkcje tworzone przez uŜytkownika. Mogą akceptować argumenty wejściowe czy zwracać argumenty wyjściowe. Działają na zmiennych lokalnych. Zmienne moŜna zdefiniować jako globalne instrukcją global. Rozpoczynają się od słowa kluczowego function. Musza zawierać nazwę funkcji oraz listę argumentów wejściowych w nawiasach (). function [argumenty_wyjściowe]=nazwa_funkcji(argumenty wejściowe) function [y1,y2]=oblicz(x1,x2) function rysuj() ● Nazwa funkcji powinna być taka sama jak nazwa mpliku, w którym ją zapisano. Funkcje wewnętrzne ● ● ● M-pliki mogą zawierać kody więcej niŜ jednej funkcji (sub-functions). Dodatkowe funkcje zawarte w m-pliku są jedynie widoczne dla funkcji podstawowej lub innych funkcji wewnętrznych w tym pliku. KaŜda funkcja wewnętrzna zaczyna się własną linią definicji. Wiele funkcji sub-functions moŜe znajdować się w róŜnej kolejności w m-pliku. Funkcja podstawowa musi być pierwsza. Rozwiązywanie równań róŜniczkowych zwyczajnych ● Do rozwiązywania równań róŜniczkowych zwyczajnych słuŜą procedury odexx. Najczęściej stosuje się ode45 ode45(‘nazwa_funkcji’, [t0 tk], [x0]). ● Równanie n-tego rzędu musi być zapisane w postaci n równań rzędu pierwszego. Równania rzędu pierwszego przekształcamy do postaci rozwikłanej, tak aby pochodna znajdowała się po lewej stronie równania x’=f(x,t). Przykład 1 ● ● ● Równanie róŜniczkowe: x’+x2=t Postać rozwikłana: x’=t-x2 M-plik funkcyjny xprim.m: function xprim=fun1(t,x) xprim=t-x*x; ● W oknie Matlaba: tp=[0 2]; % dziedzina rozwiązania x0=1; % warunek początkowy [t,x]=ode45(‘xprim’, tp, x0); % wywołanie procedury ode plot(t,x); % wykres rozwiązania Przykład 2 ● Równanie róŜniczkowe drgającego wahadła: θ’’+a sinθ=0 ● Układ równań pierwszego rzędu: ● θ’=ω ω’=-a sin θ M-plik funkcyjny xbis.m: function xbis=fun2(t,x) teta=x(1); omega=x(2); tetaprim=omega; omegaprim=-a*sin(teta); xbis=[tetaprim;omegaprim]; ● % wektor wyjściowy!! W oknie Matlaba: tp=[0 2]; % dziedzina rozwiązania x0=[1;0]; początkowych!! % wektor warunków [t,x]=ode45(‘xbis’, tp, x0); % wywołanie procedury ode