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

Podobne dokumenty