1 / 48

MATLAB Osnove

MATLAB Osnove. Šta je M ATLAB ?. programsko okruženje za računanje u tehnici u osnovi je matematički alat ima veliku primenu u primenjenim disciplinama - inženjerstvu poseduje visoke performanse u numeričkim izračunavanjima i vizuelizaciji podataka Matlab je interpreter i programski jezik

Download Presentation

MATLAB Osnove

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATLABOsnove

  2. Šta je MATLAB? • programsko okruženje za računanje u tehnici • u osnovi je matematički alat • ima veliku primenu u primenjenim disciplinama - inženjerstvu • poseduje visoke performanse u numeričkim izračunavanjima i vizuelizaciji podataka • Matlab je interpreter i programski jezik • pruža i interaktivni rad i batch-obradu • osnovni elemenat je matrica koja ne zahteva dimenzionisanje • većina problema se jednostavno rešava u odnosu na programske jezike poput Fortran-a, Pascal-a, C-a, ... • nazvan je prema matrix laboratory

  3. Osnovne osobine  • Jezik visokog nivoa za tehničko računanje • Razvojno okruženje za upravljanje programskim kodom, datotekama i podacima • Interaktivni alati za iterativno istraživanje, dizajn i rešavanje problema • Biblioteka matematičkih funkcija iz linearne algebre, statistike, Forijeove analize, fitriranja, optimizacije, numeričke integracije • 2D i 3D grafičke funkcije za prikaz podataka • Alati za kreiranje korisničkog interfejsa • Funkcije za integraciju MATLAB algoritama sa spoljašnjim aplikacijama i programskim jezicima: Fortran, C, C++, Java, COM, i Microsoft Excel

  4. Primena • na Univerzitetima je alat za obuku • u industriji se upotrebljava za istraživanje i rešavanje praktičnih inženjerskih i matematičkih problema • tipična upotreba pokriva: • Matematiku i numeriku • Razvoj algoritama • Modeliranje, simulaciju i razvoj prototipova • Analizu podataka, istraživanja i vizuelizaciju • Naučnu i inženjersku grafiku • Razvoj aplikacija, uključujući grafički korisnički interfejs • poseduje kolekcije metoda (alata, rešenja) specifičnih za određene oblasti - Toolbox-ovi

  5. MATLAB familija proizvoda http://www.mathworks.com

  6. Aerospace Toolbox Bioinformatics Toolbox Communications Toolbox Control System Toolbox Curve Fitting Toolbox Data Acquisition Toolbox Database Toolbox Datafeed Toolbox Excel Link Filter Design Toolbox Filter Design HDL Coder Financial Toolbox Financial Derivatives Toolbox Fixed-Income Toolbox Fixed-Point Toolbox Fuzzy Logic Toolbox GARCH Toolbox Genetic Algorithm and Direct Search Toolbox Image Acquisition Toolbox Image Processing Toolbox Instrument Control Toolbox Mapping Toolbox Model-Based Calibration Toolbox Model Predictive Control Toolbox Neural Network Toolbox Optimization Toolbox OPC Toolbox Partial Differential Equation (PDE) Toolbox RF Toolbox Robust Control Toolbox Signal Processing Toolbox Spline Toolbox Statistics Toolbox Symbolic Math Toolbox System Identification Toolbox Virtual Reality Toolbox Wavelet Toolbox  Toolbox-ovi • Toolbox je kolekcija (biblioteka) izabranih funkcija (M-datoteka) namenjena rešavanju problema određenje oblasti • oni proširuju mogućnosti Matlab-a • postoje toolbox-ovi za oblasti • analize signala • automatskog upravljanja • simulacije dinamičkog ponašanja sistema • identifikacije sistema • veštačkih neuronskih mreža • fuzzy sistema • optimizacije • analize robustnosti sistema • ... • postojeći toolbox-ovi se usavršavaju, a novi nastaju 

  7. Računarske platforme • Podržane su brojne računarske platforme • i operativni sistemi • kod pisan u Matlab-u je prenosiv, uključujući i aplikacije sa korisničkim interfejsom u obliku prozora Tekuća verzija MATLAB 7.3sastavni deo paketa R2006b od 1. septembra 2006

  8. Radno okruženje Matlab-a(nekad ) • Čine ga: • komandni prozor (samo je jedan) • nekoliko grafičkih prozora • korisnikov editor za pisanje M-skript datoteka • Komandni prozor • je mesto gde se daju (kucaju) naredbe interpreteru i ispisuju rezultati • sekvencijalno prihvata i izvršava naredbe • poseduje linijski editor • Grafički prozor • obično prikazuje 2D i 3D dijagrame • više dijagrama se može prikazati u različitim prozorima i/ili se jedan prozor može podeliti na nekoliko delova • automatski se pojavljuje kod izvršavanja grafičkih naredbi • sadržaj prozora se može odštampati na nekoliko načina

  9. Radno okruženje Matlab-a(i sad ) Sastoji se od većeg broja prozora: • Command Window(ranije – komandni prozor) • Command History • Launch Pad • Help Browser • Current Directory Browser • Workspace Browser • Array Editor • Editor/Debugger Ostali alati: • Unapređen uvoz i izvoz podataka • Profiler – pomaže u otkrivanju uskih grla u aplikaciji • Podrška Source Control System-ima • Notebook – pristup Matlab-u iz programa za obradu teksta (MS Word)

  10. Drugi načini povezivanja i prenosa podataka • prenos podataka preko datoteke (u binarnom ili ASCII formatu) • prenos teksta i grafike preko Windows Clipboard-a • povezivanje drugih aplikacija sa Matlab-om preko DDE (Dynamic Data Exchange)mehanizma (Tekuća verzija Matlab-a podržava COM (Component Object Model))Matlab može da radi kao: • server • klijent • Matlab poseduje biblioteku C i Fortran funkcija, C++ klasa • za rad sa Matlab-ovim datotekama podataka i za osnovne matrične operacije • mogu se upotrebiti za pisanje korisnikovih funkcija koje se pozivaju iz Matlab-ovog okruženja

  11. Matlab promenljive • naziv promenljive čine slova i brojevi (mora početi slovom)(prvih 19 (31 kod verzije ) znakova se uzima u obzir) • razlikuju se mala i velika slova (npr. a i A su dve promenljive)

  12. Matlab izraz • Oblik promenljiva = izraz • izraz čine: nazivi promenljivih, funkcije, operatori i drugi specijalni znaci. • promenljiva je matrica • ako se izostavi promenljiva sa leve strane znaka “=”, privremena promenljiva ans prima vrednost izraza • kod dugačkih izraza, kada je potrebno unos nastaviti u narednom redu, predhodni red završiti sa “...” (tri tačke) • znak “;” na kraju izraza sprečava da se ispiše vrednost promenljive

  13. Matrice u Matlab-u • osnovni tip podataka je matrica (brojeva) • skalar je matrica dimenzije 1x1slično je i sa vektorima u obliku kolone ili vrste • elemenat matrice može biti kompleksan broj • matrica se može tumačiti kao • niz koeficijenata polinoma • niz slova u string-u • bit-mapirana slika • zvučni zapis • podržan je rad sa retkim matricama • dimenzije matrice se ne unose • potreban memorijki prostor za matrice se automatski zauzima (alocira) • veličina matrice nije ograničena i može prevazići raspoloživi RAM računara (zahvaljujući postojanju Windows swap datoteke)

  14. Unos matrice • kao eksplicitna lista elemenata • kao rezultat izvršavanja ugrađene naredbe ili funkcije (Matlab-ove unutrašnje funkcije) • formiranjem u M-datoteci (Matlab-ovoj spoljašnjoj funkciji) • učitavanjem iz datoteke podataka » a = [ 1 2 3; 4 5 6 ] a = 1 2 3 4 5 6 » b = sum(a) b = 5 7 9 » save abdat a b » clear » b ??? Undefined function or variable b. » load abdat » b b = 5 7 9

  15. Brojevi • Realni 3 -99 0.0001 -9.639825 1.62e-20 -10.34e200 • opseg od 2.2251*10-308do 1.7977*10308 • Kompleksni -4+7i 8i -9j -9*j 1.23-12e-4j • imaginarna jedinica je: i ili j • funkcije • realna vrednost broja real(z) • kompleksna vrednost broja imag(z) • konjugovano kompleksna vrednost conj(z) • moduo abs(z) • argument angle(z) • matrice kompleksnih brojeva 8+i9 z imag(z) abs(z) angle(z) real(z) conj(z)

  16. Brojevi (nastavak) • Posebni brojevi • Ludolfov broj pi (3.1415...) • Imaginarna jedinica i ili j • beskonačna vrednost  Inf • neodređena vrednost (not a number) NaN • podrazumevana tačnost eps (2.2204e-016) • “privremena” promenljiva ans • konstante opsega brojeva realmin i realmax • Delenje nulom ne prekida program, već ispisuje upozorenje, a nastala vrednost je Inf • NaN je rezultat neodređenih izraza Inf/Inf ili 0/0 » 1 / 0 Warning: Divide by zero ans = Inf » x = Inf / Inf x = NaN

  17. Aritmetičke operacije • Aritmetičke operacije: • sabiranje + • oduzimanje - • množenje * • delenje (levo) / • desno delenje \ • stepenovanje ^ • redosled operacija je određen na osnovu prioriteta • upotrebom ( ) može se uticati na redosled izračunavanja » 4 \ 1 ans = 0.2500 » 4 / 1 ans = 4 » 1 + 3 * 2 ^ 4 / 6 - 9 ans = 0 » 1 + (3 * 2) ^ 4 / (6 - 9) ans = - 431

  18. Funkcije • Tip funkcije (nebitan za korisnika) • ugrađena (unutrašnja, najbrže se izvršava) • M-datoteka iz MATLAB biblioteke (spoljašnja) • funkcija korisnika (spoljašnja, M-datoteka) • Grupe funckcija: • elementarne matematičke • specijalne funkcije • elementarne matrične • specijalne matrice • za dekompoziciju i faktorizaciju matrica • za analizu podataka • za rad sa polinomima • za rešavanje diferencijalnih jednačina • za optimizaciju i rad sa nelinearnm jednačinama • za numeričku integraciju • analizu signala • pomoć o funkciji se dobija pomoću help ime_funkcije • svaki Toolbox dodaje nove funkcije

  19. Poziv funkcije • funkcija se poziva njenim imenom, tj. imenom M-datotekeclc % brisanje ekrana • ako funkcija ima parametre navode se u malim zagradama ( ) razdvojeni zarezom • ako funkcija vraća vrednosti, promenljive koje ih prihvataju se navode u uglastim zagradama [ ] razdvojene zarezom • redosled parametara je bitan • ako funkcija dozvoljava, ne moraju se navesti svi parametri u pozivui ne moraju se preuzeti sve vrednosti • ugnježdeni pozivi » atan2(-1,-1) == -pi + pi/4 ans = 1 » x=[1 3 2]; » a = max(x) a = 3 » [m,i]=max(x) m = 3 i = 2 » x = pi / 4; » log( cos( sin(x) + 1 ) - 5 ) ans = 1.6363 + 3.1416i

  20. Parsiranje imena • Redosled • da li je promenljiva? • da li je ugrađena funkcija? • da li je MEX, DLL ili M-datoteka u tekućem direktorijumu? • da li je MEX, DLL ili M-datoteka u nekom od MATLAB-ovih direktorijuma? • prijavljuje se greška. • imena MATLAB-ovih direktorijuma se dobijaju (uređuju) pomoću path funkcije • imena se mogu preklopiti » sin(1) ans = 0.8415 » sin=1 sin = 1 » sin sin = 1 » clear sin » sin(1) ans = 0.8415

  21. Matrične operacije • Osnovne operacije: • sabiranje + • oduzimanje - • množenje * • delenje (levo) / X=B/A je rešenje sistema X*A=B • desno delenje \X=A\B je rešenje sistema A*X=B • stepenovanje ^ • transponovanje ’ • Operacije nad elementima matrice: • množenje .* • delenje (levo) ./ • desno delenje .\ • stepenovanje .^ » a=[1 2; 3 4]; » a * a' ans = 5 11 11 25 » b=a .\ 3 b = 3.0000 1.5000 1.0000 0.7500 » r = A’*P + P*A - P*B*inv(R)*B’*P + Q;

  22. Matrice i funkcije • parametri i vraćene vrednosti funkcije su matrice • matematička funkcija f koja ima parametar matricu X kao rezultat vraća matricu Y=f(X) sa elementima yij = f(xij) • elementarne matrične funkcije • determinanta matrice det(x) • inverzija inv(x) • pseudo-inverzija ne kvadratne matrice pinv(x) • formiranje karakterističnog polinoma poly(x) • trag matrice trace(x) • ... (helpmatfun) • transcedentalne matrične funkcije • expm(x) • logm(x) • sqrtm(x)

  23. Operacije poređenja • operacije poređenja se primenjuju nad dve matrice jednakih dimenzija • rezultat operacije je matrica nula (“laž”) i jedinica (“istina”) • postoji šest relacionih operatora • manje < • manje ili jednako <= • veće > • veće ili jednako >= • jednako == • nejednako ~= » [ 1 2; 3 4 ] > [ 1 3; -3 5 ] ans = 0 0 1 0 » 2 + 3 ~= 5 ans = 0

  24. Logičke operacije • logičke operacije se upotrebljvaju nad matricama sa logičkim vrednostima: • “laž” - vrednost nula • “istina”- vrednost različita od nule (uobičajeno je 1) • rezulati logičkih operacija su uvek matrice sa elementima 0 i 1 • Logičke operacije su: • negacija (unarna operacija) ~ • konjukcija (binarna operacija, logičko “i”) & • disjunkcija (binarna operacija, logičko “ili”) | » a = [0 0 1 1]; b = [0 1 0 1]; » a & b ans = 0 0 0 1 » a | ~b ans = 1 0 1 1

  25. Logičke i funkcije poređenja • ove funkcije vraćaju logičku vrednost (ili više vrednosti) • funkcija any(x) vraća istinitu vrednost ako je barem jedan elemenat u x istinit (“radi po kolonama”) tipična upotreba je if any(x > 0.01) blok naredbi end • funkcija all(x) vraća istinitu vrednost ako su svi elemenati u x istiniti • funkcija find(x) vraća indekse elemenata sa “istinitom” vrednosti • provera “neregularnih vrednosti” u matrici • gde poseduje beskonačnosti isinf(x) • ... • provera tipa matrice (vraća skalar) • da li matrica postoji? exist(x) • da li je prazna? isempty(x) • da li je globalna promenljiva? isglobal(x) • ...

  26. Matematičke funkcije • primenjuju se nad matricom elemenat po elemenat • trigonometrijske: sin cos tan asin acos atan atan2 sinh cosh tanh asinh acosh atanh • neke elmentarne funkcije • apsolutna vrednost abs • kvadratni koren sqrt • signum sign • ostatak delenja rem(x,y) • exponencijalna exp • prirodni logaritam log • logaritam osnove 10 log10 • zaokruživanje vrednosti na celobrojnu • ka najbližem celom broju round • ka nuli fix • ka - floor • ka + ceil • specijalne funkcije: bessel, beta, gamma, ... » x=pi*[1/3 1/6]; » y=sin(x) y = 0.8660 0.5000 » sqrt(1-y.^2) ans = 0.5000 0.8660 » 2*y ans = 1.7321 1.0000 » floor(2*y-1) ans = 0 -1

  27. Generisanje vektora • Vektor sukcesivnih celobrojnih vrednosti iz itervala [a,b]x = a : b % “operator” “:” • Vektor vrednosti iz itervala [a,b] sa rastojanjem (korakom) c x = a : c : b » x = 1 : 6 x = 1 2 3 4 5 6 » x = 2 : 3 : 13 x = 2 5 8 11 » x = 2 : 0.2 : 3 x = 2.0000 2.2000 2.4000 2.6000 2.8000 3.0000 » x = 2 : -1 : -2 x = 2 1 0 -1 -2

  28. Selekcija elemenata matrice i vektora • indeksi elemenata su pozitivni, celi brojevi: 1, 2, 3, ... • dimenzije • matrice [vrsta,kolona] = size(x) • vektora n = length(x) • selektovanje jednog elementa • matrice x(vrsta,kolona) • vektora x(n) • selektovanje submatrice (subvektora) • izdvajaju se elementi na preseku vrsta i kolona • vrste i kolone su određene • pomoću indeks vektora • pomoću vektora logičkih vrednosti(za svaku npr. kolonu je zadata logička vrednost i ako je ta vrednost “istina” kolona je selektovana) a = 1 2 3 4 5 6 » n = size(a) n = 2 3 » [n,m] = size(a) n = 2 m = 3

  29. Primeri selekcija elemenata » a = [1 2 3; 4 5 6] a = 1 2 3 4 5 6 » a(1,3) ans = 3 » a( : , [1 3] ) ans = 1 3 4 6 » a( : , : ) a = 1 2 3 4 5 6 » a( [0 1], 2:3 ) ans = 5 6 » a( : , 3:-1:1 ) ans = 3 2 1 6 5 4 » v = 3:-1:1 v = 3 2 1 » a( : , v ) ans = 3 2 1 6 5 4 » a( [2 1] , v ) ans = 6 5 4 3 2 1 » x = -pi : 0.01 : pi; » y = sin(x); » y(y > 0.9999)' ans = 0.9999 1.0000 1.0000 » x(y > 0.9999)' ans = 1.5584 1.5684 1.5784 » find(y > 0.9999) ans = 471 472 473

  30. Brisanje i spajanje • Brisanje promenljivih i elemenata matrice • uklanjanje promenljivih iz radne memorije clear x y z • matrica može biti prazna x = [ ] (i tada postoji kao promenljiva) • brisanje celih kolona ili vrsta se vrši dodeljivanjem prazne matrice • Spajanje submatrica • spajanje po kolonama (matrice moraju imati jednak broj vrsta) • spajanje po vrstama (matrice moraju imati jednak broj kolona) » a = [ ] a = [ ] » b = [ 1 2 3 4 5 ] b = 1 2 3 4 5 » b(2:4) = [ ] b = 1 5 » b(4) = -1 b = 1 5 0 -1 » b = [ 1 5 ]; » b = [ b; 1+b ] b = 1 5 2 6 » a = [ b b’ ] a = 1 5 1 2 2 6 5 6 » a = [ b, b’ ];

  31. Matrice “poznatih” vrednosti • matrica nula zeros(n,m) • matrica jedinica ones(n,m) • jedinična matrica eye(n,m) • matrica elemenata po uniformnoj raspodeli rand(n,m) • matrica elemenata po normanoj raspodeli randn(n,m) • vektor ekvidistantnig vrednosti linspace(n,m,N) • vektor logaritamske baze logspace(n,m,N) • matrica za bazu 3D crtanja meshgrid(v1,v2) » a = zeros(2,3) a = 0 0 0 0 0 0 » a( [1 2], [1 2] ) = 0 ??? greška » a( [2 3], [1 2] ) = ones(2,2) a = 0 0 0 1 1 0 1 1 0 » a = [ 1 2; 3 5 ] a = 1 2 3 5 » inv(a) * a - eye(2) > eps ans = 0 0 0 0

  32. Blok naredbi • blok naredbi sačinjava nekoliko MATLAB iskaza (komandi) razdvojenih separatorom “;” ili “,” • separator “;” sprečava ispis vrednosti dodeljenih promenljivima iz naredbe • naredbe se mogu navoditi u jednoj liniji ili u nekoliko linija • kada je potrebno jednu naredbu nastaviti u narednoj liniji, predhodna linija se završava “...” » a = [ 1 2 3 4 5 6 ] a = 1 2 3 4 5 6 » b = [ 1 2 3 ... 4 5 6 ] b = 1 2 3 4 5 6

  33. Kontrola toka programa • uslovni skok if-else • programske petlje • prebrojiva petlja for • neprebrojiva petlja sa ispitivanjem uslova na početku while • nasilni izlazak iz petlje break • nasilni povratak iz funkcije return • nasilni povratak iz funkcije po otkrivanju greške i njen ispis error • ne postoji bezuslovni skok

  34. FOR petlja • FOR je prebrojiva petlja, tj. unapred se zna broj prolaza kroz blok naredbi • oblik: for promenljiva = izrazblok naredbi end • rezultat izračunavanja izraz-a je matrica, a promenljiva prima vrednosti od prve do poslednje kolone rezultata • uobičajeno upotreba je npr. for i=1:n, ... • petlja se nasilno napušta sa break • mogu se upotrebljavati ugnježdene petlje » for i = 1:5 for j = 1:4 a(i,j) = 1 / (i+j-1); end end

  35. WHILE petlja • petlja se izvršava sve dok je neki uslov ispunjen i u principu se ne zna broj prolazaka kroz petlju do prestanka važenja uslova • uslov se proverava na početku petlje • oblik:whileuslovblok naredbiend • uslov je skalar sa logičkom vrednosti • petlja se nasilno napušta sa break • mogu se upotrebljavati ugnježdene petlje » s = 0; n = 1; » while 1 / n^2 > 1e-4 s = s + (-1)^n / n^2; n = n+1; end » s s = -0.8225 » f = [1 1]; i = 1; % Fibonacci-jevi brojevi » while f(i) + f(i+1) < 1000 f(i+2) = f(i) + f(i+1); i = i + 1; end » f f = 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

  36. Uslovno grananje programa • opšti oblik:if uslov 1 blok naredbi 1elseif uslov 2 blok naredbi 2elseif uslov 3 ...else blok naredbi nend • uslov je skalar sa logičkom vrednosti • tipične upotrebe:if uslov blok naredbi endili if uslov blok naredbi 1else blok naredbi 2end “3n+1” problem iz teorije brojeva. Da li postoji prirodan broj za koji se unutrašnja petlja ne završava? » while 1 n = input('Unesi n:'); if n <= 0, break, end while n > 1 if rem(n,2) == 0 n = n / 2 else n = 3*n+1 end end end

  37. M - skript-datoteke i funkcije • omogućavaju izvršavanje ranije pisanog koda; olakšavaju ispravljanje grešaka i dorade, a time olakšavaju programiranje • M - skript-datoteke su ASCII datoteke sa blokom naredbi • ime datoteke se završava sa “.m” • pozivaju se imenom datoteke (bez “.m”) • nemaju parametre • vrednosti promenljivih preuzimaju i ostavljaju u radnom okruženju • M - funkcije su skript-datoteke određenog formata zaglavlja:function [ ip1, ip2, ... ipn ] = ime ( up1, up2, ... upm )blok naredbi (negde u bloku izlazni parametri primaju vrednosti) • imaju ulazne: up1,up2,...upm i izlazne parametre: ip1,ip2,...ipn • kod poziva funkcije se ne moraju navoditi svi parametri; broj upotrebljenih ulaznih parametara je nargin, a izlaznih nargout • sve promenljive koje definišu su lokalne • uobičajeno je da ime funkcije bude jednako imenu datoteke “.m” jedna datoteka ime.m

  38. Primer M-funkcije function [ status, sv ] = stabilan( X, stepen ) % STABILAN - ispituje stabilnost sistema na osnovu imenioca funkcije % prenosa ili na osnovu matrice sistema u prostoru stanja % Ulaz: % X - polinom ili matrica sistema % stepen - je zadati stepen stabilnosti % Izlaz: % status - =1 ako je sistem stabilan, inace =0 % sv - sopstvene vrednosti ili koreni karakteristicne jednacine % A. Erdeljan, 14.4.98 if nargin == 1, stepen = 0; end % podrazumevana vrednost if min(size(X)) == 1 % karak. polinom sv = roots(X); else % matrica sistema sv = eig(X); end status = all(sv < stepen);

  39. Pimer (nastavak)... • komentar iza zaglavlja funkcije se ispisuje naredbom help stabilan • Primeri upotrebe: » [s,v] = stabilan(Q,-1) s = 0 v = -2 -1 » [s,v] = stabilan( [0 1; 0 -3], eps ) s = 1 v = 0 -3 » Q = [1 3 2]; » stabilan(Q) ans = 1 » [s,v] = stabilan(Q) s = 1 v = -2 -1

  40. Polinomi • polinomi se predstavljaju vektor vrstom čiji su elementi koeficijenti polinoma po opadajućem stepenu npr., polinomu Q(s) = 2s3 + 4.1s2 - 12 odgovara vektor Q = [ 2 4.1 0 -12 ] • funkcije za rad sa polinomima: • conv množenje polinoma • deconv delenje polinoma • poly karakteristični polinom • polyder diferenciranje polinoma • polyfit daje polinom koji aproksimira zadate podatke • polyval izračunavanje vrednosti polinoma • polyvalm zračunavanje vrednosti matričnog polinoma • residue razvoj na parcijalne sabirke (reziduale) • roots daje nule polinoma

  41. Primer upotrebe polinoma » P = [2 1.1]; Q1 = [1 3 2]; Q2 = [1 2 3]; » Q = conv( Q1, Q2 ) Q = 1 5 11 13 6 » [r,p,k] = residue( P, Q ) r = 0.9667 -0.2583 - 0.3418i -0.2583 + 0.3418i -0.4500 p = -2.0000 -1.0000 + 1.4142i -1.0000 - 1.4142i -1.0000 k = [ ] » [pp,qq] = residue( r(2:3), p(2:3), k ) pp = -0.5167 0.4500 qq = 1.0000 2.0000 3.0000

  42. Funkcije funkcija • imaju M-funkciju kao argument • su nelinearne numeričke metode za: • analizu i crtanje funkcija • fmin - traženje minimuma f-je jedne promenljive • fmins - traženje minimuma f-je više promenljivih • fplot - crtanje funkcije • fzero - nule funkcije jedne promenljive • rešavanje sistema diferencijalnih jednačina • ode23 - Runge-Kutta matod 2-3 reda • ode45 -Runge-Kutta-Fehlberg matod 4-5 reda • numeričko rešavanje integrala (quadrature) • quad - Simson-ovo pravilo • quad8 - Newton Cotes pravilo

  43. Rešavanje diferencijalnih jednačina pomoću ode23 ili ode45 • može se rešiti obična diferencijalna jednačina višeg reda • treba napraviti sistem diferencijalnih jednačina 1. reda i zapisati ga u zasebnu M-funkciju (sistem jednačina može biti nelinearan)zaglavlje funkcije mora biti oblika: function xprim = ime( t, x )gde je tvreme, a x vektor promenljivih stanjapostoji problem sa prenošenjem parametara u ovakvu M-funkciju • poziv metode: [ t, x ] = ode23( ’ime’, tp, tk, x0 )ili[ t, x ] = ode45( ’ime’, tp, tk, x0 )Ulazni parametri: ime - ime M-funkcije koja opisuje sistem jednačina,tp - početni trenutak integracije, tk - krajnji trenutak, x0 - vektor početnih vrednosti promenljivih stanja.Izlazni parametri: t - vektor vremenskih trenutaka u kojima su izračunata rešenja, a x - matrica kretanja promenljivih stanja poređanih po kolonama. Prva vrsta odgovara x0 i početnom trenutku tp, dok je u poslednjoj vrsti krajnja vrednost prom. stanja (u tk). • ode metode imaju promenljivi (adaptivni) korak integracije, tako da dobijena rešenja nisu ekvidistantna

  44. Primer upotrebe ode23 Van der Pol - ova jednačina: Napomena: Brojevi “23”, odnosno “45” u imenu funkcija ode23 i ode45 se odnose na stepene Taylor-ovih redova upotrebljanih u odgovarajućim algoritmima, a ne odnose se na red diferencijalne jednačine koja se rešava. U principu, metod ode45 je namenjen rešavanju diferencijalnih jednačina visokog reda. function xprim = vdpol( t, x ) % Opis Van der Pol-ove dif. jednacine xprim = [ x(1) * (1-x(2)^2) - x(2) x(1) ]; » tp = 0; tk = 20; x0 = [ 0 0.25 ]; » [ t, x ] = ode23( 'vdpol', tp, tk, x0 ); » plot( t, x )

  45. Primer funkcije: Metoda Runge-Kutta 4. reda function [t,x]=rkutta4(F,tp,tf,x0,T) % Metod integracije RUNGE-KUTTA 4. reda % parametri su isti kao kod ode23, % sem T koje predstavlja korak integracije if nargin < 5, T = 0.1; end t = tp : T : tf; n = length(t); x = zeros( n, length(x0) ); x(1,:) = x0(:)'; tl = tp; for i = 1 : n-1 tl = tl + T; xp = x(i,:)'; k1 = T * feval( F, tl, xp ); k2 = T * feval( F, tl+0.5*T, xp+0.5*k1 ); k3 = T * feval( F, tl+0.5*T ,xp+0.5*k2 ); k4 = T * feval( F, tl+T, xp+k3 ); x(i+1,:) = x(i,:) + (k1/6 + k2/3 + k3/3 + k4/6)'; end

  46. Globalne promenljive • uvedene su da bi im se pristupalo iz M-funkcija • rešavaju problem parametrizovanja sistema dif. jednačina koje se rešavaju pomoću ode metoda function xp = lotka( t, x ) % Lotka-Volterra model global ALPHA BETA xp = [ x(1) - ALPHA*x(1)*x(2) -x(2) + BETA*x(1)*x(2) ]; » global ALPHA BETA » ALPHA = 0.01; » BETA = 0.02; » [ t, x ] = ode23( 'lotka', 0, 10, [1 1] );

  47. Tekstualna promenljiva - string • predstavljena je vektorom vrstom od slova (ASCII znakova) • omogućava • formatizovanje ispisa i učitavanja vrednosti • prenošenje (i uređivanje) naredbi • postoji nekoliko grupa funkcija • spajanje stringova je kao spajanje vektora vrsta » a1 = 2; a2 = 3; » i = 1; » s = [ '5 * a' int2str(i) '^2’ ] s = 5 * a1^2 » eval(s) ans = 20

  48. Šta ovde nedostaje? • opis funkcija za faktorisanje i dekompoziciju matrica; računanje ranga, kondicionog broja, norme matrice • analza signala i filtriranje; FFT algoritam • rad sa grafikom • opis korisnih naredbi: echo, input, keyboard, pause, menu, feval, disp, ... • rad sa datotekama • rad sa Debugger-om • rad sa retkim matricama • detaljan opis funkcija  • i još štošta ... Kraj

More Related