Professional Documents
Culture Documents
Math Lab
Math Lab
Spis Tre)ci Wst p .................................................................................................................................. 3 Opis rodowiska Matlaba ..................................................................................................... 4 Operacje algebraiczne na wektorach i macierzach ................................................................ 9 Wizualizacja danych Wykresy dwuwymiarowe .............................................................. 13 Wizualizacja danych Wykresy trjwymiarowe ................................................................ 16 Podstawy programowania: skrypty i funkcje ...................................................................... 19 Instrukcje w Matlabie ........................................................................................................ 22 Inne przydatne funkcje ...................................................................................................... 24 Rozwi+zywanie rwna, nieliniowych ................................................................................ 27 Rozwi+zywanie uk.adw rwna, liniowych ...................................................................... 28 Interpolacja i aproksymacja funkcji ................................................................................... 30 Podstawy statystyki w Matlabie ......................................................................................... 31
KURS MATLAB I
Rok 2005/2006 semestr letni, wymiar 15h Prowadz-cy:
dr Ryszard Buczy,ski, ryszard.buczynski@mimuw.edu.pl, dr Rafa. Kasztelanic, kasztel@mimuw.edu.pl Zak.ad Optyki Informacyjnej, Instytut Geofizyki, Wydz. Fizyki UW Zaj cia odbywaj+ si w Instytucie Geofizyki, ul. Pasteura 7, V pi tro, pok. 508. (lub pok. 106)
Oprogramowanie:
Matlab, The MathWorks, Inc.; wersja 6.03; platforma UNIX/LINUX.
Charakterystyka kursu:
Poziom podstawowy, wymagana znajomo B podstawowych poj B matematycznych z zakresu algebry, analizy matematycznej i prawdopodobie,stwa, znajomo B programowania nie jest konieczna, ale mile widziana.
Forma zaliczenia:
Do zaliczenia Kursu na ocen dostateczn+ lub zal. wymagane jest zaliczenie wszystkich Bwicze,-laboratoriw. Ocena ko,cowa wystawiana jest przez prowadz+cego na podstawie osi+gni tej sprawno ci i post pw w pos.ugiwaniu si MATLABem, oraz kreatywno ci studenta. Obecno B na wszystkich zaj ciach jest obowi+zkowa, dopuszczamy jedna nieobecno B, przy wi kszej ilo ci wymagane jest zwolnienie lekarskie. Nieobecno B nie zwalnia studenta z zaliczenia poszczeglnych zada,. W czasie Kursu przewidziane s+ dwa krtkie (15 min.) kolokwia na godz. 7 i 14-tej. Ostatnia godzina 15-ta jest przeznaczona na wystawianie ocen i ewentualne poprawki.
Literatura:
1. 2. 3. 4. Matlab: Intro, Demo, manual online. A. Zalewski R. Cegie.a, Matlab Obliczenia numeryczne i ich zastosowania, Wyd. Nakom, Pozna, 1996. B. MroHek, Z. MroHek, Matlab uniwersalne rodowisko do oblicze, naukowo-technicznych, Wyd. PLJ, Warszawa 1996 B. Mrozek, Z. Mrozek, Matlab 6 poradnik uHytkownika.
TEMATY
OPIS 5RODOWISKA MATLABA
Temat 1 Matlab: przeznaczenie oprogramowania i opis pakietu Temat 2 Operowanie Matlabem w )rodowisku Linux Okna: workspace, directory, history, array editor, editor, Temat 3 R;nice mi<dzy wersjami Matlaba funkcja ver
>> ver % podaje numer wersji Matlaba oraz numery zainstalowanych dodatkw
Temat 4 Zapoznanie si< z narz<dziami wprowadzaj-cymi Matlaba funkcje demo, peaks, bench
>> demo % wy wietla dost pne przyk ady >> p aks % przyk adowa funkcja 2 zmiennych >> bench % sprawdzenie szybko ci pracy Matlaba benchmark
Temat 7 Znaczenie )rednika na ko&cu polecenia Krednik ko,cz+cy komend w Matlabie powoduje, He wynik dzia.ania danej komendy nie b dzie wy wietlany na ekranie.
imag lcm log log10 real rem round sec, sech sign sin, sinh sqrt tan, tanh
Cz B urojona liczby zespolonej Najmniejsza wsplna wielokrotno B Logarytm naturalny argumentu Logarytm dziesi tny argumentu Cz B rzeczywista liczby zespolonej Reszta z dzielenia Zaokr+glenie do najbliHszej liczby ca.kowitej Secans, ...... Znak funkcji Sinus, ..... Pierwiastek kwadratowy Tangens, .......
Przyk"ad:
>> abs(5+3i) % wy wietla warto ) bezwzgl dn" liczby zespolonej
Temat 12 Wprowadzanie precyzji wy)wietlanych wynikw funkcja format Do ustalenia precyzji wy wietlania wynikw s.uHy funkcja FORMAT. UWAGA: Wszystkie obliczenia w MATLABie wykonywane s- w podwjnej precyzji.
Polecenie Format short Format long Format shortE Format longE Format shortG Format longG Format hex Format bank Format rat Format + Warto)P 3.1416 3.14159265358979 3.1416e+000 3.141592653589793e+000 3.1416 3.14159265358979 400921fb54442d18 3.14 355/113 + Opis 5 cyfr, reprezentacja sta.oprzecinkowa 15 cyfr, reprezentacja sta.oprzecinkowa 5 cyfr, reprezentacja zmiennoprzecinkowa 15 cyfr, reprezentacja zmiennoprzecinkowa 5 cyfr, reprezentacja sta.o- lub zmiennoprzecinkowa 15 cyfr, reprezentacja sta.o- lub zmiennoprzecinkowa Liczba w uk.adzie szesnastkowym 2 liczby dziesi tne, np. z.oty i grosze PrzybliHona warto B liczby w postaci u.amka Informacja o znaku liczby
Temat 13 Informacja i usuwanie zmiennych z przestrzeni roboczej funkcje who, whos, clear
>> who % informacja o dost pnych zmiennych, same nazwy >> whos % pe na informacja o dost pnych zmiennych >> clear a % usuni cie z przestrzeni roboczej zmiennej a >> clear all % usuni cie wszystkich zmiennych
Po kaHdym uruchomieniu Matlaba funkcja rand startuje od tych samych warto ci. Aby zacz+B od innej warto ci naleHy wywo.aB funkcj rand w nast puj+cy sposb:
>> rand('state',sum(100*clock)) % warto ) pocz"tkowa na podstawie wskaza, zegara
Temat 19 Kilka instrukcji w jednej linii Poszczeglne instrukcje oddzielamy przecinkiem. Przyk"ad:
>> x=2;, y=4;
Temat 20 Czyszczenie okna komend funkcja clc Temat 21 Wyprowadzanie na ekran tekstw funkcja disp
>> disp('WYNIK: '), disp(2+2) % wy wietli WYNIK: 4
Dla znaj+cych sk.adni j zyka C wygodna moHe byB w uHyciu funkcja fprintf() Temat 22 Wprowadzanie danych funkcja input Je li chcemy, aby uHytkownik wprowadzi. jak+ zmienn+ stosujemy funkcj input Przyk"ad:
>> x = input('Podaj warto ): ')
Temat 23 Zapisywanie i wczytywanie zmiennych z pliku funkcje save, load Dok.adny opis funkcji help save, help load. Wybrane polecenia:
>> save NazwaPliku x % zapisuje zmienn" x w pliku NazwaPliku.mat >> save NazwaPliku x -ascii % zapisuje zmienn" x w pliku tekstowym NazwaPliku.mat >> save NazwaPliku % zapisuje wszystkie zmienne w pliku NazwaPliku.mat >> load NazwaPliku % wczytuje wszystkie zmienne z pliku NazwaPliku.mat
Przyk"ad:
>> x=ones(3); % macierz kwadratowa 3x3 z samymi jedynkami >> y=zeros(5,2); % macierz zer o 5 wierszach i 2 kolumnach >> z=rand(1,5); % wektor liczb losowych o 5 elementach
Temat 27 Generacja wektorw, alokacja pami<ci Ze wzgl du na czas wykonywania operacji dobrze jest przed przyst+pieniem do oblicze, stworzyB odpowiednie macierze do przechowywania danych Przyk"ad:
>> x(5)=0; % wektor 5 elementowy wype niony zerami >> y(5,7)=0; % macierz 5x7 wype niona zerami, lub y=zeros(5,7);
Maj+c gotowe macierze mog je sk.adaB w macierze o wi kszej liczbie wymiarw. S.uHy do tego funkcja cat(dim,a,b,) gdzie dim okre la wzd.uH ktrego wymiaru dokonywane jest z.oHenie macierzy. Przyk"ad:
>> a=zeros(3); , b=ones(3); % dane pocz"tkowe >> x=cat(1,a,b) % macierz 2-wymiarowa a nad b, rwnowaIne [a; b] >> y=cat(2,a,b) % macierz 2-wymiarowa b za a, rwnowaIne [a b] >> z=cat(3,a,b) % macierz 3-wymiarowa o warstwach a i b
10
Uwaga: Je li x jest macierz+ powyHsze funkcje odnosz+ si do poszczeglnych kolumn macierzy x. Temat 32 Wektoryzacja Matlab optymalizowany jest do wykonywania dzia.a, na wektorach i macierzach. Je li to tylko moHliwe naleHy d+HyB do wykonywania oblicze, na wektorach lub macierzach. Przyk"ad:
% moIna tak sposb iteracyjny >> x=1:10; , y=zeros(10); >> for i=1:10, y(i)=x(i)^2;, end % lepiej jednak tak sposb macierzowy >> x=1:10; >> y=x.^2;
11
Przyk"ad:
>> [x,y]=size(a) >> m=numel(a) >> b=a(5:end) % elementy wektora od 5 do ko,ca >> b=(a>0) >> c=find(a>2)
Temat 35 Macierze rzadkie Macierz+ rzadk+ nazywamy macierz, ktrej przewaHaj+ca wi kszo B elementw rwna jest 0 a tylko nieliczne maj+ warto B znacz+ce. W takim przypadku ze wzgl dw pami ciowych wygodnie jest pami taB macierz nie jako tablic , ale poszczeglne liczby wraz z adresami. Przyk"ad:
>> a= sparse([1 2 2 4 4],[3 1 4 2 4],1:5) % tworzy macierz rzadk" o elementach: (2,1)->2, (4,2)->4, (1,3)->1, (2,4)->3, (4,4)->5
Aby przekszta.ciB macierz rzadk+ w macierz w postaci normalnej normaln+ korzystamy z funkcji full().
12
Przyk"ad:
>> plot(1:10,y) % wykre la wektor od 1 do 10 w funkcji wektora y >> plot(1:10,y, 'bx') j.w. ale dodatkowo wykre la go w kolorze niebieskim zaznaczaj"c punkty krzyIykami. >> plot(1:10,x, 'bx ', 1:10,y, 'r*') wykre la dwa wykresy na jednym
Temat 37 Wykresy dwuwymiarowe funkcji funkcja fplot fplot(F,P) funkcja wykre la funkcj F dan+ w postaci .a,cucha w przedziale P. List funkcji matematycznych predefiniowanych w MATLABie moHna uzyskaB poprzez polecenie >> help elfun (funkcje podstawowe) i >> help specfun (funkcje specjalne) Przyk"ad:
>> fplot('2*sin(x) ',[0 2*pi]) % funkcja 2*sin(x) w przedziale od 0 do 2K
13
Temat 38 Wykresy dwuwymiarowe funkcji funkcja ezplot Bardziej oglnymi funkcjami s.uH+cymi do rysowania wykresw takHe dla dwu zmiennych s+ funkcje typu ez*. Jedn+ z nich jest funkcja ezplot. ezxplot(F,P) funkcja wykre la funkcj F w przedziale P. Inne funkcje naleH+ce do kategorii ez* to: ezcontour, ezmesh, ezmeshc, ezpolar. Przyk"ad:
>> ezplot(x, 2*y, [0,2*pi]) % wykres funkcji parametrycznej typu x=x(t), y=y(2t), t [0,2K]
Uwaga: Wywo.anie n=hist(X) nie wy wietla wykresu, ale zlicza ilo B elementw wektora w 10 rwnych
przedzia.ach. Przedzia.y s+ tworzone na podstawie najmniejszej i najwi kszej warto ci wektora
Temat 41 Otwieranie wielu okien graficznych funkcje figure, close, clg, cla
>> figure % otwiera nowe okno graficzne >> figure(n) % uaktywnia okno graficzne o danym parametrze, >> close % zamyka okno aktywne lub okno z zadanym parametrem. >> cla % czy ci bierz"cy wykres >> clf % czy ci aktywne okno graficzne
Temat 42 Wykre)lanie niezale;nych wykresw w jednym oknie graficznym funkcja subplot Funkcja subplot s.uHy do podzia.u okna graficznego na mniejsze fragmenty. Podzia.u moHna dokonaB albo w uk.adzie macierzowym albo podaj+c dok.adne wymiary wykresu. Przyk"ad:
>> subplot(m,n,p) % dzieli okno graficzne na M kolumn i N wierszy (M,N<9). P oznacza numer aktualnego wykresu. MoIna teI wywo a) jako subplot(mnp) >> subplot('position',[lewy dolny szeroko ) wysoko )]) % w aktywnym oknie graficznym tworzy nowy wykres w zadanym podoknie. Lewy, dolny wsp rz dne lewego dolnego rogu podokna. Szeroko ), wysoko ) rozmiary podokna. Wszystkie rozmiary podaje si w stosunku do ca o ci okna unormowanego do 1, np.: [0.5 0.5 0.5 0.5]
14
Temat 45 Niestandardowe znaki w opisie wykresw Do wypisywania niestandardowych znakw wykorzystywana jest sk.adnia TeX.
>> text(1,1, '\alpha^{3/2}') % wypisanie w punkcie (1,1) tekstu
3/2
Informacje o poszczeglnych elementach wykresu moHna znale\B w helpie, np: help line Temat 47 Modyfikacja wykresw w oknie graficznym
15
Temat 49 Funkcja mesh Mesh(X,Y,Z) funkcja mesh rysuje siatk opisan+ przez macierze X,Y,Z. Gdzie macierze X, Y podaj+ wsp.rz dne punktw siatki a dane w macierzy Z okre laj+ warto B funkcji w punkcie (x,y). Mesh(X,Y,Z,c) c indeksy kolorw w aktualnej mapie kolorw. Przyk"ad:
>> [x,y] = meshgrid(-3:.125:3); % generacja siatki >> z = peaks(x,y); % tworzenie warto ci funkcji w punktach (x,y) >> mesh(x,y,z) % tworzy wykres 3D
16
Przyk"ad:
>> t = 0:pi/50:10*pi; >> plot3(sin(t),cos(t),t) % linia rubowa >> ezplot3('sin(t)','cos(t)','t',[0,6*pi]) % linia rubowa >> a=rand(5); generowanie danych >> bar3(a) % wykres s upkowy
Temat 52 Obiekty 3D
cylinder Elipsoid fill3 sphere Generacja walca Generacja elipsoida Generacja wielok+ta Generacja kuli
Przyk"ad:
>> sphere % wy wietla sfer >> [x,y,x]=sphere; % zwraca 3 macierze z danymi do wyrysowania kuli za pomoc" funkcji mesh lub surf
17
Temat 54 Wizualizacja 3D
camlight Light lightangle lighting material Definiuje o wietlenie we wsp.rz dnych kamery Definiuje obiekt wiec+cy Po.oHenie kamery we wsp.rz dnych sferycznych Algorytm liczenia o wietlenia: flat, gouraud, phong, none Okre la w.a ciwo ci odbiciowe materia.u: shiny, dull, metal, default
Temat 55 Wizualizacja wolumetryczna Dane trjwymiarowe moHemy przedstawiB albo przez wy wietlanie poszczeglnych przekrojw, powierzchni o sta.ej warto ci lub przep.yww.
coneplot contourslice isosurface slice streamline streamparticles streamribbon streamslice streamtube Pole wektorowe Kontury w werstwach Powierzchnia o sta.ej warto ci (izopowierzchnia) P.aszczyzna przekroju Linie przep.ywu Cz+stki wraz z liniami przep.ywu Wst gi zgodne z przep.ywem Przep.yw w warstwach lub na powierzchniach Przep.yw pokazany za pomoc+ walcy
18
Temat 58 Zmienne w skryptach Matlaba Skrypty do przechowywania zmiennych uHywaj+ przestrzeni roboczej Matlaba. Z jednej strony nie trzeba definiowaB mu zmiennych, ale istnieje niebezpiecze,stwo uHycia i zamazania zmiennych istniej+cych juH w przestrzeni roboczej. Temat 59 Wypisywanie krokw wykonywanych w skrypcie na ekran. Analogicznie do polece, wypisywanych w Oknie Polece,, polecenia wykonywane w skrypcie daj+ echo na ekranie. Aby przy pieszyB prac skryptw oraz dla zapewnienia uniwersalno ci (dobry nawyk dla programistw) naleHy wszystkie polecenia wykonywaB z opcj+ ukrywania echa (o ile celem pliku nie jest narysowanie wykresu). Do ukrywania echa stosuje si rednik na ko,cu linii polecenia patrz Temat 7.
19
Temat 60 Tworzenie funkcji Funkcja tak jak skrypt jest plikiem tekstowym zawieraj+cym zestaw funkcji i polece, Matlaba i zaczynaB si powinna od s.owa kluczowego function. Pliki funkcji maj+ rwnieH rozszerzenie .m. UWAGA: WaHne jest aby nazwa funkcji i nazwa pliku by.y takie same. Pliki funkcji moHna tworzyB w kaHdym edytorze tekstowym. Najwygodniej wykorzystaB edytor Matlaba. Podstawow+ rHnic+ miedzy funkcj+ a skryptem jest sposb przechowywania danych. Skrypt czyni to w przestrzeni roboczej, natomiast funkcja przechowuje je poza przestrzenia robocz+, co pozwala na dublowanie nazw zmiennych z przestrzeni+ robocz+. Inaczej mwi+c funkcja jest hermetyczna i pokazuje na zewn+trz tylko dane wyj ciowe, lub zmienne specjalnie udost pnione przy pomocy operatora global. Temat 61 Szkielet funkcji
function [x,y,z]=nazwa_funkcji(a,b,c,d) %% [x,y,z]=nazwa_funkcji(a,b,c,d) %% Funkcja zwraca 3 wektory x,y,z dla danych parametrw wej ciowych a,b,c,d %%Koniec nazwa_funkcji.m
Funkcja powinna posiadaB nast puj+ce elementy: nag.wek funkcji definicje parametrw funkcji - argumentw, (a, b, c, d w naszym szkielecie) oraz parametrw wyj cia - warto ci, (x, y, z w naszym szkielecie); komentarz z opisem do help-u opisuje co funkcja robi, opisuje argumenty funkcji oraz warto ci wyj ciowe; analiza liczby parametrw wej ciowych modu. funkcji analizuje liczb parametrw wej ciowych, czy jest ich wystarczaj+co duHo do wykonania funkcji i czy ewentualnie moHna przyj+B warto ci domy lne dla niepodanych parametrw (na razie si tym nie zajmujemy); analiza w.asno ci parametrw wej ciowych modu. funkcji sprawdza czy warto ci wprowadzonych argumentw umoHliwiaj+ poprawne wykonanie funkcji ( na razie si tym nie zajmujemy); implementacja algorytmu zapewnia poprawno B oblicze, numerycznych i przygotowuje warto ci wyj ciowe. Temat 62 Post<powanie przy pisaniu funkcji Najwygodniej najpierw napisaB skrypt a po przetestowaniu przerobiB go w funkcj .
20
Temat 64 Pod funkcje W jednym pliku zawieraj+cym funkcj moHna umie ciB wi cej funkcji. Przy czym tylko pierwsza funkcja jest widoczna na zewn+trz. Wszystkie pozosta.e funkcje mog+ byB wywo.ywane tylko w obr bie danego pliku.
21
INSTRUKCJE W MATLABIE
Temat 65 Instrukcja for Instrukcja for pozwala na powtarzanie wybranego fragmentu kodu okre lon+ ilo B razy. Szablon instrukcji for (uwaga na przecinek):
.... for zmienna_iterowana = macierz_warto ci , ..... Kod do wielokrotnego powtarzania .... end .....
P tle w wybranych przypadkach moHna przerywaB przy pomocy instrukcji break. Przyk"ad:
a=zeros(10,5); % alokacja pami ci for i=1:10, for j=1:5, a(i,j)=i*j; end end
Temat 66 Instrukcja while While stanowi p tle warunkow+, fragment kodu w p tli b dzie wykonywany dopki jest spe.nione wyraHenie warunkowe. Szablon instrukcji while ( uwaga na przecinek):
.... while wyra enie_warunkowe, ..... Kod do wielokrotnego powtarzania .... end .....
Przyk"ad:
licznik1=0; , licznik2=0; , suma=0; % definicja sta ych while (licznik1<10 & licznik2<10), % znak & oznacza and, opis help ops licznik1=licznik1+0.1; licznik2=licznik2+0.2; suma=licznik1+licznik2; end
22
Temat 67 Instrukcja warunkowa if Instrukcja pozwala na wykonanie jednego z kilku fragmentw kodw zawartego pomi dzy instrukcjami if, elseif, else. Wybr realizowanego kodu zaleHy od spe.nienia odpowiednich wyraHe, warunkowych, gdy Hadne z nich nie jest spe.nione jest wykonywany kod wyst puj+cy za operatorem else. Szablon instrukcji if:
If wyra enie_warunkowe_1 Kod wersja 1 elseif wyra enie_warunkowe_2 Kod wersja 2 elseif wyra enie_warunkowe_3 Kod wersja 3 ...... else Kod wersja N end
Przyk"ad:
%% y=a*x^2+b*x+c a=1; , b=2; , c=3; % definicja sta ych wyznacznik=b^2-4*a*c; % np. wyznacznik rwnania kwadratowego if wyznacznik>0 x1=(-b+sqrt(wyznacznik))/(2*a); , x2=(-b-sqrt(wyznacznik))/(2*a); elseif wyznacznik==0 x1=-b/(2*a); , x2=x1; else x1=NaN; , x2=NaN; end
Temat 68 Instrukcje break i return Obie instrukcje powoduj+ przerwania wykonywania kodu. Funkcja break powoduje wyskoczenie z najg. biej zagnieHdHonej p tli do wyHszej p tli. Funkcja return powoduje natychmiastowe opuszczenie danej funkcji lub skryptu i powrt do miejsca jej wywo.ania. Temat 69 Instrukcja switch-case W przypadku listy znanych argumentw wywo.ania wygodnie jest skorzystaB z funkcji switch-case. Szablon instrukcji switch-case:
switch p case 1 instrukcja 1 case 2 instrukcja 2 otherwise inna instrukcja end
23
Temat 71 Testowanie funkcji czas wykonywania funkcji tic i toc W przypadku testowania programw najwygodniej uHywaB funkcji tic i toc. Przyk"ad:
tic testowana_Funkcja toc >> Elapsed time is 2.188000 seconds.
Temat 72 Funkcje daty i czasu Funkcje czasu i daty znajduj+ si w grupie funkcji timefun help timefun
now date clock datenum datestr datevec calendar weekday eomday datetick Aktualna data jako liczba dni od 01.01.0 Aktualna data i godzina jako zmienna .a,cuchowa Aktualna data i godzina jako wektor data jako liczba dni od 01.01.0 data jako zmienna .a,cuchowa Transformacja sk.adnikw daty do postaci wektora Kalendarz oblicza dzie, tygodnia dla podanej daty zwraca liczb dni w miesi+cu w podanym roku i miesi+cu formatowanie daty
24
Temat 73 Funkcje w Matlabie ci-g dalszy zmienne globalne global Przypomnienie: zmienne w funkcji s+ lokalne nie widaB ich na zewn+trz. Tak samo zmienne w obszarze roboczym s+ niewidoczne dla funkcji chyba, He s+ jej parametrem wej ciowym. Nawet wtedy jednak s+ przekazywane przez warto B, takHe ich warto B modyfikowana wewn+trz funkcji wrci do warto ci pocz+tkowej po wyj ciu z funkcji. Jednak czasami takie ograniczenia nie s+ wygodne. Gdy chcemy, aby zmienne z przestrzeni roboczej by.y dost pne wewn+trz funkcji bez definiowania ich jako parametry funkcji, wtedy deklarujemy je jawnie w przestrzeni roboczej oraz w samej funkcji poprzez global. Takie dzia.anie jest jednak niebezpieczne, bo moHe doj B do konfliktu nazw pomi dzy funkcj+ i przestrzeni+ robocz+, lub niepoH+dan+ zmiana ich warto ci. Przyk"ad:
function [.....]=fun(....) %% opis funkcji global a1 a2 a3; ..... % koniec funkcji %% w przestrzeni roboczej global a1 a2 a3; a1=.... a2=..... a3=.....
Temat 74 Funkcje w Matlabie ci-g dalszy funkcja feval Cz sto istnieje potrzeba, aby dana funkcja matlabowska (plik *.m) by.a w stanie przeprowadziB obliczenia dla dowolnych funkcji matematycznych zdefiniowanych poza plikiem *.m. Wtedy stosuje si funkcj feval. Definicja funkcji feval:
>> y = feval(Nazwa_funkcji, x1 .....xn) % Nazwa_funkcji - zmienna a,cuchowa %% , x1 .....xn zadane argumenty funkcji
Przyk"ad:
y= feval(cos,[0:0.01:pi]);
25
Temat 76 Rekurencja Rekurencja jest eleganckim, ale bardzo kosztownym sposobem programowania. MoHna j+ stosowaB tam gdzie mamy do czynienia z zaleHno ciami typu f(n+1)=g(f(n)). Przyk"ad:
function s=silnia(n) %% Obliczanie silni metod" rekurencyjn" s=1; for k=2:n, s=k*silnia(k-1); % funkcja wywo uje sama siebie end
26
27
Uwaga: rwnanie x=b/A daje wynik rozwi+zania uk.adu rwna, w postaci x*A=b. Temat 80 Eliminacja Gaussa Podstawowa metod+ rozwi+zywania uk.adw liniowych jest metoda eliminacji Gaussa tzw. rozk.ad LU. Polega on na znalezieniu macierzy L i U takich, He A=L*U, gdzie U jest macierz+ trjk+tn+ grn+, a L macierz+ trjk+tn+ doln+. W Matlabie eliminacj Gausa przeprowadza funkcja lu. Przy wywo.aniu [L,U]=lu(A) U jest macierz+ trjk+tn+ grn+, ale L nie zawsze b dzie macierz+ trjk+tn+ doln+. Przy wywo.aniu [L,U, P]=lu(A) U jest macierz+ trjk+tn+ grn+, L nie zawsze b dzie macierz+ trjk+tn+ doln+, a P macierz+ permutacji (zmienia kolejno B wierszy w macierzy A). Zachodzi tu zaleHno B L*U=P*A.
28
29
Przyk"ad:
% Interpolacja funkcji sinus, na wykresie w z y zaznaczone s" punktami, dodatkowo % rysowana jest wzorcowa funkcja. >> x=0:10; y = sin(x); xi = 0:.25:10; >> yi = interp1(x, y, xi); >> plot(x, y, 'o', xi, yi, sin(xi))
Temat 85 Aproksymacja funkcja polyfit Aproksymacja oznacza przybliHanie tzn. zast powanie jednych warto ci innymi, wygodniejszymi, z jakich wzgl dw. Matlab pozwala na aproksymacj wielomianem. Przyk"ad:
p=polyfit(x,y,r); % x, y serie danych, r zadany stopie, wielomianu przybliIaj"cego
30
31