MATLAB for Windows PODGORICA, DECEMBAR 1996.

Size: px
Start display at page:

Download "MATLAB for Windows PODGORICA, DECEMBAR 1996."

Transcription

1 Igor Đurović Zdravko Uskoković Ljubiša Stanković MATLAB for Windows PODGORICA, DECEMBAR 1996.

2 PREDGOVOR Ova knjiga je nastala kao rezultat iskustva autora u pedagoškom i istraživačkom radu sa programskim paketom MATLAB. Namijenjena je širokom krugu čitalaca, a posebno studentima, inženjerima, profesorima i naučnim radnicima prirodnih, matematičkih i tehničkih nauka. Knjiga je dopuna knjige PC-MATLAB sa elementima MS DOSa koja je napisana Naime u me uvremenu značajnu prednost nad MS DOS okruženjem uzela su grafička okruženja posebno Windows. Tako se danas intenzivno koriste verzije MATLAB za Windows. Koncepcija knjige u suštini ostala je ista. Dopune se prije svega odnose na grafičko okruženje, brojne nove funkcije i mogućnosti grafičkog prikaza, kao i složene mogućnosti upravljanja graficima i grafičkim okruženjem. Posebne napomene se odnose na promjene u semanatici samog MATLAB-a koje nijesu znatne. Knjiga je zamišljena kao udžbenik i kompletan priručnik za upoznavanje i rad sa MATLAB for Windows. Zbog toga su dati prilozi sa osnovnim elementima Windowsa i Notepada. Autori se unaprijed izvinjavaju za eventualne propuste i biće zahvalni na primjedbama i sugestijama koje bi doprinijele poboljšanju knjige. Podgorica, april Autori i

3 PREDGOVOR...i iii UVOD...xi KAKO PO^ETI RAD U MATLAB-u... 1 GLAVA PRVA OSNOVNE FUNKCIJE UNO[ENJE PODATAKA FORMATIRANJE MATRICE SPECIJALNE STRUKTURE FUNKCIJE OP[TE NAMJENE Operatori za pomo} pri radu Informacije o varijablama i fajlovima Brisanje i ~uvanje podataka Informacije o sistemu ISKAZI I VARIJABLE BROJEVI I ARITMETI^KI IZRAZI KOMPLEKSNI BROJEVI I MATRICE IZLAZNI FORMAT GENERISANJE VEKTORA POMO]U KARAKTERA : (DVIJE TA^KE) INDEKSI I MANIPULACIJA VRSTAMA I KOLONAMA GLAVA DRUGA ELEMENTARNE OPERACIJE TRANSPONOVANJE SABIRANJE I ODUZIMANJE MNO@ENJE MATRICA MNO@ENJE POLJA BROJEVA DETERMINANTA I INVERZNA MATRICA "DIJELJENJE" MATRICA DIJELJENJE POLJA BROJEVA STEPENOVANJE MATRICA STEPENOVANJE POLJA BROJEVA ELEMENTARNE MATRI^NE FUNKCIJE Funkcija abs, angle, real, imag i conj iii

4 Funkcije za zaokru`ivanje Eksponencijalna, logaritamska, stepena i funkcija kvadratnog korjena Trigonometrijske, hiperbolne i njima inverzne funkcije Besselove, beta, gama i funkcije gre{ke Specifi~ne numeri~ke funkcije FUNKCIJE ZA MANIPULACIJU MATRICAMA GLAVA TRE]A GRAFIKA GRAFI^KO PREDSTAVLJANJE MATRICA, VEKTORA I FUNKCIJA JEDNE PROMJENLJIVE Osnovni oblik Vi{e funkcija na istom crte`u Vrste linija i oznaka Ozna~avanje osa i grafika Grafici kompleksnih funkcija Skaliranje osa Grafici polarnih funkcija Grafici sa logaritamskom podjelom Stepenasti (bar) grafici Prikaz diskretnih veli~ina Popunjeni crte`i Grafici kompleksnih veli~ina Grafici sa pokretnim krajem GRAFI^KOPREDSTAVLJENJE FUNKCIJA DVIJE PROMJENLJIVE I MATRICA Trodimenzionalni linijski crte` "Trodimenzionalni" grafici mre`astih povr{ina Grafici obojenih povr{ina Konturni grafici Prikazivanje funkcija pomo}u kolornih mapa Prikazivanje cilindara i sfera GRAFI^KI PRIKAZ FUNKCIJA TRI PROMJENLJIVE PROMJENA DIMENZIJA GRAFIKA (VI[E GRAFIKA U GRAFI^KOM PROZORU) RAD SA VI[E OTVORENIH GRAFI^KIH PROZORA NAREDBE ZA ELEMEMNTARNU KONTROLU BOJA GRAFI^KE KOMANDE [tampanje i memorisanje grafika POKRETNE SLIKE - FILMOVI iv

5 GLAVA ^ETVRTA ANALIZA PODATAKA MAKSIMALNA I MINIMALNA VRIJEDNOST URE\IVANJE PODATAKA, SREDNJA VRIJEDNOST I MEDIJANA STANDARDNO ODSTUPANJE, KOVARIJANSA I KORELACIJA SUMA I PROIZVOD ELEMENATA PRIMJENA SUM I CUMSUM ZA RA^UNANJE INTEGRALA RAZLIKA ELEMENATA I PRIBLI@NO DIFERENCIRANJE FUNKCIJA GLAVA PETA PROGRAMIRANJE I M-FAJLOVI PISANJE M-FAJLOVA U NOTEPADU UPRAVLJANJE TOKOM PROGRAMA Interakcija sa korisnikom For petlja While petlja If naredba Grafi~ki meni Break naredba Error naredba Naredbe vezane za logi~ke operacije FUNKCIJSKI FAJLOVI TEKSTUALNE PROMJENLJIVE (STRINGOVI) FUNKCIJE ^IJI SU ARGUMENTI DRUGE FUNKCIJE GLAVA [ESTA GRAFI^KI OBJEKTI OSNOVNI EKRAN (ROOT) GRAFI^KI PROZOR (FIGURE) KONTROLA OSA GRAFI^KI OBJEKTI OD KOJIH SE SASTOJI GRAFIK Linija - line Popunjeni poligon - patch Povr{ina - surface Kolorna slika matrice - image

6 6.4.5 Tekstualni objekat - text GRAFI^KE KONTROLE Frame kontrola Text kontrola Edit kontrola Popupmenu kontrola Radio kontrola Check kontrola Slider kontrola Pushbutton kontrola UIMENU INTERAKTIVNI PROGRAM ZA CRTANJE 2-D CRTE@A Program d2crtez.m Program za prora~un i crtanje - crtanje.m Pomo}ni prozor - pomocni.m Potprogram - funk.m GLAVA SEDMA POLINOMI I OBRADA SIGNALA POLINOMI Definicija polinoma Karakteristi~ni polinomi i sopstvene vrijednosti matrice Mno`enje polinoma Izra~unavanje polinoma Dijeljenje polinoma Razvoj u racionalne razlomke Interpolacija polinomom OBRADA SIGNALA Fourierova analiza Teorijski pregled Ra~unanje Preure ivanje rezultata Inverzna transformacija Dvodimenziona transformacija Ra~unanje i crtanje frekventnog odziva Analogni domen Diskretni domen Ra~unanje signala na izlazu iz diskretnog sistema Kroskorelaciona funkcija i spektralna gustina snage slu~ajnog signala Dvodimenzionalni signali vi

7 GLAVA OSMA LINEARNA ALGEBRA I MATRI^NE FUNKCIJE SOPSTVENE VRIJEDNOSTI I SOPSTVENI VEKTORI Q-Z DEKOMPOZICIJA SINGULARNE VRIJEDNOSTI I PRIDRU@ENA KOMPOZICIJA MATRICA NORME VEKTORA I MATRICA KONDICIONI BROJ MATRICE TROUGAONA (L-U) DEKOMPOZICIJA HESSENBERGOVA NORMA I SCHUROVA KOMPOZICIJA CHOLESKY-JEVA FAKTORIZACIJA ORTOGONALNA (Q-R) DEKOMPOZICIJA RANG, BAZIS ZA SLIKU I KERNEL LINEARNOG OPERATORA MOORE-PENROSE PSEUDOINVERZIJA MATRICE RJE[AVANJE SISTEMA LINEARNIH JEDNA^INA Homogeni sistem jedna~ina Sistem sa ve}im brojem nepoznatih od broja jedna~ina Sistem sa ve}im brojem jedna~ina od broja nepoznatih MATRI^NE FUNKCIJE GLAVA DEVETA RIJETKE MATRICE KREIRANJE RIJETKE MATRICE RIJETKE MATRICE I FUNKCIJE KONVERZIJA RIJETKE MATRICE U PUNU I OBRNUTO GRAFI^KI PRIKAZ RIJETKE MATRICE I DRVETA GLAVA DESETA ULAZNO IZLAZNE NAREDBE PREGLED JEDNOSTAVNIH U/I NAREDBI ULAZNO/IZLAZNE NAREDBE NISKOG NIVOA Otvaranje i zatvaranje fajla Neformatizovani ulaz/izlaz Faktorizovani ulaz/izlaz Pozicioniranje u fajlu ZAPISIVANJE FAJLOVA U LOTUS FORMATU SNIMANJE I U^ITAVANJE ZVU^NIH PODATAKA

8 GLAVA JEDANAESTA MATLAB OSNOVNI MATLAB I DODATNI MODULI STRUKTURA MATLABA MENI KOMANDNOG PROZORA MATLABA File meni Edit meni Options meni Windows meni Help meni OPCIJE MENIJA GRAFI^KOG PROZORA File meni Edit meni GLAVA DVANAESTA SISTEMSKI ZAHTJEVI I INSTALACIJA MATLABA SISTEMSKI ZAHTJEVI INSTALACIJA MATLABA PRILOG PRVI LISTA FUNKCIJA MATLABA SPISAK OBLASTI KOJE OBUHVATA HELP COLOR DATAFUN DDE DEMOS ELFUN ELMAT FUNFUN GENERAL GRAPHICS IOFUN LANG LOCAL MATFUN OPS PLOTXY PLOTXYZ POLYFUN

9 SOUNDS SPARFUN SPECMAT STRFUN PRILOG DRUGI WINDOWS P2.1 STARTOVANJE WINDOWSA 3.1X I IZGLED OSNOVNOG EKRANA P2.2 PROGRAM MANAGER P2.2.1 Opcije menija Program Managera P2.3 ISTOVREMENI RAD VI[E PROGRAMA - MULTYTASKING P2.4 NAJVA@NIJI WINDOWS PROGRAMI P2.5 OSNOVNO O WINDOWSU P2.5.1 Izgled radne povr{ine Windowsa PRILOG TRE]I NOTEPAD PRILOG ^ETVRTI NEKE MOGU]NOSTI VERZIJE MATLAB LITERATURA INDEKS ix

10 UVOD MATLAB je viši programski jezik razvijen sredinom 80-tih. Prva verzija pisana je u Fortranu, a kao osnova su uzeti paketi LINPACK i EISPACK. Nove verzije MATLAB-a (1987 i 1989) napisane su u jeziku C, a distribuira ga softverska kompanija The Math Works Inc. MATLAB je, za relativno kratko vrijeme, postao standardni programski paket na vodećim univerzitetima i istraživačkim institutima. Koristi se u uvodnim kursevima linearne algebre i numeričke analize kao i u kursevima ostalih matematičkih i tehničkih disciplina. U industriji se koristi za izračunavanja pri rješavanju praktičnih i istraživačkih problema. Problemi i rješenja se izražavaju na sličan način kao i u standardnim matematičkim formulacijama i to bez potrebe za tradicionalnim programiranjem. Na taj način se numerički problemi rješavaju za samo djelić vremena koje bi bilo potrebno za pisanje programa u nekom od nižih jezika (Fortran, Basic, C). Zbog velike popularnosti, razvijene su različite verzije MATLAB-a prilago ene pojedinim računarskim sistemima. Ovdje predstavljamo verziju MATLAB for Windows (grupa verzija 4) koja se koristi u Windows operativnim sistemima, kako onim pod MS DOS-om (Windows 3.1x), tako i modernijim (NT i 95). Osnovni elementi svih prethodnih verzija MATLAB-a su identični, a me usobno se razlikuju po broju raspoloživih funkcija i po sistemskim ograničenjima. U ovoj knjizi je prezentiran MATLAB for Windows, čije poznavanje omogućava direktno korišćenje i svih ostalih implementacija MATLAB-a jer se njihove dodatne mogućnosti i ograničenja jednostavno otkrivaju. MATLAB pruža izvanredne mogućnosti kreiranja novih funkcija za specijalizovane oblasti primjene. Takve funkcije se obično grupišu u posebne pakete, takozvane Toolbox-ove. Neke od njih nudi i sam proizvo ač MATLAB-a: SIGNAL PROCESSING, CONTROL, OPTIMIZATION, IDENTIFICATION, SYMBOLIC MATH i sl. ^itaocima preporučujemo da kreiraju sopstvene Toolboxove. Sastavni dio MATLAB-a kao posebni modul je i SIMULINK koji služi za simulaciju dinamike sistema. Napomenimo da postoje verzije MATLAB-a prilagodjene širokom opsegu kompjuterskih sistema: Apple Macintosh, Sun, Apollo, HP, DECstations i DEC VAX, Stardent Titan, Convex, kao i za Alliant i Cray superkompjutere. xi

11 MATLAB for Windows Kako početi rad u MATLAB-u U ovom kratkom uvodu predpostavljamo da je MATLAB for Windows već instalisan i da postoji na računaru. MATLAB for Windows postoji za sve značajnije operativne sisteme, a ovdje se pretpostavlja da se radi na PC-iju pod operativnim sistemima DOS/Windows 3.1x ili Windows 95. Opi{imo prvo način startovanja MATLAB-a pod Windowsom 3.1x. Korisnicima ove platforme, po uključivanju računara, na ekranu se obično pojavi sljedeći znak: C:\> koji nazivamo PROMPT, i koji predstavlja znak spremnosti računara da primi naredbu. Windows 3.1x startujemo sa: C:\>win uz pritisak na taster Enter. Prilikom uključivanja Windows-a startuje se osnovna aplikacija a to je najče{će Program Manager (Slika 1). Uočava se da je ova aplikacija podijeljena u programske grupe unutar kojih se nalaze ikone. Uočimo da prozor pored ovih svojih elemenata posjeduje i liniju menija. Ako je MATLAB pravilno instalisan postoji grupa MATLAB, unutar koje se nalazi ikona MATLAB. Windows karakteri{e upotreba mi{a. MATLAB se može startovati dvostrukim klikom mi{a (brzim dvostrukim pritiskom na lijevi taster). Alternativno, kada je označena ikona MATLAB dovoljno je pritisnuti taster Enter. Windows 95 je operativni sistem koji se uobičajeno startuje uključivanjem računara. Na radnoj povr{ini Windows-a 95 vidimo raspore ene ikone. Pod pretpostavkom da je kreirana prečica za MATLAB (Shortcut MATLAB) postupak startovanja MATLAB-a je isti kao u Windows-u 3.1x. (Slika 2). Kada se startuje MATLAB, poslije pozdravnog ekrana, pojavljuje se Matlabov komandni prozor, koji je dat na slici 3. Dakle i ovaj prozor ima svoj naziv (MATLAB Command Window), liniju menija i radni prostor. Komandni prompt MATLAB-a je znak >> pored kojeg se nalazi kursor, horizontalna trepćuća linija. 1

12 Kako početi Slika 1: Program Manager Windowsa 3.1x 2

13 MATLAB for Windows Slika 2: Windows 95 radna povr{ina Slika 3: Komandni MATLAB-ov prozor Pored ovih pojmova uvedimo jo{ jedan neophodan pojam. To je grafički prozor. Kada se crta neki grafik, otvara se grafički prozor, na primjer kao na slici 4. 3

14 Kako početi Slika 4: Jedan mogući izgled grafičkog prozora 4

15 MATLAB for Windows glava prva OSNOVNE FUNKCIJE Osnovni objekat nad kojim se vrše razne operacije u MATLAB-u čini niz brojeva (array of numbers) pore an u m vrsta i n kolona, koji ćemo uslovno zvati pravougaona (m x n) matrica. Naime, ovako ure eni brojevi mogu predstavljati neki linearni operator, dakle matricu u uobičajenom smislu, ali ih MATLAB može interpretirati i kao tabelarni prikaz nekih podataka koje treba obraditi na odre eni način. Fleksibilnosti MATLAB-a znatno doprinose i sljedeće osobine: (1) Ne sadrži iskaze za odre ivanje dimenzije ili tipa matrice, već se odre eni prostor pridružuje automatski, sve do iznosa ograničenog svakim pojedinačnim računarom. (2) Svi specijalni slučajevi pravougaone matrice (m=n>1-kvadratna matrica, m=1-vektor vrsta, n=1-vektor kolona, m=n=1-skalar) prirodno slijede pravila za opšti slučaj, osim u nekim operacijama kada je za vektore i skalare odre eno specijalno značenje. Zato ćemo, ukoliko nije posebno naglašeno, pod pojmom "matrica" podrazumijevati bilo koji od navedenih slučajeva. (3) Elementi matrice mogu biti realni ili kompleksni. Operacije i iskazi u MATLAB-u pišu se, kadgod je to moguće, na prirodan način kao što bi ih pisali na papiru. 1.1 UNO[ENJE PODATAKA U MATLAB-u postoji više načina za unošenje matrica. Matrice malih dimenzija najlakše se unose direktnim definisanjem liste elemenata. Najprirodnije ih je unijeti po vrstama, pri čemu se uglaste zagrade [ i ] koriste da ograniče listu elemenata. Elementi su razdvojeni blenkom ili zarezom dok se znak ; ili tipka <Enter> koristi za odvajanje vrsta matrice. Primjer Unošenje izraza»a=[1-2 4;5-6 8;7-4 2] rezultira u 5

16 A = Osnovne funkcije Matrica A smještena je u radnu memoriju za kasniju upotrebu. Isti rezultat imaćemo i unošenjem»a=[1,-2,4;5,-6,8;7,-4,2] ili»a=[ ] Ovaj zadnji način unošenja je pogodan jer imitira pisanje matrice na papiru, a koristan je i kada imamo posla sa velikim matricama koje možemo razvući na više ulaznih linija. Primjer Unošenje»C=[ ] rezultira u C = Ukoliko elemente jedne vrste nije moguće smjestiti u jednoj ulaznoj liniji, unošenje možemo nastaviti u narednoj, pri čemu sa... naznačimo prenošenje na sljedeću liniju. Primjer Unošenje»B=[ ] rezultira u B = Columns 1 through Columns 8 through

17 MATLAB for Windows Ukoliko unosimo "rijetke" (sparse) matrice, tj. one kod kojih je relativno velik broj elemenata jednak nuli, pogodno je definisati nenulte elemente pojedinačno, sa indeksima unutar malih zagrada ( ). Primjer Unošenje»D(1,1)=2;D(1,4)=-3;D(3,5)=7 rezultira u D = Gornji primjer ilustruje pomenutu osobinu MATLAB-a da se dimenzije matrice automatski prilago avaju. Pored toga, vidimo da se više iskaza može napisati u jednoj liniji. Ukoliko su iskazi razdvojeni zarezima, rezultati će biti prikazani na ekranu, dok znak ; poslije iskaza služi za suspendovanje prikazivanja rezultata. Napomenimo da MATLAB raspolaže sa skupom funkcija za rad sa rijetkim matricama sa kojima ćemo se sresti u narednim poglavljima. 1.2 FORMIRANJE MATRICA SPECIJALNE STRUKTURE U MATLAB-u je razvijen odre eni broj matrica specijalne strukture. Komande eye(n) i eye(m,n) daju jedinične matrice dimenzije (n x n) i (m x n), respektivno. Komanda eye(x) daje jediničnu matricu iste dimenzije kao prethodno formirana matrica X. Komande ones(n) i ones(m,n) generišu matrice sa svim elementima jednakim jedinici, a dimenzije su im (n x n) i (m x n), respektivno. ones(x) daje matricu jedinica iste dimenzije kao matrica X. Komande zeros(n), zeros(m,n) i zeros(x) na potpuno analogan način generišu matrice sa nulama. Opcije ones(x), eye(x) i zeros(x) treba izbjegavati jer predstavljaju ostatak ranijih verzija MATLAB-a. Prilikom njihove upotrebe javlja se sljedeće upozorenje: This usage of ones(x) is obsolete and will be eliminated in future versions. Please use ones(size(x)) instead. Funkcija magic(n) generiše matricu dimenzija (n x n) sa cjelobrojnim elementima izme u 1 i n 2, sa osobinom da je zbir elemenata po vrstama i kolonama konstantan. 7

18 Primjer Komande Osnovne funkcije»x=ones(4,5),zeros(3),y=eye(5,3),magic(5) rezultiraju u X = ans = Y = ans = Primjećujemo da MATLAB sam kreira veličinu po imenu ans (answer=odgovor, rezultat), ukoliko joj već nijesmo dodijelili ime operacijom pridruživanja (znak=). Naravno, u radnom prostoru će ostati samo zadnja veličina pod tim imenom. Naredba hilb(n) formira kvadratnu matricu dimenzija (n x n) čiji su elementi vezani sa indeksima, po formuli 1/(i+j-1). Naredba pascal(n) formira kvadratnu matricu dimenzija (n x n) kojoj elementi normalni na glavnu dijagonalu čine Paskalov trougao

19 Primjer Unošenjem» E=hilb(4),pascal(5) dobijamo E = ans = MATLAB for Windows... Pored navedenih, matrice se mogu unositi i na druge načine: - generisanjem pomoću iskaza i funkcija, - kreiranjem u M-fajlovima, - unošenjem iz spoljnih fajlova sa podacima. O ovim mogućnostima MATLAB-a biće riječi kasnije. 1.3 FUNKCIJE OP[TE NAMJENE OPERATORI ZA POMO] PRI RADU Kao i svi Windows programi i MATLAB posjeduje bogat Help program. Naredbom help u MATLAB-u je obezbije ena "služba pomoći i informacija". Ovo predstavlja veliku pogodnost posebno za početnike, ali je značajno i za iskusne programere jer je teško memorisati veliki broj funkcija u MATLAB-u. Postoji nekoliko verzija ove naredbe. Da bi se dobio spisak oblasti za koje postoji sažeto uputstvo (pomoć), dovoljno je unijeti»help Dobijamo spisak od 21 oblasti koje help obuhvata. Spisak naredbi koje obuhvataju jednu oblast dobijamo sa:»help oblast Informaciju o nekoj konkretnoj komandi ćete dobiti sa»help komanda 9

20 Osnovne funkcije Primjer Korišćenjem naredbe help pribavićemo informacije o načinu upotrebe same komande help, kao i o skupu naredbi dde i komande abs. Unošenje»help help,help dde,help abs daje HELP On-line documentation. HELP, by itself, lists all primary help topics. Each primary topic corresponds to a directory name on MATLABPATH. "HELP topic" gives help on the specified topic. The topic can be a command name or a directory name. If it is a command name, HELP displays information on that command. If it is a directory name, HELP displays the Table-Of-Contents for the specified directory. It is not necessary to give the full pathname of the directory; the last component, or last several components, are sufficient. For example, "help general" and "help matlab/general" both list the Table-Of-Contents for the directory toolbox/matlab/general. LOOKFOR XYZ looks for the string XYZ in the first comment line of the HELP text in all M-files found on MATLABPATH. For all files in which a match occurs, LOOKFOR displays the matching lines. MORE ON causes HELP to pause between screenfuls if the help text runs to several screens. See also LOOKFOR, WHAT, WHICH, DIR, MORE. DDE Toolbox. Version Dec-93 Copyright (c) by The MathWorks, Inc. DDE Client Functions. ddeadv - Set up advisory link. ddeexec - Send string for execution. ddeinit - Initiate DDE conversation. ddepoke - Send data to application. ddereq - Request data from application. ddeterm - Terminate DDE conversation. ddeunadv - Release advisory link. ABS Absolute value and string to numeric conversion. ABS(X) is the absolute value of the elements of X. When X is complex, ABS(X) is the complex modulus (magnitude) of the elements of X. See also ANGLE, UNWRAP. ABS(S), where S is a MATLAB string variable, returns the numeric values of the ASCII characters in the string. It does not change the internal representation, only the way it prints. See also SETSTR. Pored ovakvog help-a MATLAB posjeduje help organizovan u obliku hiperteksta. Naime u liniji menija osnovnog MATLAB prozora postoji opcija Help koja se može pozvati tasterskom kombinacijom Alt+H ili klikom miša. Izborom opcije Table of Contents otvara se prozor za pregledom oblasti koje 10

21 MATLAB for Windows MATLAB obuhvata. Nazivi oblasti su istaknuti iz ostalog teksta, i klik miša na naziv oblasti daje pregled svih naredbi koje oblast obuhvata. Klikom na odgovarajuću naredbu dobijaju se osnovne informacije o njoj. Tokom čitanja helpa pritiskom na Back možemo se vratiti na prethodnu temu help-a ili sa History na neku temu koju ste tokom te sesije pokrenuli. Postoji i Index koji obuhvata abecedni spisak svih naredbi MATLAB-a. Za ilustrovanje mogućnosti MATLAB-a, prire eni su uzorci raznih programa, koji se mogu pozvati naredbama»demo»expo Programi koji su obuhvaćeni ovim demo programima predstavljaju dobru školu za svakog MATLAB programera. Zato se obavezno treba upoznati sa tekstovima samih programa o kojima možete čitati u oblasti help demos. MATLAB početnicima preporučujemo da startuju i uvodni program»intro INFORMACIJE O VARIJABLAMA I FAJLOVIMA Za prikazivanje direktorijuma veličina iz radnog prostora koristi se naredba who. Ukoliko ste proradili dosadašnje primjere, unošenjem»who dobija se: Your variables are: A C E Y B D X ans Pored ovih, MATLAB posjeduje i pojedine konstante uvedene da bi potpomogle jednostavniji rad i da bi pratile uobičajeni način matematičke notacije. Veličina eps koristi se kao tolerancija pri nekim proračunima kao što su odre ivanje singularnosti ili ranga matrice. Njena početna vrijednost je rastojanje izme u 1.0 i sljedećeg većeg realnog broja sa pokretnim zarezom. U IEEE aritmetici koja se koristi na većini personalnih računara, uzima se da je eps=2-52 što približno iznosi 2.22* Ukoliko je to neophodno, korisnik može ovoj promjenljivoj dati bilo koju vrijednost, uključujući i nulu. 11

22 Osnovne funkcije Veličina pi je ustvari Ludolfov broj π, koji se unaprijed izračuna na neki od mogućih načina. Veličina inf predstavlja skraćenicu od infinity (beskonačno) i koristi se na veoma malom broju sistema i računarskih jezika. Na nekim računarima omogućena je IEEE aritmetikom, implementiranom na matematičkom koprocesoru. Na drugim računarima koristi se softver sa pokretnim zarezom za simuliranje matematičkog koprocesora. Neki od načina da se generiše inf su»s=1/0, s1=-1/0 što daje s= Inf s1= -Inf Warning:divide by zero Na mašinama sa IEEE aritmetikom dijeljenje sa nulom ne dovodi do prekida izvršavanja ili greške. Ispisuje se poruka upozorenja i specijalna veličina koja se ponaša korektno u kasnijim izračunavanjima. Veličina NaN je IEEE broj koji je povezan sa Inf, ali ima različito značenje. Dolazi od izraza Not a Number (nije broj) i može se generisati sa inf/inf ili 0/0. Promjenljive pi, eps, NaN, Inf su stalne promjenljive a, pored ovog, MATLAB podržava koncepciju globalnih promjenljivih. Globalne promjenljive su one veličine koje važe u svim fajlovima. Podatke o definisanim globalnim promjenljivim možemo vidjeti naredbom»who global Detaljnije informacije o veličinama iz tekućeg radnog prostora mogu se dobiti naredbom whos odnosno whos global, koja daje ne samo imena varijabli već i njihove dimenzije i indikaciju prisustva kompleksnih elemenata. Tako e ovom naredbom dobijamo informaciju o gustini matrice. Za matrice koje nijesu rijetke ova je gustina Full dok je za rijetke matrice data u procentima koji predstavljaju procenat nenultih elemenata matrice. Za prikazivanje liste direktorijuma M, MEX i MAT-fajlova, može poslužiti naredba what. Tako naredba»what prikazuje sadržaj tekućeg direktorijuma a 12

23 »what ime_direktorijuma MATLAB for Windows prikazuje sadržaj direktorijuma specificiranog imenom. Naredba which ime_funkcije traži poziciju na disku specificirane MATLAB funkcije iz M ili MEX fajlova. Za provjeru postojanja neke veličine ili fajla koristi se naredba exist. Tako unošenje»exist('a') daje 1 ako je A veličina iz radnog prostora, 2 ako je A.M ime nekog fajla na disku, 3 ako je A.MEX ime funkcije na disku, 4 ako je A prevedena Simulink funkcija, 5 ako je A ugra ena funkcija i 0 ako A ne postoji. Naglasimo da ime varijable ili fajla mora biti izme u navodnika. Primjer Provjerimo da li postoje D, cos i acosh. Unošenjem»exist('D'),exist( cos ),exist('acosh') dobijamo ans= 1 ans= 5 ans= 2 što znači da postoji varijabla D i fajl acosh.m i da je cos ugra ena funkcija. Za odre ivanje dimenzija pojedinih veličina služi naredba size. Postoje četiri varijante ove naredbe koje možemo generalno predstaviti kao: s=size(x), [m,n]=size(x), m=size(x,1) i n=size(x,2). U prvom slučaju kao izlazni argumant dobijemo vektor vrstu (označen proizvoljno sa s) sa dva elementa koji pokazuju broj vrsta i kolona veličine X, respektivno. Ukoliko želimo da dimenzije varijable X (proizvoljno označene sa m i n) dobijemo posebno, koristićemo drugu verziju koja ima dva izlazna argumenta. Treća i četvrta varijanta naredbe size daju nam broj vrsta i kolona matrice X respektivno. Za odre ivanje dužine (dimenzije) vektora koristi se naredba length. Tako l=length(y) daje skalar l koji pokazuje broj elemenata vektora y, bilo da se radi o vektoru vrsti ili koloni. U slučaju da je y matrica, l predstavlja veći od broja redova i broja kolona. Primjer Odrediti dimenzije promjenljive D i dužinu vektora B. Unošenjem»size(D),ll=length(D),size(X,1),[m,n]=size(D),d=length(B) dobijamo 13

24 Osnovne funkcije ans = 3 5 ll= 5 ans= 4 m = 3 n = 5 d = BRISANJE I ^UVANJE PODATAKA Za odstranjivanje (brisanje) promjenljivih iz radne memorije koristi se naredba clear. Unošenjem»clear sve veličine i kompajlirane funkcije odstranjuju se iz radnog prostora. Na taj način se radni prostor "očisti" kao kad prvi put uključimo MATLAB. Sa»clear x iz radnog prostora brišemo samo veličinu ili funkciju sa imenom x, a slično se može uraditi za nekoliko veličina, na primjer»clear ime1 ime2 ime3... pri čemu ime1,... može biti ime varijable ili neke funkcije. Naredbom»clear functions brišemo sve tekuće M-funkcije kompajlirane u radnoj memoriji. Naredbom»clear mex ukidamo sve povezane mex funkcije a sa»clear all brišemo sve promjenljive, mex linkove i funkcije iz radne memorije. Primjer Izbrisati iz radne memorije veličine ans i d.»clear ans d Brisanje globalnih promjenljivih se obavlja naredbom clear global. Sa naredbom clear treba oprezno postupati da bi se izbjeglo nenamjerno brisanje podataka i funkcija. Da bi se osigurali od ovakvih omaški, a i zbog 14

25 MATLAB for Windows trajnog čuvanja podataka na disku za neku kasniju upotrebu, koristimo naredbu save. Tako unošenjem»save upisujemo sve tekuće varijable u unaprijed odre eni MAT-fajl sa imenom matlab.mat. Naredbom»save ime upisujemo sve tekuće veličine iz radnog prostora u fajl ime.mat (ime je, naravno, proizvoljno), dok naredbom»save ime x Y Z upisujemo u fajl ime.mat samo veličine x, Y i Z. Pošto smo sačuvali na disku veličine koje nas interesuju, možemo završiti sesiju MATLAB-a. Za prekid rada koriste se ravnopravno tri načina, naredbama»exit»quit ili izborom opcije Exit iz menija File. Prekid uzrokuje gubitak veličina iz radnog prostora i izlazak iz MATLAB-a. Kada se ponovo uključimo u MATLAB, radni prostor može se popuniti ranije sačuvanim podacima. Ovo se postiže naredbom load, koja predstavlja inverznu operaciju od save. Naime,»load unosi u radni prostor podatke iz fajla matlab.mat, dok»load ime puni radni prostor podacima iz fajla ime.mat. Napomenimo da naredbe save i load možemo koristiti za smještanje i učitavanje podataka iz ASCII fajlova, o čemu će biti više riječi kasnije. Prekid rada, ali bez izlaska iz MATLAB-a, može se izvršiti upotrebom <Ctrl>-<C> ili <Ctrl>-<Break>, tj. istovremenim pritiskom na tipke <Ctrl> i <C> odnosno <Ctrl> i <Break>. 15

26 Osnovne funkcije Primjer Unijeti vektore x=[1-2 3], y=[-3 4-6] i matricu Z= Sačuvati ove podatke u fajl sa imenom podaci, i po završetku rada unijeti sa diska veličine x, y i Z.»x=[1,-2,3];y=[-3,4,-6];Z=[-1,2,4;2,4,6]»save podaci»quit»load podaci INFORMACIJE O SISTEMU MATLAB posjeduje niz trajnih promjenljivih koje korisnika informišu o performansama sistema. Tako naredba» computer informiše korisnika sistema na kom sistemu radi, a odgovor će na PC mašinama sa Windows operativnim sistemom biti ans = PCWIN gdje je PCWIN promjenljiva tipa string (niz karaktera o kojima će biti više riječi u petom poglavlju). Trenutno vrijeme se može saznati pomoću trajne promjenljive clock koja predstavlja vektor sa šest komponenti: godina, mjesec, dan, sat, minut i sekundu. Proteklo vrijeme u sekundama izme u dva trenutka se može saznati naredbom etime (početno_vrijeme,krajnje_vrijeme) a tekući datum u obliku string naredbom date u formatu dan-mjesec-godina. Primjer Prikazati tekuće vrijeme, datum u obliku stringa i vrijeme proteklo izme u prve naredbe i sadašnjeg trenutka.» clock ans = 1.0e+003 * » Datum=date Datum = 7-Sep-96» etime(clock,ans) 16

27 ans = MATLAB for Windows Vidimo da je trenutak izrade ovog primjera bio u 21h 51minut i 8.7 sekundi i da je izme u prve i treće naredbe proteklo sekundi. 1.4 ISKAZI I VARIJABLE MATLAB je jezik izraza (expressions). Izrazi koji korisnik unese interpretiraju se i izvršavaju od strane sistema MATLAB-a. Generalni izraz u MATLAB-u može poprimiti neki od sljedećih oblika: - izraz - var=izraz - [var1,var2,..]=izraz pri čemu je var skraćenica za ime varijable (veličine, promjenljive). Izrazi su sačinjeni od operatora, specijalnih karaktera (znakova), funkcija i imena varijabli. Izračunavanje izraza proizvodi matricu, koja se nakon toga pojavljuje na ekranu i vezuje za neku varijablu radi kasnije upotrebe. Ako se ime varijable i znak pridruživanja (=) izostave, automatski se kreira varijabla sa imenom ans, čije ime potiče od answer (odgovor, rezultat). Iskaz se normalno završava tipkom <Enter>. Ako je, me utim, zadnji karakter iskaza semicolon (;), prikazivanje na ekranu se suspenduje iako su operacije definisane iskazom izvršene u računaru. Imena varijabli i funkcija moraju početi slovom, iza koga može slijediti proizvoljan broj slova, cifara ili podvučenih crta( znak _), ali se samo prvih 19 karaktera iz imena pamti. MATLAB razlikuje velika i mala slova. Tako, na primjer, a i A nijesu iste varijable. Opšte je pravilo da se ugra ene MATLAB funkcije moraju pisati malim slovima dok se funkcije koje se nalaze na disku u formi fajlova mogu pisati i malim i velikim slovima. Tako je cos(a) funkcija a COS(A) vraća poruku undefined function (nedefinisana funkcija) dok acosh(a) i AcOsH(A) vraćaju isti rezultat. Primijetimo da je MATLAB veoma fleksibilan, u smislu da kao argument operatora mogu poslužiti veoma složeni izrazi sastavljeni od niza funkcija i operatora. Pri tome je redosljed izvršavanja pojedinih operacija u okviru jednog iskaza naznačen običnim zagradama ( ). 17

28 Osnovne funkcije Primjer Izračunati: sin ln( 19 / 12) + cos( 2π / 3) tg( 5/ 12)»sin(sqrt(log(19/12)+cos(2*pi/3)*tan(5/12))) ans = Ranije smo napomenuli da se podaci mogu unositi u više ulaznih linija. Analogan postupak može se primijeniti i na unošenje složenih izraza. Naime, ukoliko je izraz toliko složen da ga ne možemo unijeti u jednoj ulaznoj liniji, možemo ga prenijeti na sljedeću ulaznu liniju korišćenjem... (nekoliko tačaka) i tipke <Enter>. Primjer Izraz»s = 1-1/2 + 1/3-1/4 + 1/5-1/6 + 1/7-1/ /9-1/10 + 1/11-1/12; izračunava parcijalnu sumu alternativnog reda i pridružuje je varijabli s, ali je ne prikazuje na ekranu. Napomenimo da ovakvu sumu možemo i elegantnije izračunati, o čemu će kasnije biti riječi. Izrazi u MATLAB-u mogu imati više izlaznih argumenata (varijabli) i to u slučajevima kada to prirodno proizilazi iz namjene samog osnovnog operatora ugra enog u MATLAB (vidjeli smo ranije [m,n]=size(a), sa izlaznim argumentima m i n) ili kada se posebno kreiraju funkcije u M-ili MEX-fajlovima. 1.5 BROJEVI I ARITMETI^KI IZRAZI Ranije smo pomenuli da MATLAB operiše sa realnim i kompleksnim brojevima. Za brojeve se koristi uobičajena decimalna notacija sa znakom minus i decimalnom tačkom. Faktor skaliranja u obliku stepena broja deset može se uključiti kao sufiks, radi konciznijeg predstavljanja broja. Na računarima koji koriste IEEE aritmetiku sa pokretnim zarezom relativna tačnost brojeva je eps, što znači oko 16 decimalnih mjesta. Opseg iznosi od realmin do realmax, gdje su realmin i realmax prethodno definisane MATLAB konstante koje zavise od računara, mada uobičajeno iznose 2.22x i 1.8x10 308, i predstavljaju najmanji i najveći broj sa kojim se u MATLAB-u može računati. Primjer Navodimo nekoliko mogućih oblika brojeva: e e23 gdje je sa Ne±m označen broj Nx10 ±m. 18

29 MATLAB for Windows Izrazi se prave korišćenjem uobičajenih aritmetičkih operacija: + sabiranje, - oduzimanje, * množenje, / dijeljenje sdesna, \ dijeljenje slijeva, ^n stepenovanje sa n i niza elementarnih funkcija ugra enih u MATLAB, kao što su sin, log, sqrt, tan, itd. Kasnije ćemo dati kompletnu listu ugra enih funkcija kao i mogućnosti kreiranja novih, pomoću M-fajlova. Napomenimo da dva operatora za dijeljenje daju isti rezultat kada operišemo sa običnim brojevima (skalarima), a njihovo uvo enje je bilo motivisano potrebom koja proizilazi iz operacija sa matricama, o čemu će kasnije biti više riječi. Primjer Izrazi»1/4,4\1,inv(4)*1 svi daju isti rezultat ans= KOMPLEKSNI BROJEVI I MATRICE Ranije smo pomenuli da značajna fleksibilnost MATLAB-a proizilazi iz činjenice da su dozvoljene operacije sa kompleksnim brojevima. Oni mogu biti unešeni kao ulazni podaci, a mogu se prirodno pojaviti i kao rezultat primjene odre enih funkcija ili operatora sa realnim argumentima. Zbog različite notacije u literaturi, imaginarna jedinica je u MATLAB-u prethodno definisana kao permanentna veličina (kao što je to ura eno sa eps, pi i sl.), i označena sa i i j. Korišćena je klasična definicija, tako da je:»i=sqrt(-1) dok drugi više vole oznaku j:»j=sqrt(-1) Mi ćemo ovdje koristiti oznaku i. Kompleksni brojevi se mogu generisati kao: ili u obliku: z=a+b*i, a, b-realni i imaginarni dio w=r*exp(i*fi), r, fi- moduo i argument kompleksnog broja. 19

30 Osnovne funkcije Primjer Unošenje»z=4+5*i rezultira u z = i dok izraz»w=5*exp(2.5*i) daje»w = i Postoje najmanje dva načina za unošenje kompleksne matrice: -elementi se unose kao kompleksni, i -posebno se unose realni i imaginarni dio. Primjer Za unošenje matrice sa kompleksnim elementima i i Z = i 4+ 8i možemo ravnopravno koristiti sljedeće izraze:»a=[-1,2;3,4],b=[5,-6;7,8],z=a+b*i što daje a = b = Z= i i i i ili»z1=[-1+5*i 2-6*i;3+7*i 4+8*i] sa istim rezultatom: Z1 = i i i i MATLAB za Windows dozvoljava proizvoljan broj bjelina (blenkova i tabova) izme u tokena (naziva varijabli i znakova aritmetičkih operacija) što nije 20

31 MATLAB for Windows bio slučaj sa ranijim verzijama MATLAB-a. Ova osobina omogućava posebno pregledno pisanje programa. Primjer Izrazi» w=[-1+4*i 2+5*i],w1=[ * i 2 +5 * i],w2=[ * i * i] daju w = w1 = w2 = i i i i i i Vidimo da je MATLAB prvu i treću matricu protumačio na isti način a da je izostanak blenka ispred broja 5 u drugoj matrici protumačio kao poseban broj. ^est je programerski manir, na koji ovdje upozoravamo, da se pojedine (obično brojačke promjenljive) nazivaju i i j. Prilikom rada sa kompleksnim brojevima to može da rezultira neočekivanim poteškoćama, kao u sljedećem primjeru Primjer Z nije kompleksna veličina jer su i i j uzeli realne vrijednosti.» i=2;j=1;»z=3+5*i»z = IZLAZNI FORMAT Ranije smo naglasili da se rezultat bilo kojeg iskaza MATLAB-a prikazuje na ekranu, zajedno sa imenima specificiranih veličina ili ans ukoliko veličinama nijesmo pridružili imena. Izlazni oblik prikazivanja brojeva (rezultata) može se kontrolisati upotrebom naredbe format. Ona utiče samo na to kako se matrice prikazuju na ekranu, a ne na to kako se računaju ili smještaju u memoriju (MATLAB sva izračunavanja vrši u dvostrukoj preciznosti). Najprostiji slučaj imamo kada su svi elementi matrice cijeli brojevi. Tada se matrica prikazuje u formi bez decimalne tačke. Tako, na primjer»x=[-1 0 2] rezultira u 21

32 x= Osnovne funkcije Ukoliko najmanje jedan element matrice nije cio broj, postoje nekoliko mogućih izlaznih formata. Standardni format naziva se format short, a pokazuje 5 značajnih cifara. Koristi se automatski (by default) ukoliko se ne specificira neki drugi format. Ostali formati prikazuju više značajnih cifara ili koriste eksponencijalnu notaciju. Razne oblike prikazivanja izlaznih veličina ilustrovaćemo na sljedećem primjeru. Primjer Unesimo vektor od dva elementa»y=[4/ e-6]; Različiti mogući formati i rezultujuće reprezentacije vektora su:»format short»y y = »format short e»y y = e e-006»format long y = »format long e y = e e-006»format hex y = 3ff eb4b3fd5942cd96»format + y = ++»format bank y = format + predstavlja kompaktan način prikazivanja velikih matrica, gdje se simboli +, - i prazni prostori (blenkovi) koriste za pozitivne, negativne i nulte elemente matrice, respektivno. format bank se koristi kod prikazivanja finansijskih izvještaja, gdje se iznosi zaokružuju na dvije decimale (dinari i pare, dolari i centi, itd.). Kod format long zadnja cifra može izgledati netačna, ali je izlaz ustvari tačna decimalna reprezentacija binarnih brojeva smještenih u računaru. 22

33 MATLAB for Windows Ako koristimo format short ili format long, a najveći element matrice je veći od 1000 ili manji od 0.001, tada se obično rezultati prikazuju sa običnim formatom skalirani sa eksponencijalnim faktorom. Primjer Unošenje»c=[ ] rezultira u c = 1.0e+004 * dok promjenom formata sa»format long imamo sljedeću izlaznu reprezentaciju c = 1.0e+004 * Primjer Unošenjem» format rat» a=[ /pi] dobijamo a = 117/ /355 jer format rat vrši predstavljanje brojeva u obliku racionalnih razlomaka. Pomenimo još dva formata: format compact i format loose koji se koriste kod prikazivanja većih matrica. Kod drugog formata prikazivanje pojedinih redova podataka se odvaja praznim redom dok kod prvog formata to nije slučaj. Alternativno, se može mijenjati format upotrebom menija MATLAB-ovog komandnog prozora. Aktiviranjem opcije Numeric format u meniju Options otvara se meni u kojem se pregledno može izabrati traženi format. 1.8 GENERISANJE VEKTORA POMO]U KARAKTERA : (DVIJE TA^KE) 23

34 Osnovne funkcije Karakter : je veoma pogodan i često korišćen u MATLAB-u. Najviše se upotrebljava za generisanje vektora sa ekvidistantnim elementima. Naime, izraz oblika x=i:k k>i i, k-cijeli brojevi generiše vektor vrstu x=[i i+1 i+2... k-1 k] dok izraz y=(i:k)' k>i generiše vektor kolonu koja u stvari predstavlja transponovani vektor x. Primjer Izrazi»x=3:8»y=(1:4)' daju x = y = U dobijenim vektorima priraštaj je jednak +1. Ukoliko želimo proizvoljnu realnu vrijednost priraštaja (koraka), opšti oblik izraza za generisanje vektora vrste je x=x min :x k :x max pri čemu su: x min <x max x min, x max - minimalna i maksimalna vrijednost x-a x k - priraštaj Vektor kolona se dobija prostom transpozicijom ovako dobijenog vektora vrste. Primjer Izrazi»a=1.4:2:11»b=-pi:0.6:pi daju 24

35 MATLAB for Windows a= b= Columns 1 through Columns 8 through dok izrazi»c1=0;c2=8.6;c=c1:(c2-c1)/5:c2 generišu vektor c= Primjer 1.8.3»d=10:-1:5»f=pi:-pi/4:0 daju Vektori se mogu generisati i sa negativnim priraštajem. d= f= Ukoliko je x max < x min, a priraštaj pozitivan, rezultat je prazna matrica [ ]. Isto važi za slučaj x min < x max i negativan priraštaj. Primjer 1.8.4»p1=5:2:1 p1 = [ ]»p2=6:-1:9 p2 = [ ] Karakter : može se koristiti za jednostavno generisanje tabela. Primjer Izrazi 25

36 »x=[0:0.2:1.6]';»[x sin(x) cos(x)] daju ans = Osnovne funkcije Treba pomenuti da MATLAB posjeduje funkcije (biće opisane u trećoj glavi) za generisanje vektora sličnih mogućnosti kao operator :. 1.9 INDEKSI I MANIPULACIJA VRSTAMA I KOLONAMA Pojedini elementi vektora ili matrice mogu se izdvojiti navo enjem njihovih indeksa u običnim zagradama, pri čemu se za indeksiranje vektora koristi jedan, a za matrice dva cjelobrojna skalara. Ovo može poslužiti i za redefinisanje pojedinih elemenata vektora ili matrice. Primjer 1.9.1»A=[1 2 3;4 5 6;7 8 9] A= Izdvajanje elementa (2,3) matrice:»a(2,3) ans = 6 Element (3,3) matrice zamijenimo sa zbirom elemenata (1,1) i (1,2) iste matrice:»a(3,3)=a(1,1)+a(1,2) 26

37 A = MATLAB for Windows Vidimo da se promijenio samo element (3,3) dok ostali elementi i ime matrice ostaju nepromijenjeni.»x=[ ] x= Sada ćemo element (3,3) nove matrice A zamijeniti sa četvrtim elementom vektora x.»a(3,3)=x(4) A= U MATLAB-u i vektor može igrati ulogu indeksa. Ako su x i y vektori, tada izraz x(y) znači: gdje je n=length(y). [x(y(1)) x(y(2))...x(y(n))] Primjer Za vektor x iz prethodnog primjera i y=[1 3 2] izraz»x(y) daje ans = Ako definišemo vektor y1=[-1 2 3] izraz»x(y1) daje poruku o grešci Index into matrix is negative or zero jer vektor koji se koristi kao indeks ne smije imati elemente koji su negativni ili su jednaki nuli. Napomenimo da bi se poruka o grešci javila kod izraza x(y) i u svim slučajevima kada je m<y m, gdje je m=length(x) a y m je maksimalni element vektora y. Na primjer, 27

38 »x=[-1 2 3];y=[1 5];»x(y) daje Index exceeds matrix dimensions Osnovne funkcije Vektori mogu preuzeti ulogu indeksa i u matricama, što omogućava pristup susjednim i nesusjednim vrstama i kolonama i manipulaciju sa njima. U opštem slučaju, ako su vektori v i w vektori sa cjelobrojnim elementima, izraz B=A(v,w) generiše novu matricu od elemenata matrice A kao ai ( 1, j1) ai ( 1, j2) L ai ( 1, jk ) ai ( 2, j1) ai ( 2, j2) L ai (, jk ) 2 M M O L ai ( m, j1) ai ( m, j2) L ai ( m, jk) gdje su vektori definisani sa : v=[i 1 i 2... i m ] i w=[j 1 j 2... j k ]. Primjer Za matricu izraz A= »B=A([1 3],[2 3]) definiše novu matricu B koja se sastoji od elemenata prve i treće vrste i druge i treće kolone matrice A, tj. dobijamo B = X(1:4,5) Neka je X matrica dimenzije (10x10). Tada izraz definiše submatricu dimenzije (4x1), tj. vektor kolonu, koja se sastoji od prva četiri elementa pete kolone matrice X. Na sličan način, izraz X(1:5,7:10) 28

39 MATLAB for Windows daje submatricu dimenzije (5x4) sačinjenu od elemenata iz prvih pet vrsta i zadnje četiri kolone matrice X. Provjeriti ove izraze na proizvoljnoj matrici X! Ukoliko želimo iz neke matrice izvući sve vrste ili kolone, na mjestu predvi enom za indekse vrste ili kolone koristimo karakter :. Primjer Izrazi»b=A(:,3)»b1=A(2,:) daju treću kolonu i drugu vrstu matrice A, tj. b = b1 = dok izraz»b=a(:,:) daje matricu B jednaku samoj matrici A. Veoma složeni efekti postižu se upotrebom vektorskog indeksiranja sa obije strane znaka jednakosti. Primjer Za X i Y definisane izrazima»x=zeros(4,5);y=rand(4,4) koji daju matrice: X dimenzije (4x5) čiji su svi elementi nule i Y dimenzije (4x4) čiji su elementi slučajni brojevi izme u 0 i 1 (o ovoj funkciji biće više riječi kasnije) Y= izraz»x(:,[1 3 5])=Y(:,1:3) daje 29

40 X = Osnovne funkcije tj. vrši zamjenu prve, treće i pete kolone matrice X sa prvom, drugom i trećom kolonom matrice Y, respektivno. Primjer Ilustrovaćemo još jednu mogućnost korišćenja karaktera : i vektorskog indeksiranja. Za ranije definisanu matricu A, izraz»a1=a(:,3:-1:1) daje A1 = čime smo izokrenuli redosljed kolona u matrici A. Karakter : može se upotrijebiti i za preoblikovanje matrice. Naime, izraz A(:) koji se nalazi sa desne strane znaka jednakosti, pravi dugi vektor kolonu koji se sastoji od "nadovezanih" kolona matrice A. Napomenimo da za ovakvu upotrebu karaktera : matrica A mora biti prethodno definisana. Primjer Izrazi»A=[1 2;3 4;5 6];»b=A(:) rezultiraju u b = Ako izraz A(:) upotrijebimo sa lijeve strane znaka jednakosti, dobijamo matricu iste dimanzije kao A, ali sa novim sadržajem definisanim na desnoj strani izraza. 30

41 MATLAB for Windows Primjer Matrica A iz prethodnog primjera ima dimenziju (3x2), tj. ukupno 6 elemenata. Ako definišemo vektor y sa 6 proizvoljnih elemenata, na primjer»y=12:-2:2 y = tada izraz»a(:)=y daje A = što znači da je matrici A promijenjen sadržaj. Tako e treba reći da novi MATLAB ima razvijen niz funkcija za manipulaciju vrstama i kolonama matrice sa kojima ćemo se sresti u narednom poglavlju. Broj operacija sa pokretnim zarezom, koji računar izvrši u jednoj sesiji, dobija se naredbom flops. Ako želimo da dobijemo broj operacija koje računar izvrši prilikom rješavanja odre enog problema, onda se prije početka rada na tom problemu brojač operacija resetuje sa flops(0). Završićemo ovo poglavlje sa jednom korisnom napomenom. Ukoliko, za vrijeme dužih sesija u MATLAB-u, računar pošalje poruku Out of memory, to znači da više nema mjesta u memoriji za nove varijable i da moramo, prije nastavka rada, relaksirati memoriju. Jedan od načina za osloba anje prostora u memoriji bio bi brisanje nepotrebnih varijabli pomoću komande clear. Drugi, veoma pogodan, način je unošenje komande pack, koja "sabija" podatke u memoriji, otvarajući time nove slobodne blokove. Ovo se vrši tako što se sve varijable prvo sačuvaju na disku, memorija se potpuno očisti a zatim se "prepakovane" varijable ponovo vrate, ali sada tako da zauzimaju manji prostor u memoriji. Za korisnike koji se služe PC računarima pod Windows-om (a to smo, htjeli ne htjeli, većina nas) a posjeduju osrednji računar dobra je preporuka povećavanje swap prostora na disku što se postiže (naravno van MATLAB-a) u Control panelu vašeg Windowsa u sekciji 386 Enhanced klikom na opciju Virtual memory i odgovarajućim podešavanjima u ovom dialog box-u. 31

42 MATLAB for Windows glava druga ELEMENTARNE OPERACIJE SA MATRICAMA I POLJIMA BROJEVA Matrične operacije čine znatan dio računskog potencijala MATLAB-a. One su, kadgod je to moguće, označene na prirodan način kao što bi to uradili na papiru. Jedino ograničenje proizilazi iz skupa karaktera raspoloživih na računaru. Pored matričnih operatora, postoji i mogućnost operacija nad ure enim skupovima (poljima) brojeva na principu element-po-element. Kod operatora koji matrice i polja brojeva tretiraju na isti način (transpozicija, sabiranje i oduzimanje) nećemo praviti razliku pri prezentaciji, a ostale relevantne operatore ćemo prezentirati odvojeno. 2.1 TRANSPONOVANJE Transpozicija (zamjena vrsta i kolona) matrice sa realnim elementima vrši se pomoću znaka '. U specijalnim slučajevima, kada se radi o skalaru, vektoru vrsti ili vektoru koloni, operacija transpozicije daje skalar, vektor kolonu ili vektor vrstu, respektivno. Primjer Iskazi» A=[-1 2 4;2-3 1; ],B=A' rezultiraju u A = B =

43 4 1-6 dok iskazi» a=[5.2]',x=[-1 3 8]',y=[-1;-2;4]' daju a = x = Elementarne operacije sa matricama i poljima brojeva y = Ukoliko operaciju transpozicije primijenimo na matricu sa kompleksnim elementima Z moramo voditi računa o jednoj specifičnosti MATLAB-a. Naime, Z' vrši tzv. konjugovanu transpoziciju, tj. transponuje matricu i konjuguje svaki njen element. Primjer Izrazi» Z=[-1+2*i,2+3*i;-3+4*i,5-2*i], W=Z' daju Z = i i i i W = i i i i Za dobijanje transponovane kompleksne matrice možemo ravnopravno koristiti jedan od izraza datih u narednom primjeru: Primjer Unošenjem» Y=Z.',W=conj(Z') dobijamo isti rezultat Y = 34

44 i i i i W = i i i i MATLAB for Windows 2.2 SABIRANJE I ODUZIMANJE Sabiranje i oduzimanje matrica označava se sa + i -, respektivno. Ove operacije definisane su samo kada matrice koje sabiramo ili oduzimamo imaju iste dimenzije. Primjer Uzmimo matrice A i x, definisane u primjeru Izraz» A+x rezultiraće porukom??? Error using ==> + Matrix dimensions must agree. zbog toga što su dimenzije ovih veličina (3*3) i (3*1), respektivno. Primjer Za matrice A i B definisane u primjeru 2.1.1, izrazi» C=A+B,C1=A-B daju zbir i razliku matrica A i B C = C1 = Osobenost MATLAB-a sastoji se u tome što su operacije + i - dopuštene i za različite dimenzije varijabli, ali samo ukoliko je jedna od njih skalar, npr. M+s (M-matrica, s-skalar). Ovakav izraz MATLAB interpretira tako što svakom elementu matrice M dodaje (ili od njega oduzima) naznačeni skalar s, tj. skalar se posmatra 35

45 Elementarne operacije sa matricama i poljima brojeva kao konstantna matrica sa dimenzijom prilago enom matrici koja se sabira (ili oduzima). Primjer Za matrice B, x i skalar a, definisane u primjeru 2.1.1, izrazi» G=B+a,G1=x-a daju G = G1 = iako, po pravilima matričnog računa, nijesu korektni. Primjer Provjerimo rezultate iz prethodnog primjera matematički korektnim izrazima» G=B+a*ones(B),G1=x-a*ones(x) sa rezultatom G = G1 = uz upozorenje da će ovakav način rada biti izbačen u kasnijim verzijama MATLAB-a This usage of ones(x) is obsolete and will be eliminated in future versions. Please use ones(size(x)) instead. Dakle moraćemo koristiti naredbu ones(size(x)). Sva navedena pravila, uključujući i ono o kompatibilnosti skalara i matrice pri sabiranju i oduzimanju, važe za matrice i skalare sa kompleksnim elementima. 36

46 Primjer Izrazi MATLAB for Windows» z=1+2*i;n=z+z pri čemu smo kompleksnu matricu Z ranije definisali u primjeru 2.1.2, daju N= i i i MNO@ENJE MATRICA Matrično množenje u MATLAB-u je označeno sa *. Shodno pravilima matričnog računa, ova operacija je definisana kada su "unutrašnje" dimenzije činilaca iste, tj. ako je broj kolona prvog činioca jednak broju vrsta drugog. Primjer Prethodno definisani x i A (primjer 2.1.1) ne ispunjavaju navedeni uslov, pa će iskaz» c=x*a proizvesti poruku:??? Error using ==> * Inner matrix dimensions must agree. dok je iskaz» c=a*x korektan specijalan slučaj matričnog proizvoda, koji će dati c = Mogućnosti množenja vektora sa vektorom, tj. takozvani skalarni (unutrašnji) i spoljni proizvod vektora, ilustrovaćemo na narednom primjeru. Primjer Sa definisanim vektorima» x=[1 2 3],y=[1-1 2] x = y = 37

47 1-1 2 izrazi Elementarne operacije sa matricama i poljima brojeva» c=x*y',c1=y*x' daju isti rezultat, tj. skalarni proizvod dva vektora c = 5 c1 = 5 Spoljni proizvodi rezultiraće iz izraza» D=x'*y,D1=y'*x D = D1 = pri čemu je očigledno da su matrice D i D1 povezane relacijom D'=D1. Naravno, izraz» x*y daje poruku greške:??? Error using ==> * Inner matrix dimensions must agree. Matrica ili vektor prirodno se množi sa skalarom. Primjer Sa prethodno definisanim A i x (primjeri i 2.3.2), izrazi» A*pi,6.3*x rezultiraju sa ans =

48 MATLAB for Windows ans = MNO@ENJE POLJA BROJEVA Za množenje ure enih skupova brojeva ne važe pravila matričnog računa, već se množenje vrši po principu element-po-element, a odgovarajući operator je označen sa.*. Za ovakvu operaciju činioci moraju imati iste dimenzije ako su brojevi ure eni u obliku matrica ili vektora. Naime, ako A i C označavaju dva takva skupa brojeva, tada E=A.*C daje novi skup brojeva E čiji su elementi proizvodi korespondentnih elemenata iz skupova A i C. Primjer Sa prethodno definisanim A i C (primjeri i 2.2.1), izrazi» E1=A*C» E=A.*C su, s obzirom na dimenzije varijabli A i C, oba legitimni, samo što su operacije izvršene po različitim pravilima tako da i daju različite rezultate: E1 = E = Primjer Za ranije definisane varijable A, x, y, (primjeri i 2.3.2), izraz» A.*x daje poruku greške??? Error using ==>.* Matrix dimensions must agree. dok izrazi» g=x.*y» g1=x.*(-2) daju 39

49 Elementarne operacije sa matricama i poljima brojeva g = g1 = Vidimo da ukoliko je jedan od činilaca skalar, rezultat primjene operatora.* će biti isti kao običnog matričnog množenja *, tj. svaki element matrice ili vektora množi se sa skalarom. 2.5 DETERMINANTA I INVERZNA MATRICA det(x). Determinanta kvadratne matrice X, X, izračunava se pomoću operatora Primjer Ako unesemo matricu A sa realnim elementima» A=[1 5 8;3-1 2;4-4 6] A = izraz» d=det(a) daje d = -112 a na isti način dobijamo determinantu matrice sa kompleksnim elementima. Naime, unošenjem matrice» B=[-1+2*i 1-2*i i;-i 2 1+i;-2 3*i 4+i]; izraz» d1=det(b) daje d1 = i Primjer Sa matricama iz prethodnog primjera provjeriti relaciju AB = A B. 40

50 MATLAB for Windows» det(a*b)-det(a)*det(b) ans = 0 Inverzna matrica X kvadratne nesingularne matrice X, dobija se primjenom operatora inv(x). Primjer Za matrice A i B iz primjera 2.5.1, izrazi» Ai=inv(A),Bi=inv(B) daju Ai = Bi = i i i i i i i i i U MATLAB-u ne postoji posebni operator za izračunavanje adjungovane matrice ali je, na osnovu definicije inverzne matrice, očigledno da izraz» adja=inv(a)*det(a) daje adjungovanu matricu matrice A adja = "DIJELJENJE" MATRICA U matričnom računu dijeljenje nije definisano (osim ako je djelilac skalar). U MATLAB-u, me utim, postoje dva operatora za "dijeljenje" matrica: / koji označava takozvano "dijeljenje" s desna, i \ koji označava takozvano "dijeljenje" s lijeva. 41

51 Elementarne operacije sa matricama i poljima brojeva Značenje ovih operatora razmotrićemo, za sada, samo za specijalni slučaj kada se radi o kvadratnim nesingularnim matricama. Neka je, naime, matrica A kvadratna i nesingularna. Tada izraz: X=A\B odgovara množenju matrice B s lijeva sa A -1, tj. X=A -1 B, dok izraz: X=B/A odgovara množenju matrice B s desna sa A -1, tj. X=BA -1, pri čemu se primjenom operatora \ i / rezultati dobijaju direktno, bez računanja inverzne matrice. Dijeljenje s lijeva A\B definisano je samo u slučaju kada je broj vrsta varijabli A i B isti. Primjer Za matrice A i B iz prethodnog primjera i b=[1 2 3]', izrazi» x=a\b,x=a\b imaju smisla i daju x = X = i i i i i i i i i dok za c=2 i d=b', izrazi» x=a\c,x=a\d nijesu definisani i rezultiraće porukom o neslaganju dimenzija. Izraz za dijeljenje s desna B/A može se izraziti preko dijeljenja s lijeva kao B/A=(A'\B')', i ima smisla samo ako je broj kolona varijabli A i B isti. Primjer Za veličine iz prethodnog primjera, izrazi» y=d/a,y=b/a imaju smisla, i daju rezultate 42

52 MATLAB for Windows y = Y = i i i i i i i i i dok izrazi»y=c/a»b/a nijesu definisani i rezultiraće porukom o neslaganju dimenzija matrica koje se "dijele". Napomenimo ovdje da izraz X=A\B predstavlja rješenje za AX=B, dok izraz X=B/A predstavlja rješenje za XA=B. O operatorima \ i / biće više riječi u osmom poglavlju, gdje ćemo razmotriti njihovu upotrebu pri rješavanju skupa linearnih jednačina u opštem slučaju. 2.7 DIJELJENJE POLJA BROJEVA Za dijeljenje ure enih skupova brojeva važe drugačija pravila pa se upotrebljavaju i različiti simboli:./ za dijeljenje s desna, i.\ za dijeljenje s lijeva. Tačka u simbolu za dijeljenje označava da se ova operacija vrši na korespondentnim elementima. Tako, izraz C=A./B (ili njemu ekvivalentan C=B.\A) znači da su elementi skupa C izračunati po pravilu c(i,j)=a(i,j)/b(i,j), gdje su a(i,j) i b(i,j) odgovarajući elementi skupova A i B. Na isti način, izrazi D=A.\B (tj. D=B./A) znače da je d(i,j)=b(i,j)/a(i,j). Iz ovakvih pravila očigledno slijedi: da bi navedeni izrazi imali smisla A i B moraju imati iste dimenzije. Jedini, ali veoma praktičan, izuzetak od ovog pravila predstavlja slučaj kada je dijeljenik ili djelilac skalar. Tako izrazi D=k./A odnosno D=A.\k znače da je d(i,j)=k/a(i,j), dok izrazi D=A./k odnosno D=k.\A znače da se elementi skupa D računaju po relaciji d(i,j)=a(i,j)/k. Primjer Unesi polja A i B i na i njihove količnike.» A=[1 0-2;-1 2 0],B=[-3 0 4;0 2-1] 43

53 Elementarne operacije sa matricama i poljima brojeva A = B = » C=A./B Warning: Divide by zero C = NaN Inf » D=B./A Warning: Divide by zero D = -3 NaN Inf Pošto A i B iz primjera sadrže neke elemente jednake nuli, dobijamo poruku o dijeljenju sa nulom, a u rezultatu se javlja Inf ili NaN. Primjer Za a=2 i polja A i B iz prethodnog primjera, izračunati a./a i B./a. Unošenjem» A1=a./A dobijamo Warning: Divide by zero A1 = 2 Inf Inf dok» B1=B./a daje B1 = Vidimo da je efekat isti kao da smo koristili naredbe:» A1=a*ones(size(A))./B, odnosno 44

54 » B1=B./(a*ones(size(B))) MATLAB for Windows Postoji jedna značajna razlika ove verzije MATLAB-a u odnosu na DOS verzije u pogledu dijeljenja skalara poljem brojeva. Naime u MATLAB-u for Windows izraz:» 4./A je korektan i rezultira Warning: Divide by zero ans = 4 Inf Inf dok bi u prethodnim verzijama MATLAB-a rezultirao greškom. Uzrok ovoga je bio taj što je "stari" MATLAB tačku tumačio kao decimalni zarez pa matrične dimenzije nijesu odgovarale. Obično se primjenjivao trik da se prethodni izraz zapisivao u obliku 4../A gdje prva tačka i dalje označava decimalni zarez a druga operaciju na polju brojeva. se kao 2.8 STEPENOVANJE MATRICA Ako je A kvadratna matrica a p pozitivan cio broj, matrični stepen definiše A p =A A A A...A, p puta odnosno, za A nesingularnu matricu A -p = (A -1 ) p Stepenovanje kvadratne matrice vrši se pomoću operatora ^, tako da izrazi A^p i A^(-p) daju p-ti i (-p)-ti matrični stepen od A. Primjer Za proizvoljnu nesingularnu matricu A odrediti A 2, A -2 i provjeriti da li važi: A 0 =I, gdje je I jedinična matrica iste dimenzije kao A.» A=[-1 2 3;2-2 1;1 4 2] A =

55 Elementarne operacije sa matricama i poljima brojeva» B=A^2 B = » C=A^0 C = Ukoliko p nije cio broj, već proizvoljan realan broj, operacija stepenovanja kvadratne matrice A ima različito značenje i vrši se po drugačijem pravilu. A p je definisano preko sopstvenih vrijednosti i vektora (za definiciju ovih pojmova vidi osmo poglavlje) kao A p =V D p V, gdje je D dijagonalna matrica koja sadrži sopstvene vrijednosti matrice A na glavnoj dijagonali, a V je matrica sačinjena od odgovarajućih sopstvenih vektora matrice A. Samo stepenovanje D jednostavno se vrši stepenovanjem pojedinih skalarnih elemenata sa glavne dijagonale. Ukoliko A sadrži kompleksne sopstvene vrijednosti, A će tako e biti kompleksna matrica. Primjer Za matrice A = B = naći matrične stepene A 2.6 i B » A1=A^2.6 A1 = i i i i i i i i i» B1=B^(-1.56) B1 = 46

56 MATLAB for Windows i i i i i i i i i Na sličan način, izraz p A, gdje je p skalar a A kvadratna matrica, računa se preko sopstvenih vrijednosti i vektora. Primjer Za matrice A i B iz prethodnog primjera naći (2) A i (-3.6) B.» A1=2^A A1 = » B1=(-3.6)^B B1 = 1.0e+002 * i i i i i i i i i Izraz A B, gdje su A i B matrice, nije korektan i ukoliko pokušamo da stepenujemo matricu sa matricom, dobićemo poruku greške. Računar će javiti grešku i u svim slučajevima kada pokušamo računati matrični stepen a matrica nije kvadratna. 2.9 STEPENOVANJE POLJA BROJEVA Stepenovanje polja brojeva (element po element), u MATLAB-u je označeno sa.^. Izraz oblika C=A.^B gdje su A i B matrice, moguć je samo ako su A i B istih dimenzija, a elementi polja C dobijaju se po relaciji c(i,j)=a(i,j) b(i,j) Primjer Stepenovati, element po element, matrice A i B iz prethodnog primjera. Pošto su iste dimenzije, izrazi» C1=A.^B,C=B.^A daju C1 =

57 C = Za vektor x=[1-2 3], izraz» A.^x daje poruku Elementarne operacije sa matricama i poljima brojeva??? Error using ==>.^ Matrix dimensions must agree. Specijalni slučajevi generalnog izraza C=A B nastupaju kada je u osnovi ili eksponentu skalar. Tako izrazi C=A.^p i D=p.^A, gdje je p skalar a A matrica proizvoljne dimenzije, u MATLAB-u imaju smisla a elementi C i D računaju se kao c(i,j)=a(i,j) p i d(i,j)=p b(i,j) Primjer Za x=[-1-2 2] i y=[ ] imamo» (-3).^x ans = » y1=y.^3 y1 = » 3.^y ans = Primjetimo da bi posljedni izraz u ranijim verzijama MATLAB-a bio protumačen kao greška (zbog toga što bi tačka bila okarakterisana kao decimalni zarez) dok je ovdje potpuno korektan ELEMENTARNE MATEMATI^KE FUNKCIJE Osnovni operatori ugra eni u MATLAB sadrže i skup elementarnih matematičkih funkcija čija je lista data u priloženoj tabeli. 48

58 MATLAB for Windows Elementarne matematičke funkcije Kompleksne funkcije abs apsolutna vrijednost ili moduo real realni dio angle fazni stav imag imaginarni dio conj konjugovanje Numeričke funkcije fix zaokruživanje prema nuli round zaokr. ka najbl. cijelom broju floor zaokruživanje prema - rem ostatak pri dijeljenju ceil zaokruživanje prema sign funkcija znaka (signum) gcd najveći zajednički djelilac lcm najmanji zajednički sadržalac rat racionalna aproksimacija rats racionalni rezultat Trigonometrijske funkcije sin sinus sinh hiperbolni sinus asin arkus sinus asinh arkus sinus hiperbolni cos kosinus cosh kosinus hiperbolni acos arkus kosinus acosh arkus kosinus hiperbolni tan tangens tanh tangens hiperbolni atan arkus tangens atan2 arkus tangens četiri kvadranta atanh arkus tangens hiperbolni sec sekans sech sekans hiperbolni asech arkus sekans hiperbolni csc kosekans csch kosekans hiperbolni acsc arkus kosekans acsch arkus kosekans hiperbolni cot kotangens coth cotangens hiperbolni acot arkus kotangens acoth arkus kotangens hiperbolni Eksponencijalne funkcije 49

59 Elementarne operacije sa matricama i poljima brojeva exp eksponencijalna funkcija log prirodni logaritam log10 logaritam sa osnovom 10 sqrt kvadratni korijen expint eksponencijalna integralna f-ja log2 logaritam sa osnovom 2 pow2 stepen dvojke Beselove, beta, gama i eliptičke funkcije besselj Beselova funkcija prve vrste bessely Beselova funkcija druge vrste besseli modifik. Beselova f-ja prve vrste besselk modif. Besel. f-ja druge vrste bessel Beselova f-ja komplex. argum. betainc nekompletna beta funkcija beta beta funkcija gamma gama funkcija betaln logaritam beta funkcije gammaln logaritam gama funkcije gammain nekompletna gama funkcija ellipke kompletna eliptička funkcija c ellipj Jakobijeva eliptička funkcija Funkcija greške erf funkcija greške erfc komplementarna f-ja greške erfcx skalirana komplem. f-ja greške erfinv inverzna funkcija greške Ako sa f(x) označimo generalnu matematičku funkciju, možemo sumirati neke osnovne osobine ove grupe operatora: 1) Zadati argument X (koji može biti skalar, vektor ili matrica) tretira se kao polje brojeva, tj. za X11 X12 L X1 n X X X n X = L 2 M M O M Xm 1 Xm2 L Xmn imamo 50

60 f ( X11) f ( X12) L f ( X1 n) f ( X ) f ( X ) f ( X n) f ( X) = L 2 M M O M f ( Xm 1) f ( Xm2) L f ( Xm n) MATLAB for Windows 2) X može imati realne ili kompleksne elemente. 3) Složeni izrazi i nove funkcije grade se pomoću elementarnih funkcija i operacija za manipulaciju sa poljima brojeva +,-,.*,./,.\,.^ FUNKCIJE ABS, ANGLE, REAL, IMAG I CONJ Na jednom primjeru ilustrovaćemo značenje i sintaksu naredbi abs, angle, real, imag i conj. Primjer Za dato polje brojeva Z Z = i i i i izraz» az=abs(z) daje az = tj. apsolutne vrijednosti elemenata polja Z. Izraz» an=angle(z) daje an = tj. uglove (fazne stavove) elemenata Z izražene u radijanima. Ukoliko želimo dobiti njihove vrijednosti u stepenima, primijenićemo 51

61 Elementarne operacije sa matricama i poljima brojeva» an*180/pi što daje ans = Izraz» Re=real(Z) daje realni dio polja (ili matrice) Z, tj. Re = a na sličan način:» Im=imag(Z) daje imaginarni dio Im = dok se konjugovana matrica (polje) dobija pomoću izraza» Zc=conj(Z) Zc = i i i i FUNKCIJE ZA ZAOKRU@IVANJE U MATLAB-u postoje četiri operatora za zaokruživanje na cijele brojeve. Operatore i njihovo značenje možemo ilustrovati sljedećim dijagramima: round(x) zaokruživanje na najbliži cio broj 52

62 MATLAB for Windows fix(x) zaokruživanje prema nuli floor(x) zaokruživanje prema ceil(x) zaokruživanje prema + Primjer Neka je matrica (ili polje brojeva) data sa A = Primjena pojedinih operatora za zaokruživanje daje:» R=round(A) R = » F=fix(A) F = » C=ceil(A) C = » F1=floor(A) F1 =

63 Elementarne operacije sa matricama i poljima brojeva Kompleksni brojevi se zaokružuju tako što se posebno zaokruže realni i imaginarni djelovi. Ako uzmemo Z iz prethodnog primjera, izraz» Z1=Z*2*pi daje Z1 = i i i i pa operatori za zaokruživanje round i ceil daju» round(z1) ans = i i i i» ceil(z1) ans = i i i i EKSPONENCIJALNA, LOGARITAMSKA, STEPENA I FUNKCIJA KVADRATNOG KORIJENA Eksponencijalna funkcija definisana je operatorom exp. Tako exp(x) daje e x za svaki element polja X. Za kompleksni broj z=x+iy, exp(z) računa kompleksnu eksponencijalnu funkcija e z =e x (cos y + isin y). Primjer Ilustrovaćemo primjenu eksponencijalne funkcije za polja A = » exp(a) ans = » exp(z) i Z i i = i 2 6i 54

64 MATLAB for Windows ans = i i i i log(x) daje prirodne logaritme elemenata polja X. Ukoliko je z=re jα negativan ili kompleksan broj, izraz log(z) računa kompleksni prirodni logaritam, po formuli ln z= ln r+ iα. Logaritam za osnovu 10 od elemenata polja X definisan je sa operatorom log10(x). Primjer Za polja A i Z iz prethodnog primjera, dobijamo:» log(a) ans = i i» log(z) ans = i i i i» log10(a) ans = i i» log10(z) ans = i i i i Operator sqrt(x) daje kvadratni korijen elemenata matrice X, pri čemu se kompleksni rezultat dobije za negativne elemente, po definiciji z = r[cos( α / 2+ kπ) + isin( α / 2 + kπ)], k = 01., Primjer Naći kvadratni korijen polja A i Z iz prethodnog primjera.» sqrt(a) ans = i i» sqrt(z) 55

65 Elementarne operacije sa matricama i poljima brojeva ans = i i i i Specifične funkcije ove grupe su log2 i pow2. log2 kao funkcija jednog argumenta log2(x) daje logaritam sa osnovom 2 elemenata matrice. pow2(x), funkcija jednog argumenta daje matricu čiji su elementi 2 x. Za matrice sa realnim argumentima može se zahtjevati da funkcija log2(x) ima dva izlazna argumenta: [f,e]=log2(x) Vrijednost matrice f su brojevi izme u 0.5 i 1 takvi da važi X=f 2 e. Funkcija x=pow2(f,e) ima suprotan efekat. Primjer Naći logaritam sa osnovom 2 matrice A korišćene u prethodnim primjerima, četvrti stepen broja 2 i na nizu brojeva od 1 do 16 demonstrirati ostale mogućnosti naredbi log2 i pow2.» log2(a) ans = i i» x=pow2(4) x = 16» [f,e]=log2(1:16) f = Columns 1 through Columns 8 through Columns 15 through e = Columns 1 through Columns 13 through » x=pow2(f,e) x = Columns 1 through 12 56

66 MATLAB for Windows Columns 13 through TRIGONOMETRIJSKE, HIPERBOLNE I NJIMA INVERZNE FUNKCIJE Operatori sin(x), cos(x), tan(x), cot(x), sec(x) i csc(x) daju trigonometrijske funkcije za argumente definisane u radijanima. I oblast definisanosti i oblast vrijednosti ovih funkcija uključuju kompleksne brojeve. Za kompleksne argumente z=x+iy važe sljedeće definicije: sin z=(e iz -e -iz )/2i cos z=(e iz +e -iz )/2 tan z=sin z/cos z sec z=1/cos z csc z=1/sin z cot z=cos z/sin z Operatori asin(x), acos(x), atan(x), acot(x), asec(x) i acsc(x) daju inverzne trigonometrijske funkcije u radijanima. Za realne vrijednosti x, takve da je abs(x)<1, funkcije asin(x) i acos(x) daju vrijednosti u opsegu [0, π] i [-π/2, π/2], respektivno, dok atan(x) i acot(x) daje vrijednosti u opsegu [-π/2, π/2], za realne vrijednosti x. Za x 1 asec(x) i acsc(x) daje vrijednosti u opsegu [0, π] i [-π/2, π/2] respektivno. Za realne x, sa abs(x)>1, kao i za kompleksne vrijednosti x, acos(x) i asin(x) daju kompleksne vrijednosti po pravilu cos 1 ( x) = iln( x+ i 1 x 2 ) sin 1 ( x) = iln( ix+ 1 x 2 ) Na sličan način, za kompleksne x, operatori atan(x) i acot(x) daje kompleksne vrijednosti po pravilu 1 tan ( ) = ln + x i i x 2 i x 1 cot ( ) = ln + x i ix 1 2 ix 1 Funkcija atan2(y,x) daje tzv. četvorokvadrantni arkus tangens. Vidimo da zahtijeva dva ulazna argumenta, jer vrijednosti Y i X odre uju kvadrant u kome se pridružena varijabla X+iY nalazi, tako da za računanje arkus tangensa nije dovoljno poznavati samo odnos Y/X. Rezultat se dobija u opsegu [-π, π]. 57

67 Elementarne operacije sa matricama i poljima brojeva U m-fajlu postoje i hiperbolne funkcije sinh, cosh, tanh, coth, sech i csch kao i inverzne hiperbolne funkcije asinh, acosh, atanh, acoth, asech i acsch. Primjer Za polja A i Z iz primjera , ilustrovaćemo pojedine od navedenih elementarnih matematičkih funkcija:» sin(a),sin(a+2*pi),sin(z),sin(z+2*pi) ans = ans = ans = 1.0e+002 * i i i i ans = 1.0e+002 * i i i i» asin(z) ans = i i i i» tan(z), cot(a), 1./tan(A) ans = i i i i ans = ans = » atan2(imag(z),real(z)) ans =

68 MATLAB for Windows » angle(z) ans = » sec(a), sec(a),1./cos(a) ans = ans = ans = » sinh(a) ans = Vidimo da za Z=X+iY operatori angle(z) i atan2(y,x) daju isti rezultat BESSELOVE, BETA, GAMA I FUNKCIJE GRE[KE Operatori besselj, bessely, besseli i besselk služe za izračunavanje Besselovih funkcija. Diferencijalna jednačina oblika x y"+ xy'+(x 2 -α 2 )y = 0, naziva se Beselova jednačina, a njena rješenja poznata su pod imenom Beselove funkcije. besselj(alfa,x) izračunava Beselovu funkciju prve vrste reda α>0 za svaki element polja X. bessely(alfa,x) izračunava Beselovu funkciju druge vrste reda α<0 (α= - alfa) za svaki element polja X. Treba pomenuti da je podržana i funkcija bessel koja, za realne argumente X, predstavlja funkciju besselj a za imaginarne funkciju besseli. Za izračunavanje gama funcije koriste se operatori gamma(x), gamminc(x,a) i gammaln(x). Operatoru gamma(x) odgovara funkcija x 1 t γ( x) = t e dt 0 59

69 Elementarne operacije sa matricama i poljima brojeva poznata kao gama funkcija, za koju važi značajna osobina gamma(n+1)=n! za n cijeli broj. gammaln(x) predstavlja logaritam gama funkcije. Nekompletna gama funkcija se računa (operator gammainc(x,a)) po sljedećoj formuli x a 1 γ 1 (, ) = t xa t e dt 0 Beta funkcija se računa operatorom beta(x,y) a njen logaritam operatorom betaln(x,y). Beta funkcija je data sljedećim izrazom 1 β( xy, ) t x 1 y 1 = ( 1 t) dt 0 U teoriji vjerovatnoće veoma se često koristi pojam funkcije greške. Funkcija greške (operator erf(x)) je data kao erf( x) = x 2 e t 2 dt π 0 Operator komplemantarne funkcije greške je erfc(x)=1-erf(x) dok se inverzna funkcija greške dobija operatorom y=erfinv(x) (gdje je x=erf(y) i y (, ) i x (-1,-1)). Primjer Nacrtati Beselovu funkciju prve i druge vrste prvog reda za x=0:0.25:10.» x=0:.25:10;» figure(1),plot(x,besselj(1,x))» y=0:.25:20;» figure(2),plot(y,bessely(1,y)) Dakle prilikom crtanja se otvaraju dva grafička prozora u kojima se crtaju Besselova funkcija prve i druge vrste. O funkcijama plot i figure biće više riječi u narednom poglavlju

70 MATLAB for Windows a) b) Slika 2.1 Grafik Beselove funkcije: a) prve vrste, b) druge vrste Primjer Nacrtati nekompletnu gama funkciju za x=0.02:0.02:1 i a=2 za svako x.» x=0.02:.02:1;» plot(x,gammainc(x,2*ones(size(x)))) Slika 2.2: Nekompletna gama funkcija Primjer Naći beta funkciju argumenata 3 i 2 i provjeriti funkciju betaln.» beta(3,2) ans = » betaln(3,2),log(beta(3,2)) ans = ans = Primjer Nacrtati funkciju greške i komplementarnu funciju greške za argumente x=-3:0.1:3. Demonstrirati inverznu funciju greške za argumenta od -1 do 1.» plot(-3:.1:3,erf(-3:0.1:3))» plot(-3:.1:3,erfc(-3:0.1:3))» x=erfinv(-1:.2:1) x = Columns 1 through 7 -Inf

71 Elementarne operacije sa matricama i poljima brojeva Columns 8 through Inf a) b) Slika 2.3. a) Funkcija greške; b) Komplementarna funkcija greške SPECIFI^NE NUMERI^KE FUNKCIJE Broj prikazan u pokretnom zarezu se može prikazati u obliku razlomaka. Funkcija rat(x) prikazuje racionalni broj u obliku sume razlomaka. Drugi oblik ove naredbe je [a,b]=rat(x,greska) vraća vrijednost a i b za koju važi: a / b x greska x Ako se argument greska izostavi, njegova se vrijednost uzima po pravilu opisanom u help-u. Druga naredba za racionalnu aproksimaciju je rats(x,l) koja vraća prosti razlomak koji aproksimira broj x (odnosno svaki element matrice x) a l predstavlja mjeru tačnosti sa kojom će se aproksimacija izvršiti. Ako se l izostavi podrazumjeva se vrijednost l=13, za bolju preciznost treba uzeti veće l. Primjer Demonstrirati naredbe rat i rats. Unošenje» rat(0.234), rat(pi) rezultira sa 0 + 1/(4 + 1/(4 + 1/(-3 + 1/(11)))) 3 + 1/(7 + 1/(16)) Dakle važi približna relacija: 62

72 π= Drugi oblik naredbe rat MATLAB for Windows» [a,b]=rat(pi) a = 355 b = 113 što znači da je π 355/113. Isti izraz sa zadatom većom tačnošću daje» [a,b]=rat(pi,2^(-52)) a = b = Unošenje» rats(1.234) rezultira sa ans = 617/500 dok sa povećanom ili smanjenom tačnošću dobijamo» rats(pi,20) ans = /99532» rats(pi,2) ans = 3 Tako e su veoma značajne funkcije gcd (najveći zajednički djelilac), lcm (najmanji zajednički sadržalac), rem (ostatak pri dijeljenju) i sign (znak broja). Funkcija gcd(a,b) za cijele brojeve a i b nalazi najmanji zajednički djelilac (broj sa kojim se mogu podijeliti oba broja bez ostatka). Oblik ove naredbe [A,B,C]= gcd(a,b) daje A najmanji zajednički djelilac B i C tako da važi: A=aB+bC. Funkcija lcm(a,b) za cijele brojeve a i b daje broj u kojem se a i b sadrže bez ostatka. 63

73 Elementarne operacije sa matricama i poljima brojeva rem(a,b) daje ostatak pri dijeljenju a sa b. Funkcija znaka sign vraća -1 za one elemente matrice koji su negativni, +1 za pozitivne i 0 za nulte elemente matrice. Primjer Na primjerima demonstrirati opisane funkcije» G=gcd(17,6) G = 1» G=gcd(25,35) G = 5» [G,C,D]=gcd(25,35) G = 5 C = 3 D = -2» GCD(0,0) ans = 0 Dakle brojevi 17 i 6 su uzajamno prosti. Po definiciji se usvaja da je gcd(0,0)=0. Demonstrirajmo i funkciju lcm:» lcm(23,34), lcm(12,42) ans = 782 ans = 84 Odredimo ostatak pri dijeljenju 23 i 3, 234 i 3, pa demonstrirajmo funkciju sign.» rem(23,3) ans = 2» rem(234,3) ans = 0» sign([ ]) 64

74 MATLAB for Windows ans = FUNKCIJE ZA MANIPULACIJU MATRICAMA Već smo se sreli sa nekim operacijama za manipulaciju kolona i vrsta matrica (operator : i transponovanje). Ponekad ovo nije dovoljno ili nije dovoljno efikasno. Stoga postoje sljedeće funkcije za manipulaciju matricama: rot90, flipud i fliplr. Funkcija rot90(a) "rotira" matricu A za 90 u smjeru kazaljke na satu, dok verzija ove funkcije rot90(a,n) "rotira" matricu A za n x 90 u smjeru kazaljke na satu. Dakle, rot90(a,4) vraća polaznu matricu a rot90(a,-1) rotira matricu za 90 u smjeru suprotnom kretanju kazaljke na časovniku. Funkcija flipup(a) mijenja redosljed vrste. Prva vrsta novodobijene matrice je poslednja matrice A, i zatim se re aju vrste ka prvoj vrsti matrice A. Slična ovoj je funkcija fliplr(a) koja mjenja redosljed kolona matrice. Primjer Na matrici A=[ ; ; ] demonstrirati opisane naredbe za manipulaciju matricama.» A=[ ; ; ];» A,rot90(A) Rezultira kao: A = ans = Unošenjem» rot90(a,4) dobijamo početnu matricu ans = 65

75 Elementarne operacije sa matricama i poljima brojeva Za rotaciju u smjeru suprotnom kazaljki na satu koristimo» rot90(a,-1) ans = Demonstrirajmo naredbe flipud i fliplr. Unošenjem» flipud(a),fliplr(a) dobijamo ans = ans = Uočimo da dobijene matrice imaju iste dimenzije kao početna matrica. flipud možemo realizovati pomoću operatora:» A(size(A,1):-1:1,:) ans = Naredbi fliplr odgovara» A(:,size(A,2):-1:1) 66

76 glava treća MATLAB for Windows GRAFIKA MATLAB posjeduje mogućnost dobrog grafičkog predstavljanja funkcija jedne promjenjive, kao i izuzetno jednostavnog i kvalitetnog predstavljanja funkcija dvije promjenjive. U rudimentarnom obliku, koliko to dozvoljava površina ekrana, MATLAB je u stanju da predstavi i funkcije tri promjenljive. Predstavljanje funkcija dvije promjenljive može biti u obliku "trodimenzionih (mrežastih) crteža", 2-D obojenih površina, kolornih mapa i putem izo linija. U okviru ove glave dat je pregled grafičkih mogućnosti MATLAB-a kao i opcije za grafičko procesiranje. "Upravljanje" grafičkim okruženje, kao i samim graficima opisano je u šestoj glavi. 3.1 GRAFI^KO PREDSTAVLJANJE MATRICA, VEKTORA I FUNKCIJA JEDNE PROMJENJIVE OSNOVNI OBLIK Najjednostavniji oblik predstavljanja vektora vrste ili vektora kolone je korišćenjem naredbe plot. Primjer Nacrtati y=[ ] Postupak je sljedeći:» y=[ ];» plot(y) Slika 3.1. Grafik vektora vrste Sa slike 3.1. možemo zapaziti da je za nezavisno promjenjivu uzet redni broj elementa u vektoru y. Ako nezavisno promjenljivu označimo sa x onda je 69

77 Grafika računar uzeo x=[ ] i nacrtao grafik spajajući tačke (1,y(1)), (2,y(2)), (3,y(3)), (4,y(4)), (5,y(5)) i (6,y(6)). U opštem slučaju sa plot(y) se crta grafik spajajući tačke (i,y(i)) za i=1,2,3...,n, gdje je N dužina vektora y. Vektor y može biti i vektor kolona. Provjeriti da se dobija isti grafik ako zadamo y1=y' i nacrtamo plot(y1). Prilikom crtanja grafika, otvara se grafički prozor za koji važe opšta pravila svih Windows prozora. Na komandni prompt se moguće vratiti na više načina, a od njih pominjemo dva: pritisnuti Alt, a zatim pritiskati Tab dok se ne pojavi natpis MATLAB Command Window; nakon toga se otpuste oba tastera. Na isti način možemo se vratiti u grafički prozor. Za prelazak u otvoreni grafički prozor pored kombinacije Alt+Tab može poslužiti opcija Window MATLAB-ovog komandnog prozora. Nezavisno promjenljiva može biti zadata posebno. U tom slučaju se crtanje vektora y u zavisnosti od x vrši sa plot(x,y). Primjer Ako su pri nekom mjerenju za vrijednosti nezavisno promjenljive x=[ ] dobijene vrijednosti koje su zapisane odgovarajućim redom u y=[ ], nacrtati y(x).» x=[ ];» y=[ ];» plot(x,y) Slika 3.2. Grafik funkcije y(x) Grafik se u ovom slučaju dobija spajanjem tačaka (x(i),y(i)) za i=1,2,...,n, gdje je N broj elemenata vektora x i y. Ukoliko broj elemenata u x i y nije isti umjesto grafika dobićemo poruku greške da se dimenzije ne slažu. Vektori x i y ne 70

78 MATLAB for Windows moraju oba biti vektori vrste ili vektori kolone, već jedan može biti kolona a drugi vrsta, i obrnuto. Probati plot(x,y'). Posebno je značajna primjena operatora plot za crtanje grafika funkcija sa jednom promjenljivom y=f(x). Primjer Nacrtati grafik funkcije y=xsin 2 (πx) u intervalu -4 x 4.» x=-4:.1:4;» y=x.*sin(pi*x).^2;» plot(x,y) Slika 3.3. Grafik funkcije y=xsin 2 (πx) za -4 x 4 sa korakom VI[E FUNKCIJA NA ISTOM CRTE@U Postoji i mogućnost predstavljanja kolona matrice dimenzija (mxn). Ako matrica y ima n kolona onda naredbom plot(y) dobijamo n krivih od kojih svaka predstavlja grafik po jedne kolone matrice y. Primjer Nacrtati grafik pojedinih kolona matrice: 71

79 Grafika y = » y=[1-1 3;2 3 0;2 5-1; ; ;-2 2 1];» plot(y) Vidimo da je svaka kolona predstavljena različitim tipom, odnosno bojom linije. Kao nezavisno promjenljiva uzet je redni broj elementa u koloni. Tako je prvi grafik dobijen spajanjem tačaka (i,y(i,1)) za sve vrijednosti i Slika 3.4. Grafičko predstavljanje matrice po kolonama I u ovom slučaju je moguće predstaviti sve kolone u funkciji nezavisno promjenljive x. Primjer Nacrtati grafik pojedinih kolona matrice y u funkciji vrijednosti x. 72

80 1 2 4 x = 5 7 8» x=[ ];» y=[1-1 3;2 3 0;2 5-1;5 4-2; ;-2 2 1];» plot(x,y) MATLAB for Windows y = Dužina vektora x i kolona matrice y mora biti ista. Ako to nije slučaj, onda će računar provjeriti da možda dužina vrsta u matrici y nije ista kao i dužina vektora x. Ukoliko jeste, onda će nacrtati vrste matrice y u funkciji od x, a ako nije, javiće grešku da se dimenzije ne slažu Slika 3.5. Grafik matrice y(x) Prethodni postupak se može iskoristiti za crtanje više funkcija na istom grafiku. Primjer Nacrtati funkcije y=x 2 i y=x 3 u intervalu -1 x 1.» x=-1:0.02:1;» y1=x.^2;» y2=x.^3;» y=[y1;y2]';» plot(x,y) 73

81 Grafika Slika 3.6. Dvije funkcije na istom grafiku Više funkcija se može nacrtati na istom grafiku i na sljedeći način: plot(x1,y1,x2,y2,...,xn,yn). Primjer Nacrtati na istom grafiku funkcije: y=x za -1 x 1, y=xe x za 0 x 1, y=sin(πx) za -1 x 0.» x1=-1:.1:1;» y1=x1;» x2=0:.1:1;» y2=x2.*exp(x2);» x3=-1:.1:0;» y3=sin(pi*x3);» plot(x1,y1,x2,y2,x3,y3) Slika 3.7. Crtanje više funkcija na istom grafiku VRSTE LINIJA I OZNAKA 74

82 MATLAB for Windows U dosadašnjim primjerima odabiranje tipa linija za crtanje grafika je vršeno automatski ili, kako se često kaže, po defaultu. Tip linije za crtanje pojedinih grafika se može zadavati po želji. Na raspolaganju su puna linija, isprekidana, tačkasta, crta-tačka-crta, kao i označavanje vrijednosti sljedećim znacima:., o, x, *, +. Naredba plot(x1,y1,'-',x2,y2,'-.',x3,y3,'o') daje prvu funkciju iscrtanu punom linijom, drugu linijom crta-tačka-crta, a treću označenu simbolom o. Tipovi linija i simbola koji se mogu koristiti dati su u tabeli 3.1. Tipovi linija Tipovi simbola puna linija - tačka. tačkasta : slova o ili x tačka crta -. plus + crtkana -- zvijezdica * Tabela 3.1. Tipovi linija i simbola za naredbu plot Možemo mijenjati i boju kojom je nacrtana pojedina kriva. Tako na primjer plot(x1,y1,'g',x2,y2,'*r') daje zeleni grafik funkcije y1(x1), a funkiju y2(x2) označava crvenim zvjezdicama. Moguće boje su date u tabeli 3.2. Boje žuta (yellow) magenta (magenta) cijan (cyan) crvena (red) zelena (green) plava (blue) bijela (white) crna (black) y m c r g b w k Tabela 3.2. Boje i njihove skraćenice Napomenućemo da ukoliko printer nije u boji onda se linije različitih boja na printeru prenose različitim tipovima linija OZNA^AVANJE OSA I GRAFIKA 75

83 Grafika Moguće je označiti ose grafika, ispisati njegov naziv, kao i unijeti proizvoljan broj oznaka na proizvoljnim mjestima. Nacrtajmo grafik y=sin(x) u intervalu -2π x 2π.» x=linspace(-2*pi,2*pi,40);» plot(x,sin(x)) Prije svega uočimo da funkcija x=linspace(a,b,n) služi za kreiranje vektora koji je isti kao vektor x=a:(b-a)/(n-1):b. Ako se n izostavi pretpostavlja se vrijednost n=100. Pošto smo na ekranu dobili grafik, poslije pritiska na bilo koju tipku, vraćamo se na komandni displej. Naziv grafika ćemo unijeti sa:» title(' Grafik funkcije y=sin(x) ') Ose možemo označiti kucajući:» xlabel(' vrijednost nezavisno promjenljive x ')» ylabel(' vrijednost funkcije ') Proizvoljan tekst, na primjer abc, na grafiku, na mjestima sa kooordinatama (x1,y1), (x2,y2),...,(xn,yn) se unosi sa:» text([x1 x2... xn],[y1 y2... yn],'abc') Koordinate su zadate u jedinicama koje važe za tekući grafik. U našem primjeru sa sinusoidom unesen je tekst dvije periode u poziciji po (x,y)=(0.5,0.5).» text(0.5,0.5,'dvije periode') Ukoliko na svakom mjestu treba unijeti tekst različite sadržine, npr. text1, text2,...,textn, onda to činimo sa:» text([x1 x2... xn],[y1 y2... yn],['text1';'text2';... ;'textn']) Postoji mogućnost da se tekst unese na poziciju koja se može specificirati mišem. Poslije zadavanja naredbe» gtext('stavi poziciju') na grafiku se pojavi oznaka pokazivača miša kojim kliknemo na poziciju gdje želimo da se nalazi tekst. 76

84 MATLAB for Windows Grafik funkcije y=sin(x) Stavi poziciju dvije periode vrijednost nezavisno promjenljive x Slika 3.8. Označavanje osa, naziva i unošenje teksta na grafiku Tako e, napomenimo da se sličan način za unošenje teksta, označavanje osa i naslova grafika može primjeniti za sve 2-D i 3-D grafike.» grid Mreža na grafiku se crta naredbom: GRAFICI KOMPLEKSNIH FUNKCIJA Naredbu plot možemo koristiti i u slučaju kompleksnih funkcija ili matrica. Ako je z kompleksna funkcija onda je plot(z) isto što i plot(real(z),imag(z)), odnosno isto što i crtanje imaginarnog dijela u funkciji od realnog. Tako, na primjer unošenjem:» t=linspace(-pi,pi);» z=exp(i*t);» plot(z) dobijamo isto što i sa plot(cos(t),sin(t)), odnosno plot(x,y), gdje je x=cos(t) i y=sin(t), (x 2 +y 2 =1). 77

85 Grafika Slika 3.9. Grafik kompleksne funkcije z=e it za -π t π. Kada je riječ o kompleksnim funkcijama recimo da se one ipak najčešće predstavljaju na taj način što se odvojeno crtaju amplituda i faza kompleksne funkcije u zavisnosti od nezavisno promjenljive, što se dobija sa: plot(t,abs(z),t,angle(t)). Drugi često zahtijevani oblik je predstavljanje realnog i imaginarnog dijela u funkciji nezavisno promjenljive, što se dobija sa plot(t,real(z),t,imag(z)) SKALIRANJE OSA Mogli smo uočiti na prethodnom primjeru da, iako je grafik koji smo crtali u analitičkom obliku predstavljao krug, nijesmo to dobili i na grafiku. Ukoliko želimo da zadati krugovi i na grafiku ostanu krugovi, odnosno da zadati kvadrati budu kvadrati i na crtežu, onda treba unijeti axis('square'). Naredbom axis('equal') podešavamo da je priraštaj po x i y osi isti. Na prvobitne dimenzije okvira grafika 78

86 MATLAB for Windows vraćamo se sa axis('normal'). Na slici 3.9. prikazani su grafici koji se dobijaju u ovom slučaju.» t=linspace(-pi,pi);» z=exp(i*t);» axis('square')» plot(z)» axis('normal')» axis('equal') Ose x i y se postavljaju automatski na osnovu maksimalne i minimalne vrijednosti koordinata x i y. Ako želimo sami zadati u kojim okvirima će biti nacrtan grafik onda to činimo naredbom axis([xmin xmax ymin ymax]). Okvir za crtanje grafika će biti postavljen od xmin do xmax i od ymin do ymax. Unijeti okviri se zadržavaju i za naredne grafike sve do njihove promjene ili vraćanja na automatsko skaliranje. Vraćanje na automatsko skaliranje se vrši sa axis('axis'). Naredbom axis('normal') poništavaju se sva ograničenja vezana za grafik. Naredbom axis dobijamo informaciju o trenutnim dimenzijama grafika. Primjer Nacrtati funkciju y=sin(x) za -4 x 4, sa automatskim skaliranjem osa, a zatim postaviti da opseg po y-osi bude od -1.5 do 1.5.» x=-4:.2:4;» plot(x,sin(x))» axis([ ])» plot(x,sin(x))» axis Dakle, kao rezultat naredbe axis u ovom slučaju pored grafika dobija se i tekući opseg: ans = Ako ne želimo da prikažemo koordinantne ose otkucaćemo axis('off'), dok za ponovni povratak zadajemo axis('on'). Naredba [A,B,C]=axis('state') vraća vijednosti koje ukazuju na trenutno skaliranje crteža. A može biti 'auto' (automatsko skaliranje) ili 'manual' (ručno), B ukazuje da li se prikazuju koordinantne ose ('on' ili 'off') i C može imati vrijednosti 'xy' ili 'ij', a koristi se za prikazivanje funkcija dvije promjenljive ili matrice, i biće naknadno objašnjeno. 79

87 Grafika Napomena: Ne zaboravite da se poslije jednog grafika vratite na automatsko skaliranje ili promijenite skaliranje osa. Treba pomenuti i mogućnost zumiranja grafika (prikazivanja jednog njegovog dijela) pomoću miša. Ova akcija se obavlja naredbom zoom on i klikom mišem na dio grafika koji želimo prikazati. Na cijeli grafik se vraća naredbom zoom out. Primjer Nacrtati funkciju y=x 1/3 za 0 x 20 i izvršiti zumiranje. Vratiti se na grafik default veličine.» x=0:.1:20;» y=x.^(1/3);» plot(x,y)» zoom on» zoom out Slika Zumirani grafik i grafik prirodne veličine GRAFICI POLARNIH FUNKCIJA Funkcija ρ=ρ(ϕ) zadata u polarnom koordinantnom sistemu, crta se naredbom polar(ϕ,ρ). Primjer Nacrtati kardioidu r=a(1+cos(ϕ)), za i=2 i -π ϕ π.» a=2;» phi=-pi:pi/40:pi;» r=a*(1+cos(phi));» polar(phi,r)» polar(phi,r,'g*') 80

88 MATLAB for Windows Vidimo da i ovdje kao kod naredbe plot važe pravila za iscrtavanje linija i boja. Poslednjom naredbom se crta kardioida u zelenoj linija kao niz zvijezdica Slika Grafik funkcije u polarnom koordinatnom sistemu Na grafiku se može označiti naslov, dok je radijalna mreža neposredno ugra ena GRAFICI SA LOGARITAMSKOM PODJELOM Grafici funkcija mogu biti predstavljeni i u logaritamskim razmjerama i to logaritamski samo po x-osi, samo po y-osi ili po obije ose. Nezavisno promjenljiva, odnosno vektor u logaritamskoj razmjeri se može generisati naredbom x=logspace(d1,d2,n). Prethodna naredba generiše n vrijednosti vektora x od 10 d1 do 10 d2. Ako zadamo x=logspace(d1,d2), onda se uzima n=50. Moguće je koristiti i x=logspace(d1,pi,n) što daje n vrijednosti od 10 d1 do π. Crtanje grafika sa logaritamskom podjelom nezavisno promjenljive se vrši sa semilogx(x,y). Primjer Nacrtati y=1/(x 3 +x 2 -x+1) za 0.1 x 100.» x=logspace(-1,2,50);» y=1.0./(x.^3+x.^2-x+1);» semilogx(x,y,'g-')» grid 81

89 Grafika Logaritamska razmjera se može napraviti i po y-osi naredbom semilogy(x,y). Primjer Nacrtati y=e x2 +x-1 i y 1 =e x3-2 x 2 za 0 x 5.» x=0:.1:5;» y=exp(x.^2+x-1);» y1=exp(x.^3-2*x.^2);» semilogy(x,y,x,y1)» grid Slika Crtanje u logaritamskoj razmjeri po x-osi Slika Logaritamska raspodjela po y-osi Konačno, moguća je logaritamska raspodjela i po x-osi i po y-osi, naredbom loglog(x,y). Primjer Nacrtati y=1/(x.^3+x.^2+x+1) za 0.1 x 10.» x=logspace(-1,1,50); 82

90 MATLAB for Windows» y=1./(x.^3+x.^2+x+1);» loglog(x,y)» grid Slika Logaritamska raspodjela po x i y-osi STEPENASTI (BAR) GRAFICI Stepenasti ili bar grafici se dobijaju naredbom bar(y) Primjer Nacrtati y=sin(x) za -π x π.» x=-pi:pi/20:pi;» y=sin(x);» bar(y) Slika Bar grafik Slična funkciji bar je i funkcija stairs koja crta stepenasti grafik ali bez vertikalnih linija. 83

91 Grafika Primjer Nacrtati stepenasti dijagram funkcije y=e -x2 /2 sin(x) u granicama -4 x 4.» x=-4:.1:4;» y=exp(-x.^2/2).*sin(x);» stairs(x,y) Slika Stepenasti grafik PRIKAZ DISKRETNIH VELI^INA U praksi se veoma često radi sa diskretnim veličinama. To su veličine koje su definisane samo u tačno utvr enim vrijednostima nezavisno promjenljive. Za prikaz diskretnih vrijednosti u MATLAB-u se može koristiti i funkcija stem. Primjer Nacrtati diskretnu funkciju x(n)=(3/4) n za n od 1 do 20, kao i vrijednost korijena ove funkcije.» n=1:20;» x=(3/4).^n;» stem(n,x)» stem(n,sqrt(x),':') 84

92 MATLAB for Windows Slika Prikazivanje stem funkcijom diskretnih promjenljivih Pomoću ove funkcije nije moguć istovremeni prikaz više funkcija. Tako bi naredba stem(x,y,x1,y1) vratila poruku o grešci - previše ulaznih argumenata POPUNJENI CRTE@I Kod prikazivanja funkcija jedne promjenljive ponekad je veoma značajno označiti područnje ispod grafika. Za popunjavanje se u MATLAB-u koristi funkcija fill(x,y,'b'). Ovom naredbom crta se funkcija y=f(x) i u boji b popunjava prostor izme u funkcije y=x i date funkcije. Da bi se popunio prostor izme u crteža i x ose moramo se poslužiti malim trikom koji će biti prikazan u sljedećem primjeru. Primjer Nacrtati funkciju y=exp(-x 2 ) u granicama 0 x 4 i prostor ispod grafika obojiti crvenom bojom.» fill([0 0:.1:4 4 0],[0 exp(-(0:.1:4).^2) 0 0],'r') Vidimo da je nezavisno promjenljiva definisana od 0 do 4 i da se vraća na nulu i u skladu sa time je definisana vrijednost funkcije Slika Popunjavanje ispod crteža pomoću naredbe fill 85

93 Grafika GRAFICI KOMPLEKSNIH VELI^INA U MATLAB-u je razvijeno nekoliko mogućnosti istovremenog grafičkog prikaza amplitude i faze kompleksnih funkcija jedne promjenljive. Funkcija compass(z) prikazuje u obliku strelica sa početkom u koordinantnom početku amplitudu i fazu kompleksne funkcije. Dužina strelice predstavlja njenu amplitudu, a pravac ukazuje na fazu kompleksne promjenljive. Ovoj funkciji je slična funkcija feather(z), s tim što se sada počeci strelica nalaze u ekvidistantnim tačkama. Funkcija compass(z) je identična funkciji compass(real(z), imag(z)). Primjer Prikazati kompleksnu funkciju Z=te jsin(t) za vrijednosti argumenta -2π t 2π pomoću funkcija compass i feather.» t=-2*pi:pi/20:2*pi;» Z=t.*exp(j*sin(t));» compass(z,'m-')» feather(z) Slika Prikaz faze i ugla kompleksnih veličina pomoću funkcija compass i feather GRAFICI SA POKRETNIM KRAJEM U MATLAB-u je razvijena funkcija comet koja grafik crta postepeno, sa posebno označenim krajem. Funkcija comet(x,y) vrši iscrtavanje funkcije u funkciji radijusa ϕ. 86

94 MATLAB for Windows Primjer Nacrtati uopštenu hipocikloidu zadatu u funkciji parametra ϕ na sljedeći način: x=(b-a)cosϕ+λacos((b-a) ϕ/a) i y=(b-a)sinϕ-λasin((b-a)ϕ/a), b>a>0. Uzeti b=6, a=1 i λ=2.5.» b=6;a=1;l=2.5;» phi=0:pi/40:2*pi;» x=(b-a)*cos(phi)+l*a*cos((b-a)*phi/a);» y=(b-a)*sin(phi)-l*a*sin((b-a)*phi/a);» comet(x,y) Slika Grafički prikaz funkcije sa pokretnim krajem 3.2 GRAFI^KO PREDSTAVLJANJE FUNKCIJA DVIJE PROMJENLJIVE I MATRICA Funkciju dvije promjenljive z=f(x,y) možemo predstaviti na više načina: linijskim crtežima, mrežastim dijagramima, osjenčenim površinama, konturnim crtežima, kao i nekim specijalizovanim grafičkim funkcijama TRODIMENZIONALNI LINIJSKI CRTE@ Funkcija plot3(x,y,z), gdje su x, y i z vektori istih dužina, crta linije z(x,y) u 3-D prostoru. I ovdje važe pravila za oblik linija kojim se crta kao kod funkcije plot. Primjer Nacrtati spiralu promjenljivog radijusa.» t=0:pi/50:10*pi; 87

95 Grafika» plot3(t.*sin(t),t.*cos(t),t) Slika Spirala sa rastućim poluprečnikom Postoje i funkcije fill3 i comet3 koje su adekvatne odgovarajućim funkcijama jedna promjenljive. [to se označavanja grafika tiče, kod funkcija dvije promjenljive ništa se značajnije ne mijenja u odnosu na funkcije jedna promjenljive. I ovdje postoje funkcije title, xlabel, ylabel, text, gtext i grid, a, razumljivo, dodata je i funkcija zlabel. [to se tiče skaliranja osa, naredba axis ima sada tri para argumenata koji predstavljaju granice grafika po sve tri ose. Ovdje postoji mogućnost da se sa axis('ij') pre e u mod crtanja gdje je koordinantni početak u gornjem lijevom uglu. Sa axis('xy') vrši se vraćanje u grafički mod sa koordinantnim početkom u lijevom donjem uglu (ovo je po defaultu) "TRODIMENZIONI" GRAFICI MRE@ASTIH POVR[INA Elementarna funkcija za predstavljanje mrežom je mesh(z). Nezavisno promjenljive se generišu naredbom: meshdom(xmin:korakx:xmax,ymax:koraky:ymax) gdje su sa min i max označene gornje i donje granične vrijednosti nezavisno promjenljivih, a sa korak korak odabiranja. Tako e se nezavisno promjenljive mogu kreirati naredbom meshgrid(x,y), koja je adekvatna naredbi meshdom kada je redosljed elemenata u vektoru y obrnut onom iz funkcije meshgrid. Naredba meshgrid(x,x) je adekvatna naredbi meshgrid(x). Opšti oblik neredbe mesh(x,y,z,c) crta grafik sa koordinatama vektora x i y funkciju z u bojama c. Naredbi mesh(x,y,z) je adekvatna naredba mesh(x,y,z,z) Primjer Nacrtati funkciju z=sin(x 2 +y 2 )/(x 2 +y 2 ) za -π<x,y<π

96 MATLAB for Windows» [x,y]=meshdom(-pi:pi/10:pi,-pi:pi/10:pi);» z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);» mesh(z) Prilikom definisanja promjenljive z dodata je vrijednost veoma male veličine eps da bi se izbjegla pojava nedefinisanog izraza za x=0 i y=0, oblika sin(0)/0. Komanda mesh ima i alternativne oblike; tako mesh(z,[az el]) daje grafički prikaz funkcije z(x,y) sa azimutom (horizontalnom rotacijom) az stepeni i elevacijom (vertikalnom rotacijom) el stepeni. Ukoliko ne zadamo ove vrijednosti (kao što to nijesmo učinili u prethodnom primjeru) automatski se uzima az=-37.5 o i el=30 o. Ista ova operacija se može obavljati sa naredbom view(az,el) ili view([az,el]). Alternativno, ova naredba sa tri argumenta daje pogled u pravouglim koordinatama. Trenutnu matricu transformacije dimenzija dobijamo sa T=view, a trenutni azimut i elevaciju dobijamo sa [az,el]=view. Opcija view(2) daje dvodimenzionalni prikaz az=0 o i el=90 o dok se sa view(3) vraćamo na default vrijednosti az=-37.5 o i el=30 o Slika Mrežasti crtež funkcije dvije promjenljive a) mesh(z) b) mesh(z,[40,80]) Funkcija meshz je veoma slična funkciji mesh. Crta mrežastu površ sa linijama koje su paralelne z-osi. Primjer Napisati naredbe kojima se iscrtava hiperbolički paraboloid (sedlasta površ) z=x 2 -y 2 u granicama od -2 do 2 i po x-osi i po y-osi.» [x,y]=meshdom(-2:.2:2,-2:.2:2);» z=x.^2-y.^2;» meshz(z) 89

97 Grafika Slika Sedlasta površ - hiperbolički paraboloid Crtanje mrežaste površi može da se obavlja i pomoću funkcije waterfall koja iscrtava mrežu samo po jednoj koordinati. Prmjer Nacrtati funkciju z=xyexp(-x 2 ) pomoću funkcije waterfall.» z=x.*y.*exp(-x.^2);» waterfall(z)» waterfall(z),view([20 75]) Druga varijanta prikazuje funkciju waterfall pod odgovarajućim azimutom i elevacijom; ovdje ne funkciioniše waterfall(z, [20 75]). Ostala su pravila kao kod funkcije mesh GRAFICI OBOJENIH POVR[INA Za crtanje obojenih površina koriste se funkcije surf, surfl i surfc. Najvažnija funkcija ovog oblika je surf čiji je opšti oblik surf(x,y,z,c) crta matricu z u funkciji x i y u bojama definisanim sa c. Ako se c izostavi podrazumjeva se c=z. Funkcija surf(z) ima isti oblik kao mesh. Primjer Nacrtati sombrero obojenu površinu iz primjera » surf(z) 90

98 MATLAB for Windows Slika Surf površina Funkcija surfl adekvatna je funkciji surf, pri čemu se može podešavati položaj izvora svijetlosti, parametri osvjetljavanja i difuzije okoline KONTURNI GRAFICI Predstavljanje funkcija dvije promjenjive konturnim (izo) linijama se vrši naredbom contour(z). Primjer Nacrtati konturni dijagram funkcije z=xysin(x 2 +y 2 )/(x 2 +y 2 ) za -π x,y π.» [x,y]=meshdom(-pi:pi/10:pi,-pi:pi/10:pi);» z=x.*y.*sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);» contour(z) Broj ravni presjeka se može proizvoljno mijenjati naredbom contour(z,n), gdje je n broj izo ravni. Kod funkcije contour(x,y,z,n,s), vektori x i y su nezavisno promjenljive, a s je string koji definiše tip linije kojim se crta po istim pravilima kojima se crtaju kod funkcije plot.» contour([-pi:pi/10:pi],[-pi:pi/10:pi],z,2,'r-') 91

99 Grafika Slika Konturni crtež funkcije dvije promjenljive a) contour(z) b) contour([-pi:pi/10:pi],[-pi:pi/10:pi],z,2,'r-') Konturne linije mogu biti nacrtane kroz tačno odre ene vrijednosti funkcije z. Tako, na primjer, ako želimo povući konturne linije kroz z=0.5, z=0.27 i z=-0.1, naredba je:» contour(z,[ ]) U opštem slučaju, naredbom contour(z,[z1 z2 z3...zn]) crtamo konture kroz zadate vrijednosti zi za i=1,2,...,n. Vrlo interesantna kombinacija se može napraviti jednovremenim korišćenjem naredbi contour i quiver. Naredbom quiver(z), gdje je z kompleksna matrica, prikazujemo amplitudu i pravac svakog elementa matrice z koristeći strelice. Dužina strelice je proporcionalna amplitudi elementa. Ukoliko zadamo dvije realne ulazne matrice x i y, naredba quiver(x,y) daje grafik kao da smo zadali quiver(x+i*y). Tip linija za crtanje strelica možemo mijenjati (kao i prilikom primjene naredbe plot) sa quiver(x,y,'tip linije'). Da bi ilustrovali primjenu naredbe quiver objasnićemo još jednu naredbu, gradient. Naredbom: [px,py]=gradient(z) numerički dobijamo parcijalne izvode matrice z: px=dz/dx i py=dz/dy. 92

100 MATLAB for Windows Ukoliko želimo zadati stvarna rastojanja odbiraka dx i dy u matrici z u pravcu x i y ose, treba koristiti [px,py]=gradient(z,dx,dy). Automatski se uzima dx=dy=1. Primjer Nacrtati ekvipotencijalne linije i linije polja ako je potencijal zadat sa z=sin(px)sin(py) za -1 x,y 1. (E=-grad(z)).» [x,y]=meshdom(-1:.08:1,-1:.08:1);» z=sin(pi*x).*sin(pi*y);» [zx,zy]=gradient(z);» contour(z),hold on,quiver(-zx,-zy);hold off Slika Ekvipotencijalne linije i linije polja Naredbe hold on i hold off će biti objašnjene kasnije. U sklopu diskusije o prikazima mrežastih površina i obojenih površi vidjeli smo da postoje funkcije meshc i surfc. Ove dvije funkcije, pored odgovarajućih grafika, prikazuju i konturni crtež u ravni x0y. Primjer Prikazati funkciju z=xexp(-x 2 -y 2 ) u granicama -2 x,y 2 istovremenim prikazom mrežaste površine i konturnog crteža, odnosno istovremenim prikazom obojene površine i konturnog crteža.» [x,y]=meshdom(-2:.2:2,-2:.2:2);» z=x.*exp(-x.^2-y.^2);» meshc(z)» surfc(z) 93

101 Grafika Slika D grafik meshc i surfc Funkcija contour kao i bilo koja grafička komanda ima svoj rezultat. U slučaju naredbe contour izlaz je niz brojeva koji predstavljaju pojedine izolinije konturnog grafika. Veoma često je potrebno označiti brojne vrijednosti koje predstavljaju pojedine izo linije. To se postiže naredbom clabel. Primjer Pomoću izolinija prikazati funkciju z=x/(x 2 +y 2 +1) za -2 x,y 2. Prikazati i labele izolinija.» [x,y]=meshdom(-2:.2:2,-2:.2:2);» z=x./(x.^2+y.^2+1);» A=contour(z); Konturni crtež je nacrtan a u promjenljivoj A čuvaju se podaci o linijama koje čine crtež. Sa» clabel(a) vrši se upisivanje vrijednosti labela. Naredbom» clabel(a,'manual') vrši se ručno - manuelno upisivanje pojedinih labela pritiskom miša na izoliniju. Kada se želi završiti unos dovoljno je kliknuti na dio grafičkog prozora van konturnog dijagrama. 94

102 MATLAB for Windows Slika Konturni crtež sa unijetim labelama izolinija Postoji još jedna funkcija za prikaz konturnih crteža contour3 kojom se prikazuje konturni crtež u 3-D. Primjer Prikazati funkciju z=exp(-x 2 -y 2 ) kao konturni crtež u tri dimenzije.» z=exp(-x.^2-y.^2);» contour3(z)» contour3(z,40) Slika Konturni crteži u 3-D: a) contour3(z), b) contour3(z,40) PRIKAZIVANJE FUNKCIJE POMO]U KOLORNIH MAPA Grafici funkcije dvije promjenljive mogu se prikazati i pomoću različitih boja. Za to služe funkcije imagesc(x,y,z) i pcolor(x,y,z) (alternativno ove funkcije mogu biti imagesc(z) i pcolor(z)). x i y predstavljaju nezavisno promjenljive a z funkcije dvije promjenljive x i y

103 Grafika Primjer Nacrtati pomoću funkcije imagesc funkciju dvije promjenljive z=xysin(x 2 +y 2 ) gdje su -2 x,y 2.» x=-2:.2:2;» y=-2:.2:2;» [X,Y]=meshdom(x,y);» z=x.*y.*sin(x.^2+y.^2);» imagesc(x,y,z) » pcolor(x,y,z) Slika imagesc prikaz funkcije Istu funkciju možemo prikazati i pomoću funkcije pcolor: Slika pcolor prikaz funkcije Funkcijom shading bliže specificiramo način primjene naredbe pcolor. Naredbom shading interp dobijamo kolornu mapu bez mreže u kojoj se svaka tačka interpolira, dok shading flat prikazuje crtež bez mreže sa istom bojom unutar 96

104 MATLAB for Windows kvadrata. Default podešavanje sa slike 3.30, sa mrežom i istom bojom unutar kvadrata, dobijamo sa shading faceted Slika a) shading interp; b)shading flat PRIKAZIVANJE CILINDARA I SFERA Za prikazivanje cilindara služi funkcija cylinder. Funkcija [x,y,z]=cylinder([r K],n) odre uje koordinate (ali ne crta) cilindar sa poluprečnikom R i sa koeficijentom rasta K u n tačaka. Podrazumijevane vrijednosti su su R=1, K=1 i n=20. Funkcija cylinder([r K],n) vrši i crtanje cilindra. Primjer Demonstrirati na nekoliko primjera korišćenje funkcije cylinder.» cylinder([2 1])» cylinder([1 1])» cylinder([1 5])» [x,y,z]=cylinder([1 1],30);» surf(x,y,z) Slika Prikaz cilindra: a) R>K; a) R<K 97

105 Grafika Analogna funkcija postoji za prikazivanje sfera. Oblik naredbe [x,y,z]=sphere(n) odre uje vrijednosti koordinata sfere x, y i z ali ne crta sferu. Vrijednost n=20 se podrazumjeva. Funkcija sphere(n) će izvršiti i crtanje sfere. 3.3 GRAFI^KI PRIKAZ FUNKCIJA TRI PROMJENLJIVE Očigledno je na ekranu teško prikazati funkciju tri promjenljive a ponekad je teško i zamisliti neki pogodan način prikazivanja funkcije tri promjenljive. MATLAB se služi sljedećom logikom: domen nezavisno promjenljivih predstavlja kvadar, svakoj vrijednosti funkcije kao kod kolornih mapa odgovara odre ena boja; ne mogu se prikazati sve vrijednosti već samo presjeci sa nekim ravnima. Za kreiranje trodimenzionalne oblasti nezavisno promjenljivih služi naredba meshgrid dok za crtanje funkcije služi naredba slice. Primjer Prikazati funkciju tri promjenljive v=xexp(-x 2 - y 2 - z 2 ) u granicama -1 x,y,z 1.» [x,y,z]=meshgrid(-1:.2:1,-1:.2:1,-1:.2:1);» v=x.*exp(-x.^2-y.^2-z.^2);» slice(v,[3 6 11],11,[1 5],11) Slika Prikaz funkcije tri promjenljive Na slici vidimo slice prikaz funkcije tri promjenljive. Kroz ravni normalne na ose u odbircima [3 6 11], 11 i [1 5], po x, y i z osi respektivno, prikazani su kolorni dijagrami. Posljednji parametar predstavlja broj redova u volumenu v jer kao što znamo MATLAB posjeduje mogućnost prikazivanja samo matrica dok se 3-D polje prikazuje u obliku matrice. Recimo, naredbom [x,y,z]=meshgrid(vx,vy,vz) dobijamo matrice x, y i z. Dimenzije ovih matrica su (nx* ny) x nz (gdje su nx, ny i nz dužine vektora vx, vy i vz). 98

106 MATLAB for Windows 3.4 PROMJENA DIMENZIJA GRAFIKA (VI[E GRAFIKA U GRAFI^KOM PROZORU) U dosadašnjim primjerima smo dobijali grafik nacrtan preko čitavog ekrana čije su dimenzije bile automatski postavljene. Moguće je izvršiti podjelu ekrana na nxm djelova i crtati grafike u svakom od njih posebno. To se čini naredbom subplot(mnp) ili subplot(m,n,p), koja dijeli ekran na m djelova po horizontali i n djelova po vertikali, a grafik se crta u p-tom dijelu ekrana. Moguće vrijednosti za m i n su od 1 do 9. Tako sa subplot(221),plot(x,y) dijelimo ekran na 2x2 i crtamo grafik u prvom dijelu, a sa subplot(212),plot(x,y) dijelimo ekran na 2x1 i crtamo grafik u drugom dijelu. Primjer Nacrtati na četiri odvojena grafika funkcije: y=x za -1 x 1, y=e x za 0 x 1 i z=sin(2π(x 2 +y 2 )) za -1 x,y 1 konturno i mrežom.» x1=-1:.1:1;» y1=x1;» subplot(221),plot(x1,y1)» x2=0:.05:1;» y2=x2.*exp(x2);» subplot(222),plot(x2,y2)» [x3,y3]=meshdom(-1:.1:1,-1:.1:1);» z=sin(2*pi*(x3.^2+y3.^2));» subplot(223),mesh(z)» subplot(224),contour(z) Slika Crtanje više grafika na jednom ekranu 99

107 Grafika Treba napomenuti da podjela ekrana, zadata naredbom subplot, ostaje i za naredne grafike. Tako bi poslije zadnjeg primjera ekran ostao podijeljen na četiri dijela i svi grafici bi bili crtani na četvrtini ekrana. Zadavanje nove podjele se definiše zadavanjem novih parametara u subplot. Na čitav ekran se vraćamo sa subplot(111). Napomenimo da se zadavanjem orijentacije za štampanje grafika (o čemu će biti riječi), dimenzije odštampanog grafika mogu dodatno mijenjati. Na ovaj način naredbom subplot dobijamo grafike jednake veličine. Na drugi način naredbom axes možemo dobiti grafike koji su nejednake veličine. Naredbom axes('position',[px py sx sy]) definišemo poziciju grafika od tačke px po x-osi i py po y-osi (relativne koordinate-donji lijevi ugao ekrana je koordinata (0,0) gornji desni ugao je (1,1)) a sx i sy su veličine grafika u relativnom iznosu. Treba reći da funkcija axes definiše ose grafika a da je position jedna od osobina osa. O ovim osobinama biće više riječi u šestom poglavlju. Primjer Nacrtati tri odvojena grafika: y=x 2-2x+1 za -1 x 1 od [ ], prikazati funkciju z=xysin(2πx 2 ) u granicama [ ] mrežastim dijagramom i u granicama [ ] konturni dijagam.» x1=-1:.1:1;» y1=x1.^2-2*x1+1;» axes('position',[ ])» plot(x1,y1)» [x2,y2]=meshdom(-1:0.1:1,-1:0.1:1)» z2=x2.*y2.*sin(2*pi*x2.^2);» axes('position',[ ])» mesh(z2)» axes('position',[ ])» contour(z2) Slika Više grafika nejednake veličine na ekranu

108 MATLAB for Windows 3.5 RAD SA VI[E OTVORENIH GRAFI^KIH PROZORA U programskom paketu MATLAB postoji mogućnost rada sa više istovremeno otvorenih grafičkih prozrora. Grafički prozor se definiše naredbom figure, i to na jedan od sljedeća dva načina: rednim brojem otvorenog prozora figure(rdbroj) ili imenom figure('name','ime prozora'). Primjer U prvom grafičkom prozoru prikazati funkciju y=x u granicama -1 x 1 a u drugom prikazati funkciju y=x 2 u istim granicama kao na prethodnom grafiku.» figure(1)» x=-1:.1:1;» plot(x,x)» figure(2)» plot(x,x.^2) Grafički prozor u MATLAB-u posjeduje niz osobina čije se vrijednosti mogu dobiti naredbom get; na primjer, osobine prvog grafičkog prozora dobijamo sa:» get(1) Grafički prozor posjeduje vrijednost koja zapravo predstavlja vrijednost pomoću koje se može upravljati grafikom. Na primjer, definišimo treći grafički prozor:» a=figure(3); a osobine ovog grafičkog prozora se mogu dobiti sa get(3) ili sa» get(a)» gcf ans = 3 Prozor koji je trenutno aktivan može se dobiti sa gcf Vrijednost pojedine osobine može se saznati na sljedeći način get(d,'osobina1', 'Osobina2', 'Osobina3',...) gdje d definiše grafički prozor a Osobina definiše traženu osobinu. Tako informaciju o veličini u kojoj se mjere grafici na ekranu dobijamo sa:» get(1,'units') 101

109 ans = pixels Grafika Znači tekući grafik se mjeri u pikselima (ekranskim tačkicama). Prozor se iz komandne linije može zatvoriti naredbom close. Tako naredba:» close(3) briše treći grafički prozor. Kao što smo rekli, grafički prozori se mogu definisati i imenom na jedan od sljedeća dva načina:» figure('name','dodatak') gdje, kao što vidimo, Name predstavlja osobinu prozora - njegovo ime koje stoji u naslovnoj liniji prozora. Ovakava prozor se može zatvoriti na sljedeći način» close('dodatak') dok se svi grafički prozori zatvaraju naredbom» close all Osobinama grafičkog prozora kao i o detaljima upravljanjem grafičkog prozora biće posvećena šesta glava. 3.6 NAREDBE ZA ELEMENTARNU KONTROLU BOJA MATLAB posjeduje niz naredbi i mogućnosti za kontrolu grafika i ostalih elemenata grafičkog okruženja. Veoma važan dio tih mogućnosti odnosi se na upravljanje bojama. Zbog važnosti ovih mogućnosti veliki dio upravljanja bojama može se obavljati kroz zasebne funkcije koje ćemo ovdje opisati. Naravno, upravljanje bojama odnosi se prije svega na one grafičke komande kod kojih je boja važan činilac kakve su mesh, surf, pcolor itd. Jednu funkciju ove vrste smo već upoznali (shading). Važna funkcija za kontrolu definisanja boja grafika je funkcija colormap(paleta). Ovom funkcijom se definiše kojim će skupom boja biti prikazani grafici na ekranu. Predefinisane vrijednosti za promjenljivu paleta su date u sljedećoj tabeli. paleta hsv Opis palete Nijanse zasićenosti 102

110 MATLAB for Windows gray hot cool bone coppe pink prism jet flag Linearna siva boja Crno-crveno-žuto-bijela kombinacija Osjenčena cijan i magenta kombinacija Nijanse sivog sa dodatcima plave boje Linearna bakarna boja Pastelno osjenčena ljubičasta mapa Prizmatična kolorna mapa Varijanta hsv Naizmjenično plavo-crvena-bijela Tabela 3.3. Pregled raspoloživih kolornih mapa Primjer Na mrežastom dijagramu funkcije z=xsin(x 2 +y 2 )/(x 2 +y 2 ) demonstrirati naredbu colormap.» [x,y]=meshdom(-2:.2:2,-2:.2:2);» z=x.*sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);» mesh(z)» colormap(hsv)» colormap(gray)» colormap(hot)» colormap(cool)» colormap(bone)» colormap(copper)» colormap(pink)» colormap(prism)» colormap(jet)» colormap(flag) Treba napomenuti da su hsv, gray,..., flag matrice dimenzija 64x3. Svaka vrsta matrica predstavlja jednu boju. Boje su predstavljene sa tri broja od 0 do 1: prvi broj predstavlja crveno, drugi zeleno, treći plavo (ovakav model se naziva rgb). Pored predefinisanih matrica, iz tabele 3.3 argument funkcije colormap može predstavljati bilo koja matrica sa tri kolone. Tako naredba» colormap([0 1 0]) 103

111 Grafika daje crtež u jednoj boji - u ovom slučaju to je zelena. Problem sa naredbom colormap je to što se novim pozivom naredbe» colormap(flag) ne dobija kolorni crtež u 64 već je i dalje u jednoj boji. Vraćanje na matrice dimenzija 64x3 se može uraditi eksplicitnim definisanjem dimenzija matrice» colormap(ones(64,3))» colormap(flag) Važeću kolornu mapu možemo dobiti naredbom T=colormap. Naredbom brighten(sv) dobijamo tamniju, za -1 sv<0, odnosno svijetliju, za 1 sv>0, kolornu mapu. Kolorni grafici, i pored svoje "ljepote", često su nejasni. Naime, često se ne zna kojoj boji odgovara koja veličina funkcije. Iz tog razloga koristi se fukcija colorbar koja uz grafik, u formi legende, iscrtava pravougaonik sa označenim vrijednostima pojedinih boja. Dvije osnovne varijante ove funkcije su: colorbar('horiz') i colorbar('vert') kojima se iscrtava legenda boja horizontalno ili vertikalno. Za funkcije koje dio svog grafičkog prikaza obavljaju u formi različitih boja može se podešavati raspon boja koje su ove kolorne mape u stanju da prikažu. Informaciju o rasponu boja koji je trenutno aktivan može se dobiti naredbom» caxis ans = Vidimo da su boje skalirane izme u vrijednosti i Manuelno skaliranje se obavlja istom naredbom u obliku caxis([0 0.7]) Ovom naredbom vrijednosti funkcije koje su manje od 0 predstavljaju se bojom koja odgovara vrijednosti 0, a slično važi i za gornju granicu 0.7. Na automatsko skaliranje se prelazi naredbom caxis('auto') 3.7 GRAFI^KE KOMANDE Iz grafičkog prozora u komandni prozor se vraćamo pritiskom na bilo koje dugme. Sa komandnog ekrana se prikazuje trenutno aktivni grafički prozor sa 104

112 MATLAB for Windows figure(gcf). Za starije korisnike MATLAB-a potpuno je ravnopravna naredba shg (skraćeno od show graph). Sadržaj grafičkog prozora može se izbrisati potpuno ravnopravno naredbama clf i clg. Ako se zada naredba clf reset i clg reset, pored brisanja grafika do e i do resetovanja njegovih osobina (osobine grafika se postavljaju na početnu vrijednost). Brisanje grafika unutar trenutnih osa postiže se naredbom cla a naredbom cla reset, se pored brisanja grafika, postavljaju osobine grafika na početnu vrijednost. Ukoliko želimo nove grafike crtati preko prethodnih, a da oni ne budu izbrisani, onda treba unijeti hold on. Ova naredba se poništava sa hold off. Funkcija ishold vraća jedinicu ako je hold on uključen, a nulu ako je isključen [TAMPANJE I MEMORISANJE GRAFIKA I u ovoj verziji MATLAB-a postoji naredba meta za memorisanje grafika. Me utim, ovdje joj je namjena nešto drugačija nego u prethodnim DOS verzijama MATLAB-a. Funkcija meta čuva grafik u postskript formatu. Naredba meta fajl snima tgekući grafik u postskript formatu pod imenom fajl.ps. Naredba ima i oblik meta fajl -prekidač Gdje su mogući prekidači dati u tabeli 3.4. Prekidač -dps -dpsc Format Postskript format (default) Kolor postskript format -dps2 Postskript format nivoa 2 -dpsc2 Kolor postskript format nivoa 2 Tabela 3.4. Mogući prekidači i formati u naredbi meta Ipak, za memorisanje grafika i kompletnu grafičku obradu obično se koristi naredba print. Naredba print fajl potpuno je adekvatna naredbi meta. Opšti oblik naredbe print je: print [fajl] [-sredstvo] [-opcija] 105

113 Grafika Naredbom print snima se u fajl pripremljen za štampu na nekom od sredstava uz neku od opcija. Sredstva, pored onih kod naredbe meta, su i za enkapsulirani postskript deps, depsc, deps2, depsc2 kao i veliki broj štampača koji su podržani (HP Laser Jet, HP Paint Jet, Cannon, Epsonovi štampači itd), kao i fajlovi tipa gif ili pcx formata. Opcije su snimanje fajla u formatu HP plotera hgl - formatu -dhpgl, Adobe ilustrator fajlovi -dill, snimanje grafičkog objekta u.m fajlu -dmfile. Za slanje grafika na trenutno instalisani monohromatski štampač -dwin ili kolorni štampač - dwinc. Tako e moguće je smjestiti fajl u meta formatu u Clipboard -dmeta (ako se navede naziv fajla snimiće se pod ekstenzijom.wmf) ili u bitmapiranom formatu u Clipboard -dbitmap (ili u fajl pod ekstenzijom.bmp). Primjer Demonstrirati neke od opcija naredbe print.» print -dmeta» print -dbitmap Sa gornje dvije naredbe se u Clipboard (privremenu memoriju) smješta sadržaj ekrana. Ako se navede naziv fajla dobijamo u prvom slučaju fajl tipa WMF - Windows meta file a u drugom slučaju BMP - bitmapirani fajl. Oba ova fajla mogu importovati gotovi svi komercijalni programi, tekst procesori, Corel, itd. Naredbom» print -dwin šalje se sadržaj grafičkog prozora na trenutno instalisani monohromatski štampač, dok naredbom» print fajl1 -dhpgl kreiramo fajl1.hgl koji je tako e pogodan za dalju obradu. Kombinacija naredbi (izme u kojih se mogu naći naredbe za iscrtavanje grafika)» print fajl1» print fajl1 -append dovešće do snimanja fajla fajl1.ps, a drugom naredbom će postojećem grafiku biti dodat novi (dakle stari fajl neće biti prebrisan kao po defaultu). Ako želimo sačuvati grafik za naredne sesije primijenićemo naredbu» print fajl1 -dmfile pomoću koje dobijamo MATLAB funkciju fajl1.m koja se u nekoj od narednih sesija može pozvati naredbom» fajl1 čime će sadržaj grafičkog prozora biti rekonstruisan. 106

114 MATLAB for Windows Grafik će po pravilu biti iscrtan tako da je širina papira manja od njegove visine. Orijentacija se mijenja naredbom» orient landscape dok se na default portrait orijentaciju vraće sa» orient portrait 3.8 POKRETNE SLIKE - FILMOVI MATLAB posjeduje interesantnu mogućnost kreiranja pokretnih slika - filmova. Procedura za kreiranje filma izgleda ovako: Prvo se naredbom M=moviein(n) inicijalizuje prostor za smještanje n slika (frejmova) koje će činiti budući film. Matrica M posjeduje poslije ove naredbe n kolona. Zatim se nacrta pojedinačni grafik nekom grafičkom komandom. Da bi dobijeni grafik činio i-tu sliku filma i-toj koloni matrice M pridružuje se sadržaj grafika naredbom M(:,i)=getframe. Na kraju se odgovarajući film prikazuje naredbom movie(m,n) gdje je N opcioni parametar koji odre uje koliko puta će se prikazati matrica M. Podrazumjevana vrijednost je N=1. Za N<0 film se prikazuje obrnutim redosljedom slika. Primjer Prikazati Zemljinu kuglu u rotaciji. Da bi se izvršio ovaj zadatak poslužićemo se podacima koje koristi demo program earthmap. Ovaj program su kreirali MATLAB programeri da bi prikazali mogućnosti MATLAB-a. Dakle da bi realizovali ovaj primjer poslužićemo se datotekom topo.mat u kojoj se nalaze podaci koje koristi i program earthmap. Poslije učitavanja datoteke, postavljamo vrijednost palete boja naredbom colormap na vrijednost topomap1 koja nam je pogodna za prikaz Zemljine kugle. Vrijednost topomap1 je učitana iz datoteke topo. Pomoću naredbe sphere odre ujemo vrijednosti pojedinih koordinata na sferi. Zemlju ćemo prikazati u n=24 slike, vršeći rotaciju od po 360/n=15 stepeni. Kombinacijom naredbi surface i view prikazujemo Zemlju kao Texturnu-mapu sa podacima iz datoteke topo.mat u promjenljivoj topo pod odre enim uglom. Zatim svaku sliku smještamo u matricu M i narednom movie prikazujemo. Napomenimo da ove naredbe nećete moći odraditi na slabijim računarima zbog velikog zahtjevanog memorijskog prostora i zahtjevnosti računanja za ove operacije. clear all load topo 107

115 Grafika colormap(topomap1) [x,y,z]=sphere(24); n=24;m=moviein(n); for j=-37.5:360/n:307.5 cla,axis auto surface(x,y,z,'facecolor','texture','cdata',topo) view([j 30]) axis square,axis xy,axis off i=j/15+3.5; M(:,i)=getframe; end movie(m) Na slici 3.37 su prikazane dva kadra kreirana prethodnim primjerom. Slika 3.37 Dvije sekvence filma iz prethodnog primjera 108

116 MATLAB for Windows glava četvrta ANALIZA PODATAKA U ovom dijelu prezentiraćemo neke osnovne funkcije za statističku obradu podataka. Pošto se podaci obično unose u obliku ure enog skupa brojeva, neophodno je usvojiti orijentaciju (po vrstama ili kolonama) pri njihovoj obradi. U MATLAB-u je usvojena konvencija po kojoj su podaci (mjerenja, uzorci, opservacije) za različite varijable smješteni u odgovarajuće kolone. Na primjer, skup podataka koji se sastoji od 15 uzoraka za 7 različitih varijabli unosi se u obliku matrice dimenzija (15x7). Kao što smo vidjeli u poglavlju 1, postoji više načina za unošenje podataka. Ukoliko treba unijeti veliki broj podataka, direktno interaktivno unošenje nije pogodno jer, vrlo vjerovatno, dovodi do grešaka. Zbog toga se preporučuje razbijanje matrice podataka u manje blokove koje se kasnije jednostavnim pridruživanjem vrsta ili kolona spajaju u jednu cjelinu. Još jednostavniji način je putem korišćenja editora teksta, o čemu će kasnije biti riječi. Grupa funkcija za osnovne statističke obrade prikazana je u tabeli 4.1. Analiza podataka po kolonama max maksimalna vrijednost cumsum kumulativna suma min minimalna vrijednost cumprod kumulativni proizvod mean srednja vrijednost diff aproksimativni izvod std standardna devijacija table1 tabelarni pogled median medijana table2 2-D tabelarni pogled sort sortiranje corrcoef korelacioni koeficijenti sum suma elemenata cov kovarijansa prod proizvod elemenata spline kubna interpolacija Tabela 4.1. Funkcije za analizu podataka po kolonama 4.1 MAKSIMALNA I MINIMALNA VRIJEDNOST 109

117 Analiza podataka Za podatke unešene u obliku vektora, funkcije max i min, kao i većina ostalih funkcija, ne prave razliku izme u vrste i kolone. Za podatke unešene u obliku matrice operacije se vrše po kolonama, a rezultati za pojedine kolone dobijaju se kao odgovarajući elementi vektora vrste kao izlaznog argumenta operatora. Za vektor x, max(x) i min(x) daju maksimalnu i minimalnu vrijednost elemenata x, respektivno, dok [m,i]=max(x) i [m,i]=min(x) pored maksimalne (minimalne) vrijednosti elemenata x daju i odgovarajući indeks. Za kompleksne elemente x-a računaju se apsolutne vrijednosti, pa se na osnovu njih daju maksimalne (minimalne) vrijednosti. Ako je X matrica, max(x), odnosno min(x) daju vektor vrstu koji sadrži maksimalne (minimalne) vrijednosti pojedinih kolona matrice X. Operatori [M,i]=max(X), [M,i]=min(X) pored vektora maksimalnih (minimalnih) vrijednosti pojedinih kolona daju i odgovarajuće indekse. Izraz C=max(X,Y), gdje su X i Y matrice jednake dimenzije, daje matricu C sa elementima c(i,j)=max(x(i,j),y(i,j)). Primjer Za x = y = z = i i i i pojedini operatori daju:» m1=max(x) m1 = 4 110

118 MATLAB for Windows» [m,i]=min(y) m = -2 i = 1» [zm,j]=max(z) zm = i j = 4» c=max(y',z) c = i i i Primjer Za matrice A = B = ilustrovaćemo primjenu pojedinih operatora:» [M,j]=max(A) M = j = 2 3 3» [M1,j1]=min(B) M1 = j1 = 3 1 1» C=max(A,B) C =

119 Analiza podataka URE\IVANJE PODATAKA, SREDNJA VRIJEDNOST I MEDIJANA Za vektor x, operator sort(x) daje novi vektor sa elementima vektora x, ali pore anim po veličini. Verzija istog operatora sa dva izlazna argumenta, [x1,i]=sort(x), pored x1 (sortirani vektor x) daje i vektor i koji sadrži indekse pore anih elemenata, tj. važi relacija x1=x(i). Ako je X matrica, sort(x) daje matricu koja sadrži kolone matrice X sa njihovim elementima pore anim po veličini. Naredba [Y,I]=sort(X) daje i matricu I koja sadrži indekse elemenata korišćene pri sortiranju. Kada su elementi kompleksni brojevi, sortiranje se vrši po apsolutnoj vrijednosti. Operator mean računa srednju vrijednost. Za x=[x1 x2... xn] izraz m=mean(x) daje aritmetičku sredinu elemenata vektora x, tj. n m= 1 n x 1 i Za matrice, mean(x) daje vektor vrstu koji sadrži srednje vrijednosti pojedinih kolona. Operator median računa medijanu za vektore ili matrice. Za vektor, medijana se definiše kao onaj njegov element od kojeg ima jednak broj većih i manjih elemenata tog vektora. Ovo, naravno, važi pod uslovom da vektor ima neparan broj elemenata. Za slučaj da je broj elemenata vektora x paran, izraz median(x) daje aritmetičku sredinu dva srednja elementa. Za matrice, median(x) daje vektor vrstu koji sadrži medijane pojedinih kolona matrice X. Primjer Za matrice A i B iz primjera 4.1.2, imamo:» sort(a) ans = 112

120 MATLAB for Windows » [C,I]=sort(B) C = I = » Y=mean(A) Y = » X=median(B) X = STANDARDNO ODSTUPANJE, KOVARIJANSA I KORELACIJA Operator std računa standardno odstupanje (devijaciju). Za vektore, izraz y=std(x) daje skalar y po relaciji n 1 y= ( x x ) n i= 1 i sr gdje je n dimenzija vektora x a x sr srednja vrijednost njegovih elemenata. Za matrice, std daje vektor vrstu koji sadrži standardne devijacije pojedinih kolona. Operator cov računa kovarijansu. Za vektor x, cov(x) računa varijansu. Ako je X matrica čije kolone sadrže pojedine varijable a vrste pojedine uzorke (mjerenja, opservacije), izraz C=cov(X) računa matricu kovarijanse C. Izraz c=diag(cov(x)) računa vektor c sa varijansama svake kolone matrice X, dok izraz sqrt(diag(cov(x))) daje standardne devijacije. 113

121 Analiza podataka Operator corrcoef računa korelacione koeficijente. Za matricu X, izraz corrcoef(x) daje matricu korelacionih koeficijenata matrice X. Ako je C=cov(X), tada corrcoef(x) daje matricu čiji je (i,j)-ti element definisan sa C(i,j)/sqrt(C(i,j)*C(j,j)). 4.4 SUMA I PROIZVOD ELEMENATA Za vektor x, izraz y=sum(x) daje skalar y koji predstavlja zbir elemenata x- a. Za matricu X, izraz s=sum(x) daje vektor vrstu s koji sadrži sume elemenata pojedinih kolona matrice X. Na potpuno analogan način operator prod daje proizvod elemenata vektora ili matrice. Primjer Za vektor x=[ ] i matricu A A = imamo:» y=sum(x) y = 7» s=sum(a) s = Očigledno je da se zbir svih elemenata matrice A dobija sa sum(sum(a)), tako da u našem slučaju izraz» S=sum(sum(A)) daje S = Trag matrice A jednostavno dobijamo sa» Tr=sum(diag(A)) Tr = 114

122 MATLAB for Windows Proizvod elemenata pojedinih kolona matrice A dobićemo sa» p=prod(a) p = dok se proizvod svih elemenata matrice A dobija sa» P=prod(prod(A)) P = Primjer Za k=10, izračunati sume redova k k 3 1/ n i (ln n) / n» n=1:10;» s=sum(1./n.^3);» s s = » S=sum(log(n)./n) S = Kumulativne sume, odnosno proizvodi, dobijaju se pomoću operatora cumsum i cumprod. Naime, za vektor x izrazi s=cumsum(x) i p=cumprod(x) daju vektore s i p iste dimenzije kao x, čiji su elementi definisani sa s i i = x j odnosno p = x i j. j= i j= 1 Ako je X matrica, izrazi S=cumsum(X) i P=cumprod(X) daju matrice S i P istih dimenzija kao X, čije kolone se sastoje od kumulativnih suma odnosno proizvoda elemenata kolona matrice X. Primjer Za vektor x=[ ] imamo» s=cumsum(x) n= 1 n= 1 s = » p=cumprod(x) p = 115

123 Analiza podataka Columns 1 through Column Očigledno je da vektor p sadrži faktorijele brojeva od 1 do 7. Za matricu B B = izrazi» cumsum(b)» cumprod(b) daju ans = ans = PRIMJENA SUM I CUMSUM ZA RA^UNANJE INTEGRALA Za funkciju f(x) odre eni integral može se, po pravougaonom pravilu, približno izraziti kao b I = f ( x) dx f ( x ) x a n 1 i= 1 i i pri čemu je interval (a,b) podijeljen na n jednakih podintervala. Na sličan način, za funkciju dvije promjenljive z=f(x,y) dvojni integral može se aproksimirati sa b d I = zdxdy f x y x 2 (, ) y a c i j i j i j 116

124 MATLAB for Windows Na osnovu ovih izraza očigledno je da se približno integraljenje može vršiti pomoću operatora sum. Za date granice a i b, prvo ćemo usvojiti broj sektora n i definisati korak k=(b-a)/n. Nezavisno promjenljiva x definiše se u opštem slučaju kao x=a:k:b-k, pa se za datu funkciju y=f(x) odre eni integral jednostavno dobija kao I=sum(y)*k. Primjer Za funkciju y=sin x+4 naći integral od -2 do 2. Uzećemo n=40, pa za tu vrijednost n imamo:» k=(2-(-2))/40;» x=-2:k:2-k;» y=sin(x)+4;» I=sum(y)*k I = Postoji i funkcija trapz(x,y) koja računa integral funkcije po trapeznom pravilu. Vektori x i y moraju imati iste dimenzije. Ukoliko se izostavi vektor x podrazumijeva se jedinični razmak izme u vrijednosti funkcije y. Ukoliko je y matrica koja ima kolona koliko i vektor x elemenata, ovom funkcijom se računa odvojeno integral svake kolone matrice y. Primjer Naći integral I = x dx granicama naći integrale funkcija y=sin(x)+4 i y=sin(x 2 ).» x=-2:4/40:2;» y=x.^2;» I=trapz(x,y) I = » y1=[sin(x)+4;y;sin(x.^2)]';» trapz(x,y1) ans = po trapeznom pravilu a potom u istim Za dvostruki integral primjenjuje se slična procedura. Usvojimo broj sektora po x i y osi, pa za date granice a, b, c, d definišemo korake po x i y osi kao k x =(b-a)/n x, k y =(d-c)/n y - n x, n y - broj sektora po x i y osi. 117

125 Analiza podataka Sada možemo definisati nezavisno promjenljive x i y pomoću operatora meshdom kao [x,y]=meshdom(a:kx:b-kx,c:ky:d-ky) pa se dvostruki integral jednostavno dobija kao I2=sum(sum(z))*kx*ky. Primjer Naći dvostruki integral funkcije z=sinxsiny, za x [-1,2] i y [-1,3]. Usvojićemo korake kx=ky=0.1 pa se integral lako dobija sa:» [x,y]=meshdom(-1:.1:2-.1,-1:.1:3-.1);» z=sin(x).*sin(y);» I2=sum(sum(z)).*.1.*.1 I2 = Do sada smo razmatrali računanje odre enog integrala. Na sličan način može se naći i odre eni integral sa promjenljivom gornjom granicom. Ovakav integral je ustvari jednak neodre enom integralu sa fiksnom konstantom integracije, tj. funkciji b F( x) = f ( x) dx, u intervalu [a,b]. a Kao i ranije, definišemo korak k i nezavisno promjenljivu x kao x=a:k:b-k. F(x) u diskretnim tačkama x i dobija se zatim jednostavno pomoću operatora cumsum kao F=cumsum(f(x))*k. Primjer Naći neodre eni integral funkcije y=f(x)=sin(πx 2 ), u intervalu [-1,1]. Uzećemo k=0.1 i sa sljedećim nizom naredbi:» x=-1:0.1:1;» y=sin(pi*x.^2);» F=cumsum(y)*0.1;» subplot(221)» plot(x,y),grid,xlabel('x'),ylabel('funkcija y') 118

126 MATLAB for Windows» subplot(222)» plot(x,f),grid,xlabel('x'),ylabel('integral F')» print sl1 -dmeta dobijamo funkciju F(x) koju možemo nacrtati zajedno sa funkcijom y, kao što je prikazano na slici 4.1. Na sličan način može se izračunati i grafički prikazati dvojni neodre eni integral oblika b d F( x, y) = z( x, y) dxdy u oblasti definisanoj sa x [a,b], y [c,d]. a c x x Slika 4.1 Grafik funkcije y=sin(πx 2 ) i njenog integrala za x [-1,1] Za usvojene korake kx i ky, sljedeći niz naredbi: [x,y]=meshdom(a:kx:b,c:ky:d) z=f(x,y) F=cumsum(cumsum(z)) mesh(z) mesh(f) u opštem slučaju računa i grafički prikazuje funkciju F(x,y). Primjer Za funkciju z=x 3 +y 3 izračunati i grafički prikazati neodre eni integral u oblasti definisanoj sa x [-1,1], y [-2,2]. Usvojićemo kx=0.1 i ky=0.2 pa sa skupom naredbi:» [x,y]=meshdom(-1:0.1:1,-2:.2:2);» z=x.^3+y.^3; 119

127 Analiza podataka» F=cumsum(cumsum(z))*0.1*0.2;» subplot(223)» mesh(z)» subplot(224)» mesh(f) dobijamo funkciju F(x,y) koju možemo grafički prikazati, zajedno sa funkcijom z(x,y), kao što je prikazano na sljedećoj slici Slika 4.2 Trodimenzioni grafik funkcije z=x 3 +y 3 i njenog integrala 4.6 RAZLIKA ELEMENATA I PRIBLI@NO DIFERENCIRANJE FUNKCIJA Za x=[x1 x2 x3... xn] izraz y=diff(x) daje vektor y čiji su elementi definisani sa y i = x i+1 -x i, i=1,2,..,n-1. Znači, elementi vektora y predstavljaju razlike susjednih elemenata vektora x. Vektor y je za jedan element "kraći" od vektora x, tj. length(y)=length(x)-1. Ovo važi bez obzira da li se radi o vektoru vrsti ili koloni. Ako je X matrica, opercija Y=diff(X) daje matricu Y čije kolone se sastoje od razlika susjednih elemenata kolona matrice X, tako da Y ima jednu vrstu manje od matrice X. Navedena operacija može se ponoviti m puta, dodavanjem opcionog ulaznog argumenta. U ovakvoj verziji, operator diff ima oblik diff(x,m). Primjer Za vektor x = izrazi» y1=diff(x) 120

128 » y2=diff(x,2)» y3=diff(x,3) daju MATLAB for Windows y1 = y2 = y3 = 6 6 Očigledno je da važi: y2=diff(y1), y3=diff(y2), itd. Za matricu A = izrazi» B=diff(A)» C=diff(A,2) daju B = C = S obzirom na definiciju izvoda funkcije jedne promjenljive y=f(x) u tački x i, izraz za aproksimaciju izvoda dy dx x y y i i 1 ( i ) x x i i 1 pokazuje da se operator diff može koristiti za približno diferenciranje. 121

129 Analiza podataka Prvi izvod se približno dobija sa diff(y)/dx, gdje dx= x predstavlja priraštaj x-a (korak), a može se naći i sa diff(y)./diff(x). Proizvoljni m-ti izvod funkcije y=f(x), označen sa y m, nalazimo na potpuno analogan način sa y m =diff(y,m)./dx^m. Primjer Za funkciju y=xsin x odrediti i nacrtati prvi izvod za -2π x 2π.» x=-2*pi:pi/10:2*pi;» y=x.*sin(x); %Racunamo funkciju» y1=diff(y)./diff(x); %Racunamo izvod funkcije» subplot(221)» plot(x,y,x(1:length(x)-1),y1),grid» text(-4,-4,'funkcija'),text(-4,4,'izvod')» print sl3 -dmeta Zadnje četiri naredbe služe za crtanje, obradu i pamćenje grafika funkcije i njenog izvoda. Primjećujemo da pri crtanju grafika izvoda funkcije moramo "skratiti" vektor x za jedan element, jer inače računar javlja grešku. 6 4 izvod funkcija Slika 4.3 Grafik funkcije y=xsin x i njenog prvog izvoda Primjer Odrediti i nacrtati prvi, drugi i treći izvod funkcije y=2x 3, u intervalu x [-3,3].» x=-3:0.1:3;» y=2*x.^3;» y1=diff(y)./diff(x);» y2=diff(y,2)/0.1^2;» y3=diff(y,3)/0.1^3;» l=length(x);» plot(x,y,x(1:l-1),y1,x(2:l-1),y2,x(2:l-2),y3),grid 122

130 MATLAB for Windows» print sl4 -dmeta Primijetimo da se pri crtanju m-tog izvoda, u opštem slučaju, nezavisno promjenljiva "skraćuje" za m elemenata. Razlog leži u kompatibilnosti dimenzija izvoda i nezavisno promjenljive Slika 4.4 Grafik funkcije y=2x 3 i njena prva tri izvoda 123

131 MATLAB for Windows glava peta PROGRAMIRANJE I M-FAJLOVI Do sada smo sve operacije obavljali na komandnoj liniji, što smo označavali sa». To je bio najjednostavniji način za upoznavanje sa pojedinim funkcijama i mogućnostima MATLAB-a. Me utim, mogli smo zapaziti da ono što je zapisano biva uništeno poslije izlaska iz MATLAB-a. Zbog toga se nameće potreba za pisanjem programa koji će ostati zapisan i trajno sačuvan. Takvi programi u MATLAB-u imaju obaveznu ekstenziju.m, pa se nazivaju i m-fajlovi. Program možemo napisati u nekom od editora, a mi ćemo u primjerima koristiti veoma rasprostranjeni Notepad. Poslije osnovnih napomena, u ovoj glavi su obra ene funkcije za upravljanje tokom programa, kao što su for, while, if, break i return, kao i druge pogodne naredbe za kreiranje m-fajlova. Obra en je rad sa funkcijskim fajlovima, kao i rad sa tekstualnim promjenljivim. 5.1 PISANJE M-FAJLOVA U NOTEPAD-U U MATLAB-u se mogu izvršavati naredbe MS-DOS-a i Windows-a. Te naredbe se označavaju uskličnikom!. Ove naredbe imaju suštinski tri oblika:!naredba, otvara se prozor aplikacije koja je pozvana (ili MS-DOS prozor) a povratak u MATLAB je moguć tek nakon gašenja ove aplikacije,!naredba&, slično kao gore ali je moguć povratak u MATLAB bez zatvaranja pozvane aplikacije i!naredba pozvana aplikacija se otvara na nivou ikone. Na primjer, program Notepad se može pozvati sa:»!notepad Da bi se otvorio novi fajl, u MATLAB-u se koristi opcija File/New/M-file, čime se otvara neimenovani prazan fajl Untitled. Poslije toga, pritiskom na <F1> ili izborom neke od opcija iz stavke Help menija, možemo dobiti pomoć i dodatna objašnjenja. 125

132 Programiranje i M-fajlovi Pisanje programa se vrši na uobičajen način. Strelicama se pomijera kursor, u novi red se ide pritiskom na tipku Enter, sa kojom se može stvarati i dodatni red izme u dva već napravljena reda. Brisanje karaktera se vrši tipkom <Bck Spc> (karakter unazad), odnosno tipkom <Del> (karakter gdje se kursor nalazi). Sa svim ostalim mogućnostima se možete upoznati u prilogu. Nakon završetka rada sa editorom, program se snima aktiviranjem opcije File/Save, prilikom čega je neophodno zadati ime fajla. Imena MATLAB fajlova su obavezno sa ekstenzijom.m. Poželjno je na početku programa ispisati komentare. Linija sa komentarom počinje znakom %. Komentari se mogu ispisivati i u programu radi njegovog jednostavnijeg praćenja. Primjer Napisati program za crtanje grafika funkcije f(x)=cos(x) -π x π. Program sačuvati pod imenom proba. Pošto smo već ušli u editor za program sa File/New/M-file, kucamo redom: % Crtanje grafika funkcije f(x)=cos(x) x=-pi:pi/20:pi; y=cos(x); plot(x,y) end Treba napomenuti da na kraju programa može biti end, a ne mora. Program ćemo sačuvati sa File/Save. Kada se fajl prvi put snima treba unijeti njegovo ime (ovdje je to proba.m). U MATLAB se možete vratiti sa Alt+Tab (tasterima zajednički pritisnutim dok se ne pojavi MATLAB COMMAND WINDOW gdje se ovi tasteri otpuste) ili zatvarajući istovremeno fajl sa File/Exit. Otvaranje već napisanog fajla se može postići sa File/Open M-file pa se zatim izabere fajl sa diska koji se želi otvoriti. Fajl se može potražiti po drugim diskovima na računaru, po direktorijumima tekućeg diska ili u spisku datih fajlova. Ako je fajl koji se želi prepraviti me u posljednjim sa kojim se radilo, on se nalazi u MATLAB-ovom File meniju pod rednim brojem od 1 do 4. Povratak u fajl koji je otvoren i nije zatvoren u Windows-u je moguć tako e sa Alt+Tab. Program se izvršava ukucavanjem imena bez ekstenzije. U našem primjeru:» proba 126

133 MATLAB for Windows U MATLAB-ovoj notaciji ove fajlove možemo zvati script-fajlovi ili jednostavnije rečeno programi. Važno je istaći da se pozivanje nekog drugog m- fajla može izvršiti i unutar programa unoseći samo njegovo ime. Poslije izvršavanja tog pozvanog m-fajla sve varijable ostaju u radnom prostoru i sljedeće naredbe ih mogu koristiti kao poznate. Program može pozivati sam sebe. Tako bi u našem slučaju, ako poslije naredbe plot(x,y), a prije end, unesemo liniju sa imenom našeg fajla proba, fajl pri izvršavanju naredbi sam sebe pozivao i tako radio beskonačno puta. Ovakav postupak kada se primjeni na funkcije naziva se rekurzijom i može biti veoma koristan. Komentar otkucan na početku programa dobija se sa help proba. U MATLAB-u se mogu koristi i drugi editori teksta. U Options/Editor Preference možemo definisati neki drugi editor u koji će se ulaziti opcijama File menija. 5.2 UPRAVLJANJE TOKOM PROGRAMA INTERAKCIJA SA KORISNIKOM U grupu naredbi koje nam omogućavaju da u toku izvršavanja programa unosimo promjenljive i djelove programa, svrstaćemo naredbe input i keyboard. Uopšte gledano, tu ćemo svrstati i naredbe koje nam omogućavaju da pratimo, mada pasivno, rad programa, a to su echo i diary, kao i mogućnost privremenog zaustavljanja rada naredbom pause. Naredba input ima oblik: input('tekst po zelji ') Poslije ove naredbe računar ispisuje dati tekst, pravi pauzu i čeka da unesemo broj, (ili vektor ili matricu) (o unošenju teksta će biti kasnije riječi). Uneseni broj računar smješta pod imenom ans, pa je u velikom broju slučajeva potrebno željenoj varijabli pridružiti vrijednost ans. Na primjer, ukoliko smo unijeli varijablu koju u programu označavamo sa a, onda poslije linije sa naredbom input slijedi linija sa: a=ans; 127

134 Programiranje i M-fajlovi Promjenljivoj, na primjer a, koja se zadaje naredbom input može se i direktno dodijeliti vrijednost sa: a=input('tekst po zelji'); Naredba keyboard je znatno opštija i moćnija od naredbe input, ali se rje e koristi. Naredbom input možemo unijeti samo broj (matricu) ili tekst, dok naredba keyboard privremeno obustavlja izvršavanje programa i vraća nas na tastaturu. Tako možemo otkucati i izvršiti više naredbi, a onda se sa return vratiti i nastaviti sa izvršavanjem programa. Primjer Naredbu keyboard ilustrovaćemo na primjeru crtanja parabole y=a+bx 2 u granicama x [0,2].» keyboard K» a=1; K» b=2; K» x=0:.01:2; K» plot(x,a+b*x.^2) K» end K» return» Uočimo da poslije pozivanja naredbe keyboard, MATLAB prompt mijenja oblik u K». Naredbom pause privremeno zaustavljamo izvršavanje programa dok ne pritisnemo neku (bilo koju) tipku za nastavak rada. Naredba pause(n) pravi pauzu u izvršavanju programa od n sekundi. Primjer Napisati program koji će na osnovu učitane faze sinusoide nacrtati grafik funkcije f(x)=x 2 sin(x+ϕ) u intervalu -π x π, a zatim i izračunati integral u istom intervalu po pravougaonom pravilu sa 40 odbiraka. Poslije ulaska u editor sa File/New/M-file kucamo: fi=input('unesi fazu sinusoide ') a=-pi; b=pi; h=(b-a)/20; x=a:h:b-a; y=(x.^2).*sin(x+fi); plot(x,y) pause(3) 128

135 MATLAB for Windows int=sum(y)*h end Nakon iskucavanja teksta, sa File/Exit iza e se iz Notepad-a, a prilikom izlaska dobija se pitanje: Fajl je mijenjan da li želite da sačuvate promjene? Na ovo pitanje treba odgovoriti potvrdno i dati ime fajlu sa ekstenzijom.m. Program je moguće izvršiti pozivom njegovog imena. Ukoliko ne bi koristili liniju sa naredbom pause računar bi odmah poslije crtanja grafika nastavio sa radom. Ova naredba nam omogućava da imamo 3 sekunde da vidimo grafik. Postoji mogućnost da se sa pause off onemogući zaustavljanje računara u pause-modu. Ovaj mod se ponovo uključuje sa pause on. Naredba echo ili echo on nam omogućava da pratimo izvršavanje programa. Na ekranu računar ispisuje naredbe koje se u tom trenutku izvršavaju. Pogodna je za otkrivanje grešaka u programu. Naredba echo se poništava sa echo off. Ako se želi specificirati da se dobije echo pojedinih funkcija to će se postići sa echo 'funkcija' on, gdje je funkcija odgovarajuća MATLAB funkcija. Ova opcija se isključuje sa echo 'funkcija' off. Ako se želi izvršavanje echo naredbe unutar svih funkcijskih fajlova to se može postići sa echo on all, odnosno isključenje sa echo off all. Uključivanje i isključivanje echo-a se može postići i aktiviranjem stavke menija Options/Turn Echo on (ili off). Naredba diary nam omogućava da napravimo dnevnik onoga što radimo. Ako ukucamo diary ime.tip onda će računar od tog trenutka zapisivati sve što radimo i što računar ispisuje kao rezultate ili poruke greške na ekranu. Sve što je zapisano nalazi se u fajlu ime.tip. Dnevnik isključujemo sa diary off. Ovo je posebno pogodno za demonstrativne svrhe i za pisanje izvještaja sa objašnjenjima FOR PETLJA Mogućnost ponavljanja dijela programa zadati broj puta se u MATLAB-u ostvaruje upotrebom for petlje. Ta petlja je ekvivalentna do petlji u fortranu ili for petlji u basicu. for petlja se završava narebom end. Primjer Izračunati vrijednost determinante: 129

136 3k k d = k k 1 za vrijednosti k=1, 2, 3, 4, 5 i 6. Programiranje i M-fajlovi for k=1:6 a=[3*k,4,8,11;-1,-k,5,3;k,0,3,7;6,4,2*k,1]; d=det(a) end Opšti oblik for petlje je: for v=vektor ili matrica naredbe end For petlja se izvršava tako što promjenljiva v uzima redom elemente vektora v ili kolone matrice v (ako je v matrica) i izvršava naredbe za uzetu vrijednost v. Jasno je da elementi vektora mogu biti i necjelobrojni i sa negativnim priraštajem. for x=2:-0.1:-2 y=x.^2; end Kada se radi o vektorima onda je for petlja ista kao i do ili for petlja u ostalim programskim jezicima. Za razliku od njih, u MATLAB-u se for petlja može izvršavati i sa matricama. Moguća je višestruka upotreba for petlji. Primjer Formirati matricu 7x7 čiji su elementi a(i,j)=i*j. for i=1:7 for j=1:7 a(i,j)=i*j; end end» a Pomijeranje naredbi u for petlji, prilikom pisanja programa, vršeno je radi bolje preglednosti. 130

137 MATLAB for Windows Treba napomenuti da se u MATLAB-u veliki broj petlji može izbjeći zahvaljujući tome što MATLAB automatski radi sa vektorima. Tako je, na primjer, matrica a(i,j)=i*j mogla biti formirana sa samo dvije naredbe [i,j]=meshdom(1:7,7:-1:1); a=i.*j; WHILE PETLJA Dio programa se može ponoviti i neodre eni broj puta, sve dok je zadati uslov zadovoljen. Za to se koristi while petlja. Opšti oblik while petlje je: while izraz naredbe end Primjer Izračunati sumu s koji su po apslolutnoj vrijednosti veći od % racunanje sume reda sa zadatom tacnoscu s=0; % pocetna vrijednost sume n=1; % pocetna vrijednost rednog broja elementa while abs((-1)^n/n^2)>10^(-4) s=s+(-1)^n/n^2; n=n+1; end s end n = gdje je a n = ( ) 2, uzimajući sve članove n a n 1 1 n Dio programa izme u while i end izvršava se sve dok je izraz koji slijedi poslije while istinit. Prilikom definisanja izraza kao sastavnog dijela while petlje mogu se koristiti relacione i logičke operacije date u tabeli 5.1. U vezi sa logičkim operacijama treba napomenuti da je u MATLAB-u izraz logički istinit ako je različit od nule. Tako operacija (ili) vraća logičku jedinicu kao rezultat ako je barem jedan od operanada različit od nule a operacija & (i) vraća logičku jedinicu ako su oba operanda različita od nule. Poslije while može slijediti izraz koji je uvijek istinit kao na primjer 1==1 ili 1>0. U tom slučaju bi se naredbe u while petlji izvršavale beskonačno puta. I ovaj oblik ponekad može biti od koristi. Relacione i logičke operacije 131

138 Programiranje i M-fajlovi == jednako (=) >= veće ili jednako ( ) <= manje ili jednako ( ) č= nije jednako ( ) & logičko i logičko ili č logičko ne xor(a,b) ekskluzivno ili Tabela 5.1. Relacione i logičke operacije Primjer Napisati program za računanje kuba brojeva unijetih sa tastature. Postupak ponavljati neodre en broj puta. while 1==1 input('unesite broj ans^3 end ') IF NAREDBA Uslovno izvršavanje dijela programa se ostvaruje if naredbom. Ako želimo izvršiti dio programa samo ukoliko je zadovoljen neki izraz onda to činimo sa: if izraz naredbe end Primjer Napisati program za izračunavanje elemenata matrice (5x5), a(i,j)=sin(2ij-i) za i j, a a(i,j)=sin(2ij-i)+1/2 za i=j. n=5; for i=1:n for j=1:n a(i,j)=sin(2*i*j-i); if i==j a(i,j)=a(i,j)+0.5; end end end 132

139 MATLAB for Windows a end Moguće je izvršiti jedan dio programa označen sa naredbe1 ukoliko je izraz istinit, a drugi dio naredbe2 ukoliko nije. To se ostvaruje koristeći if u kombinaciji sa else. for izraz naredbe1 else naredbe2 end Primjer Formirati vektor s=[ ]. % racunanje vektora s pogodnog za simpsonov metod % izracunavanja integrala n=11; s(1)=1; s(n)=1; for i=2:n-1 if rem(i,2)==0 % rem(m,n) daje ostatak dijeljenja m sa n s(i)=4; else s(i)=2; end end s end Zadavanje dva uslova se ostvaruje sa if i elseif uz else. U tom slučaju računar izvršava naredbe1 koje slijede poslije if, ako je izraz uz if zadovoljen. Drugi uslov se zadaje izrazom uz elseif i u slučaju zadovoljenja tog izraza izvršava se blok naredbi koji slijedi poslije elseif. Ako nijedan od izraza nije zadovoljen onda se izvršava blok naredbi poslije else. if izraz1 naredbe1 elseif izraz2 naredbe2 133

140 Programiranje i M-fajlovi else naredbe3 end Primjer Izračunati elemente matrice a(i,j)=i-j za i j i i<j, a(i,j)=-a(j,i) za i>j i a(i,j)=i^2 za i=j. n=7; a end for i=1:n for j=1:n if i<j end end elseif else end a(i,j)=i-j; i==j a(i,j)=i^2; a(i,j)=-a(j,i); GRAFI^KI MENI Kada se u programu javlja slučaj višestrukog grananja može se koristiti naredba za kreiranje grafičkog prozora menu('naslov prozora','prva opcija','druga opcija',...,'poslednja opcija'). Dakle kreira se grafički prozor i menijem pod naslovom Naslov prozora i dugmadima na kojima pišu opcije. Kada se klikne na neku od opcija zatvara se prozor a izlaz iz naredbe je broj koji ukazuje koja je opcija izabrana. Primjer Napisati program kojim se crta sombrero površ uz mogućnost izbora načina grafičkog predstavljanja. [x,y]=meshdom(-2*pi:.2:2*pi,-2*pi:.2:2*pi); z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps); Izbor=menu('Izbor grafickog prikaza',... 'contour','mesh','surf','pcolor'); if(izbor==1),contour(z) elseif(izbor==2),mesh(z) elseif(izbor==3),surf(z) else,pcolor(z) 134

141 MATLAB for Windows end Ovim naredbama kreira se prozor na slici 5.1 i u zavisnosti od izbora crta se dvodimenzionalni grafik. Slika 5.1 Prozor u kojem se bira opcija BREAK NAREDBA Iz for, while i if petlje se može izaći i prije njihovog regularnog završavanja naredbom break ERROR NAREDBA oblik: Prekid izvršavanja programa se može ostvariti i naredbom error koja ima error('obavjestavanje o razlogu prekida, po zelji') Nailaskom na takvu naredbu računar prekida dalji rad, uz ispisivanje unijetog teksta koji slijedi iza naredbe error (vidi primjer 5.3.2) NAREDBE VEZANE ZA LOGI^KE OPERACIJE any(x) exist('x') all(x) find(x) Obradimo neke funkcije vezane za logičke operacije Vraća jedinicu ako je bilo koja vrijednost u matrica različita od nule. Provjerava da li postoji program ili funkcija X. (Objašnjeno u prvom poglavlju). Vraća jedinicu ukoliko su sve vrijednosti u matrici (ili vektoru) X različite od nule. Za vektor X vraća indekse vektora X koji su različiti od nule. Za matricu [i,j]=find(x) daje vrijednosti koeficijenata matrice X koje ispunjavaju logički uslov po kolonama i vrstama. 135

142 Programiranje i M-fajlovi Primjer Za matricu slučajnih brojeva odrediti one koeficijente i i j koji zadovoljavaju logički uslov X>0.5.» x=rand(5) x = » [i,j]=find(x>0.5);» i' i = » j' ans = isnan(x) Vraća jedinicu za elemente matrice koji su NaN. (Posljedica računanja tipa 0/0 i sl.) isinf(x) finite(x) Vraća jedinicu za elemente matrice koji su Inf (beskonačno). Vraća jedinicu za konačne elemente matrice (nijesu Inf i NaN). isempty(x) Vraća jedinicu ako je X prazna matrica X=[]. issparse(x) Vraća nulu ako je matrica rijetka. isstr(x) Vraća jedinicu ako je matrica zapravo string - tekstualni niz. isglobal(x) Vraća jedinicu ako je promjenljiva X globalna promjenljiva (to jest ako važi u svim programima i funkcijama). 5.3 FUNKCIJSKI FAJLOVI Izuzetna pogodnost koju pruža MATLAB je mogućnost kreiranja novih funkcija i lako pravljenje i pozivanje potprograma. Fajlovi kojima kreiramo nove funkcije nazivaju se funkcijski fajlovi i obavezno u prvoj liniji imaju naredbu function. Osnovnu strukturu funkcijskog fajla prikazaćemo na primjeru definisanja funkcije si(x)=sin(x)/x. Primjer Definisati funkcijskim fajlom funkciju si(x)=sin(x)/x, gdje x može biti skalar, vektor ili matrica. 136

143 MATLAB for Windows Napomenimo da se funkcijski fajl obavezno mora nazvati po imenu funkcije koja se njime kreira dakle u ovom slučaju si.m. function s=si(x) % Definisanje funkcije si(x)=sin(x)/x s=sin(x+eps)./(x+eps); end Funkcijski fajl si poziva se sa si(a), gdje a može biti skalar, vektor ili matrica. Rezultat je definisana funkcija sin(a)/a. Sve promjenljive u function fajlu su lokalnog karaktera: x je ulazna, a s je izlazna varijabla koja se dobija u obliku ans poslije pozivanja funkcijskog fajla (probajte» si(2) ili» x=-7:.2:7; plot(x,si(x))). Tekst označen komentarom %, koji slijedi poslije linije function, dobija se sa» help si i služi kao objašnjenje definisane funkcije. Funkcijski fajlovi se mogu praviti i sa više ulaznih i izlaznih varijabli. Primjer Napisati potprogram za računanje vektorskog proizvoda dva trodimenziona vektora. function c=vekpr(a,b) % racunanje vektorskog proizvoda c=axb if length(a)č=3 length(b)č=3 error('duzina vektora a ili b nije 3') end c(1)=a(2)*b(3)-a(3)*b(2); c(2)=a(3)*b(1)-a(1)*b(3); c(3)=a(1)*b(2)-a(2)*b(1); end Poslije izlaska uz zapisivanje fajla vekpr.m, možemo probati kako on radi. Na primjer» r=vekpr([1 2 3],[-1 0 5]). U prethodnom funkcijskom fajlu korišćena je poruka greške. Ako dužina vektora a ili vektora b nije 3, program prekida dalje izvršavanje naredbi uz poruku "duzina vektora a ili b nije 3". Treba napomenuti da MATLAB ima ugra enu funkciju cross koja računa vektorski proizvod, tako bi unošenje» cross([1 2 3],[-1 0 5]) 137

144 dalo isti rezultat kao naša funkcija. Programiranje i M-fajlovi U function fajlovima, koje smo do sada razmatrali, imali smo samo jednu izlaznu promjenljivu. Broj izlaznih promjenljivih, me utim, može biti veći i može se dobiti naredbom nargout, dok se broj ulaznih promjenljivih dobija sa nargin. y 2 z = 1, od date Primjer Odrediti najbližu i najdalju tačku na elipsoidu x 2 2 a b c ravni Ax+By+Cz+D=0. Ako je broj izlaznih argumenata veći od dva onda izračunati i rastojanja tačaka na elipsi i ravni. Ose elipse zadati u vektoru e=[a b c], a ravan u vektoru m=[a B C D]. Najbliže i najudaljenije tačke su one u kojima je vektor normale na elipsu n=[2x/a 2 2y/b 2 2z/c 2 ] kolinearan sa vektorom normale ravni [A B C] tj.: 2x/a 2 =ka 2y/b 2 =kb 2z/c 2 =kc Konstanta k se odre uje iz uslova da tačka [x y z] leži na elipsi. k 2 =4/(A 2 a 2 +B 2 b 2 +C 2 c 2 ) function [x1,x2,d1,d2]=raste(e,m) % Odredjivanje najblize i najudaljenije tacke na elipsoidu od % zadate ravni, kao i rastojanje tih tacaka od ravni k1=2/sqrt((e*m(1:3)')^2); k2=-2/sqrt((e*m(1:3)')^2); % x1=k1*m(1:3).*e.^2/2; x2=k2*m(1:3).*e.^2/2; if nargout>2 d1=abs(x1*m(1:3)'+m(4))/sqrt(sum(e.^2)); d2=abs(x2*m(1:3)'+m(4))/sqrt(sum(e.^2)); end end Prethodni funkcijski fajl može se pozivati sa promjenljivim brojem izlaznih argumenata. Ako ga pozovemo sa [x1,x2]=raste([1 2 2],[ ]) onda će računati samo tačke x1 i x2, na elipsoidu sa osama a=1 b=2 i c=2 respektivno, koje su najbliže odnosno najdalje od ravni sa koeficijentima A=1 B=0 C=-1 i D=3 i njih dati kao izlazne varijable. Ako ga pozovemo sa [x1,x2,d1,d2]=raste([1 2 2],[ ]) onda će računati i koordinate tačaka i njihovo rastojanje do ravni. Funkcijski fajl ne mora imati izlazne promjenljive. Ako je potrebno izvršiti odre ene operacije sa zadatim varijablama (na primjer radi crtanja grafika na

145 MATLAB for Windows ekranu) pri čemu treba računati pomoćne varijable, koje nas u daljem radu ne interesuju, to se može izvršiti funkcijskim programom bez izlaznih promjenljivih. Primjer Napraviti funkcijski fajl za crtanje diskretnih signala. function dplot(x,y) % pozivom dplot(x,y) crtamo diskretnu funkciju y(n)=y(x) za x=ndx u % funkciji rednog broja odbirka % d=(max(x)-min(x))/(length(x)-1); i=round(x./d); i1=[1 1 1]'*i; i1=i1(:); y1=[0 1 0]'*y; y1=y1(:); plot(i1,y1) end Diskretni signal sin(pi/10*n) možemo nacrtati sa» x=-2*pi:pi/10:2*pi;» dplot(x,sin(x)) Slika 5.2 Grafik diskretnog signala Broj ulaznih argumenata tako e može biti promjenljiv. Primjer Izračunati težinu tijela mase m. Ako se kao ulazni parametar zada samo m onda uzeti da je tijelo na površini Zemlje. Ako se zada i r onda uzeti da je tijelo na visini r od površine Zemlje, a ako se zada m, r i M onda uzeti da se tijelo m nalazi na rastojanju r od planete mase M. function q=tezina(m,r,m) % % racunanje tezine tijela. Ako je zadato samo m na povrsini Zemlje. % Ako je zadato m i r onda na visini r iznad Zemlje, 139

146 Programiranje i M-fajlovi % a ako je zadato m, r i M onda na rastojanju r od planete mase M. % Uzeto je Mzem=4.9156*10^24, Rzem= i gama=6.672*10^(-11) % if nargin==1 q=m*9.81; elseif nargin==2 q=6.672*10^(-11)*m*4.9156*10^24/( r)^2; else q=6.672*10^(-11)*m*m/r^2; end end Promjenljivi broj ulaznih parametara često se koristi i pri pozivanju function fajlova za računanje varijabli sa odre enom tačnošću. Primjer Korišćenjem razvoja u red napraviti program za računanje sin(x) sa zadatom tačnošću etac za relativno male vrijednosti x. Ako nije zadata tačnost računati sin(x) sa tačnošću Razvoj sinusa u red oko nule je oblika: sin(x)=x-x 3 /3!+x 5 /5!-x 7 /7!+...+(-1) n-1 x 2n-1 /(2n-1)!+... function s=sinred(x,etac) % % sinred(x,etac), racunanje sinusa pomucu reda, ako nije zadata % tacnost onda se uzima da je etac= % if nargin==1 etac=10^(-5); end s=x; f=x; n=1; while f>etac n=n+1; f=(-1)^(n-1)*x^(2*n-1)/prod(1:2*n-1); s=s+f; end end Na kraju ovog odjeljka daćemo i nekoliko napomena. Kada neki m-fajl koristimo prvi put, on se kompilira i smjesti u memoriju i tako je dostupan za kasniju upotrebu. 140

147 MATLAB for Windows Prilikom pozivanja nekog fajla, na primjer proba, MATLAB-ov interpreter pravi sljedeće korake: Provjeri da li je proba varijabla. Ako jeste, uzima njenu vrijednost za računanje, ako nije provjeri da li je proba ugra ena funkcija. Ako jeste, koristi je, a ako nije traži fajl proba.mex u tekućem direktorijumu. Ako ga na e izvršava ga, a ako ga ne na e, traži fajl proba.mex u direktorijumima po definisanom putu pretraživanja (u MATLABRC.M) i ako ga na e izvršava ga, a ako ga nema traži fajl proba.m u tekućem direktorijumu. Ako ga na e izvršava ga, a ako ga ne na e, traži fajl proba.m u direktorijumima po definisanom putu pretraživanja (u MATLABRC.M) i ako ga na e izvršava ga, a ako ga nema javlja grešku, proba je nepoznato. Na osnovu prethodnog, važno je imati u vidu da fajlovi koje pravimo ne smiju imati imena ugra enih funkcija ili korišćenih varijabli, kao ni imena već postojećih fajlova. 5.4 TEKSTUALNE PROMJENLJIVE (STRINGOVI) Do sada smo posmatrali isključivo varijable koje uzimaju numeričke vrijednosti. MATLAB, kao uostalom i mnogi drugi programski jezici, može raditi i sa tekstualim varijablama. Tako možemo zadati varijablu s čiji će sadržaj biti tekst "MATLAB".» s='matlab' s = MATLAB Apostrof na početku i kraju označava da neku promjenjljivu treba tretirati kao tekst. Svako slovo varijable s smješta se kao jedan elemenat vektora, pa je s vektor dimenzija (1x6).» size(s) ans = 1 6 Vrijednosti ASCII koda koje odgovaraju pojedinim slovima dobijaju se sa abs.» c=abs(s) c =

148 Programiranje i M-fajlovi ASCII vrijednosti se pretvaraju u karaktere sa setstr. Ovo je operacija inverzna operaciji abs, za slučaj tekstualnih promjenljivih.» setstr(c) ans = MATLAB Složeni vektori mogu se graditi kao i kod operacija sa brojevima, dodajući vrste ili kolone. d='ver4.2';» e=[c,blanks(2),d] e = MATLAB VER4.2» f=[c;d] f = MATLAB VER4.2 Funkcija blanks(n) kreira string koji se sastoji od n praznih polja (spaceova). Naredba deblank ima suprotno dejstvo naredbi blanks to jest briše bjeline u stringu (space-ove i Tab-ove). Ukoliko ne želimo da računar ispisuje ime varijable onda možemo koristiti naredbu disp.» disp(e) MATLAB VER4.2 Unošenje tekstulanih promjenljivih se vrši naredbom:» input('proizvoljan tekst',s') gdje s označava da se radi o tekstualnim varijablama. Primjer Napraviti m-fajl koji će simulirati bacanje 5 kocaka za igranje jamba. % program jamb % program koji simulira bacanja kocki u jambu. Poslije % prvog bacanja treba otkucati redne brojeve kocki koje % se ponovo bacaju. input('zelis li objasnjenje da ili ne', 's') if ans=='da' help jamb 142

149 MATLAB for Windows disp('pritisnuti bilo koju tipku za nastavak...') pause clc end ans='a'; while(ansč='k') y=ceil(rand(1,5)*6) input(' koje kocke bacas ponovo [x x x] (ako ne bacas [0]) ') if ansč=[0] y(ans)=[]; y(5-length(ans)+1:5)=ceil(rand(1,length(ans))*6); end disp(y) input(' pritisni bilo koju tipku za nastavak ili k za kraj...','s') clc end Naredba iz fajla clc briše komandni prozor i vraća na komandni prompt. Veoma važna naredba za rad sa stringovima je eval(s). Ova naredba znači da računar izvrši tekst u promjenljivoj s kao naredbu.» s='sin(x).*x.^3' Ovako napisana varijabla s je tekst. Me utim ako zadamo x:» x=2 onda naredbom eval(s) izvršavamo sadržaj varijable s:» eval(s) što je isto kao da smo otkucali:» sin(x).*x.^3 Varijabla s može imati i više vrsta, koje moraju biti iste dužine. eval(s(i,:)) u tom slučaju izvršava naredbe koje su sadržane u pojedinim vrstama. Poslužimo se funkcijom str2mat kojom se formira matrica čije su vrste pojedini stringovi i izvrši se automatsko popunjavanje nulama pojedinih vrsta.» s=str2mat('x=2','y=3','z=x.^2+y');» eval(s(1,:)) x = 2 143

150 Programiranje i M-fajlovi» eval(s(2,:)) y = 3» eval(s(3,:)) z = 7 Naredba int2str(j) pretvara cjelobrojnu vrijednost j u tekstualnu varijablu i tretira je kao tekst.» r=int2str(5);» s='ime';» t=[s r] t = ime5 Ova naredba može biti posebno interesantna kada želimo unutar for petlje sačuvati više grafika, više promjenljivih ili učitavati više varijabli koje se razlikuju u imenu. Na primjer, kada unutar petlje dobijamo n grafika i želimo ih sačuvati pod imenima slll1.ps, slll2.ps, slll3.ps... sllln.ps, onda to možemo učiniti sa:» x=-2:.1:2;» for i=1:4 y=x.^i; plot(x,y) eval(['print slll' int2str(i)]) end U prethodnom primjeru računar računa i crta stepene funkcije y=x i za i=1, 2, 3, 4, a onda dobija naredbu eval(['print slll' int2str(i)]), što znači: izvrši sadržaj vektora print sllli za i=1, 2, 3, 4, što je isto kao i niz naredbi print slll1, print slll2, print slll3, print slll4, pri čemu imamo automatsko dodavanje broja i kao dijela teksta u imenu fajla. Probajte» dir *.ps i vidjećete da su kreirani fajlovi slll1.ps, slll2.ps, slll3.ps i slll4.ps. Ukažimo da je naredba dir adekvatna MS-DOS naredbi i služi za izlistavanje sadržaja direktorijuma. Ovo naredba biće opisana u jedanaestom poglavlju. Na isti način mogu se sačuvati i promjenljive za razne vrijednosti i, naredbom eval(['save y' int2str(i)]), ili učitati sa eval(['load y' int2str(i)]). 144

151 MATLAB for Windows Moguće je koristiti i višestruke petlje i višestruke indekse, npr. sl11.ps, sl12.ps, sl21.ps, itd., naredbom eval(['print sl' int2str(i) int2str(j)]). Stringove možemo porediti naredbom strcmp(a,b) koja vraća jedinicu ako su stringovi a i b isti, a nulu u suprotnom. Naredba findstr('a','b') nalazi sve pozicije u stringu a gdje se pojavljuje string b. Npr. naredbama» recenica='dvadeset deveti avgust hiljadu devetsto devedeset prve godine';» findstr(recenica,'a') ans = nalazi se pozicija u stringu recenica sve pozicije gdje se pojavljuje slovo a. Npr. pozicije u kojima se u istom stringu pojavljuje string 'dev' se dobijaju naredbom» findstr(recenica,'dev') ans = Ako stringa b nema u stringu a rezultat je prazna matrica» findstr(recenica,'deseti') ans = [] Naredba upper(a) pretvara sva slova u stringu u velika, a naredba lower(a) pretvara slova u mala:» a='string';» A=upper(a) A = STRING» AA=lower(a) AA = string Funkcija isletter(a) vraća nulu za one karaktere stringa koji nijesu slova a za slova vraća jedinicu, dok funkcija isspace(a) vraća jedinicu za one karaktere koji su bjeline (space-ovi ili tab-ovi) a za ostale vraća nulu. Funkcija strrep(a,b,c) u stringu a mijenja string b sa stringom c. Posmatrajmo sljedeći primjer» a='niz karaktera koji se mjenja';» strrep(a,'koji','promjenljiv') 145

152 Programiranje i M-fajlovi ans = Niz karaktera promjenljiv se mjenja Dakle u nizu a mijenjamo riječ koji sa riječi promjenljiv. Naredbom strtok(a,b) odsjeca u stringu a onaj dio do pozicije gdje se pojavljuje string b, tako naredbom» strtok(a,'r') ans = Niz ka iz niza a odsjeca se niz do prvog pojavljivanja slova r. U MATLAB-u postoje i funkcije koje konvertuju podatke, tako funkcija num2str(x) konvertuje broj x u string koji ima iste elemente. 5.5 FUNKCIJE ^IJI SU ARGUMENTI DRUGE FUNKCIJE U MATLAB-u postoje funkcije čiji argumenti mogu biti druge funkcije. Takva je funkcija feval(s,x) kojom se izračunava funkcija pod imenom s (ugra ena ili definisana function fajlom) za vrijednosti x.» s='sin'» feval(s,[-1:.5:1]) Primjer Napraviti funkcijski potprogram za izračunavanje integrala po Simpsonovom pravilu, u granicama od a do b sa tačnošću tac. Snimimo function fajl simp.m čiji je sadržaj: function in=simp(f,a,b,tac) % % Racunanje integrala funkcije f u granicama od a do b sa tacnoscu % tac. Ako nije data tacnost uzeto je da je tac=0.001 in=10^99; is=0; n=4; if nargin==3 tac=0.001; end while abs(in-is)>tac is=in; n=2*n; % definisanje vektora s=[ ] 146

153 MATLAB for Windows s1=[4*ones(1,n/2-1);2*ones(1,n/2-1)]; s=[1 s1(:)' 4 1]; h=(b-a)/n; x=a:h:b; y=eval(f); in=sum(y.*s)*h/3; end end Izračunajmo sada integral funkcije f(x)=xsin(x)cos(x) u intervalu od -1 do 1. To ćemo učiniti prosto naredbom» f='x.*sin(x).*cos(x)';» simp(f,-1,1). Tačnost je automatski Zadata tačnost, npr , postiže se sa» simp(f,- 1,1, ). U ovom primjeru treba reći da bi korektnije bilo definisati relativnu umjesto apsolutne greške. Naredba while bi u tom slučaju bila: while abs((in-is)/in)>tac. U MATLAB-u postoje dvije ugra ene funkcije za izračunavanje odre enog integrala: b I = f ( x) dx a u obliku I=quad(f,a,b,tac, korak) ili I=quad8(f,a,b,tac,korak), gdje je f naziv funkcije, a donja granica, b gornja granica, tac željena tačnost i korak korak integracije (koji se može izostaviti i tada se uzima neka default vrijednost). Razlika izme u ova dva algoritma je u brzini konvergencije koja je kod funkcije quad8 veća ali je istovremeno složenost izračunavanja povećana. Primjer Izračunati integral funkcije f(x)=sin(x) od 0 do π, sa tačnošću » quad('sin',0,pi, ) Napominjemo da se na ovaj način mogu računati jedino integrali ugra enih funkcija ili funkcija definisanih m-fajlovima. Primjer Izračunati integral funkcije f(x)=xsin(x) od 0 do π, sa tačnošću Potrebno je definisati funkciju f(x)=xsin(x), koju ćemo zvati sx(x). function s=sx(x) 147

154 Programiranje i M-fajlovi s=x.*sin(x); end Poslije izlaska iz editora, integral računamo sa:» quad('sx',0,pi,0.001) Nulu funkcije definisane m fajlom ili ugra ene funkcije, u okolini tačke x=a, možemo dobiti sa fzero(f,a,tac). Primjer Naći nule funkcije y=x 3 +x 2-2x-1 za x<0. U funkcijskom fajlu ff.m definišimo funkciju: function y=ff(x) y=x.^3+x.^2-2*x-1; end Nacrtajmo ovu funkciju» x=-2:.01:2;» plot(x,ff(x)),grid i sa slike vidimo da se jedna nula nalazi u blizini tačke -1.5 a druga u okolini tačke Na imo nule oko ovih tačaka sa tačnošću » fzero('ff',-1.5,0.001) ans = » fzero('ff',-0.5,0.001) ans = Slika 5.3 Grafik funkcije y=x 3 +x 2-2x-1 148

155 MATLAB for Windows Tako e u MATLAB-u postoje veoma korisne funkcije za rješavanje diferencijalnih jednačina metodom Runge-Kutta. Za to služe funkcije ode23 (metode nižeg reda) i ode45 (metode višeg reda). Postoje i adekvatne funkcije ode23p i ode45p koje pored izračunavanja rješenja diferencijalne jednačine vrši i iscrtavanje grafika. Dakle pomoću ovih funkcija riješavamo diferencijalnu jednačinu: y'=f(y,t) gdje je t nezavisna promjenljiva. Funkcija f(y,t) mora biti implementirana u.m fajlu. Naredba MATLAB-a kojom se rješavaju diferencijalne jednačine je [t,y]=ode23('f',to,tk,yo,tol,kon), gdje je f funkcija, to i tk granice u kojima se traži rješenje, yo je početna vrijednost u tački to. tol je greška, dok je kon kontrolni broj (ako je različit od nule, iteracije se ne ispisuju). Posljednja dva argumenta su opcioni - mogu se izostaviti. Izlaz t i y predstavljaju nezavisnu i zavisnu promjenljivu. Primjer Riješiti diferencijalnu jednačinu y'=cos(t)-tsin(t) za 0 t 3 i ako je y 0 =1. (Očigledno je riješenje ove diferencijalne jednačine y=tcos(t)). Prvo se u fajlu sss snimi funkcija cos(t)-tsin(t) pa nakon snimanja ovog fajla funkcijom ode23 riješimo diferencijalnu jednačinu. function yp=sss(t,y) yp=cos(t)-t.*sin(t); end» [t,y]=ode23('sss',0,3,1);» plot(t,y) Primjer Riješiti diferencijalnu jednačinu y'=-yt za -1 t 3 i ako je y 0 =0. function yp=sss(t,y) yp=-y.*t; end» [t,y]=ode23('sss',-1,3,0);» plot(t,y) Naredba ode23 može da posluži za rješavanje sistema od dvije jednačine sa dvije ili više nepoznatih. Primjer Riješiti sistem diferencijalnih jednačina: y 1 '=y 2 +sqrt(y 1 ) i y 2 '=-y 1 +sin(y 1 /2) za početne vrijednosti y 10 =0 i y 20 =1 za -2 t 2. function yp=sss(t,y) 149

156 Programiranje i M-fajlovi yp(1)=y(2)+sqrt(y(1)); yp(2)=-y(1)-sin(y(1)/2); end» [t,y]=ode23('sss',-2,2,[0 1]);» plot(t,y) Veoma je interesantna funkcija fmin('s',xo,xk) kojom se traži minimum funkcije s u intervalu od xo do xk. Na primjer za funkciju function y=fff(x) y=x.^3-x-1; end na imo minimum u intervalu 0 x 4» fmin('fff',0,4) ans = Pored ove funkcije postoji i funkcija fimns koja služi za traženje minimuma funkcije više promjenljivih. Ove dvije funkcije imaju mnoštvo opcija sa kojim se možete upoznati u helpu. U MATLAB-u postoji funkcija fplot koja služi za crtanje funkcije u nekom zadatom intervalu. Ovu funkciju ćemo objasniti kroz sljedeće primjere. Naredbom» fplot('sin',[0 4*pi]) iscrtava se funkcija sin(x) u intervalu 0 x 4π, dok se naredbom» fplot('sin(x)',[0 4*pi],'-+') prikazuje ista funkcija u istom intervalu pomoću markera -+. Naredbom» fplot('[sin(x),cos(x)]',[0 4*pi],'-x') prikazuju se funkcije sin(x) i cos(x) u intervalu 0 x 4π sa markerima '-x'. Naredba» fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi],'-o') crta apsolutnu vrijednost sume reda e -jxn za n od 0 do 9 u granicama 0 x 2π sa markerima '-o'. Na slici 5.4a prikazana je ova funkcija. Funkcija y=tan(x) u granicama -2π x 2π i -2π y 2π se crta naredbom (slika 5.4.b)» fplot('tan',[-2*pi 2*pi -2*pi 2*pi],'-*') Naredbom» fplot('[tan(x),sin(x),cos(x)]',[-2*pi 2*pi -2*pi 2*pi]) 150

157 MATLAB for Windows se u granicama -2π x 2π i -2π y 2π, crtaju funkcije sin(x), cos(x) i tan(x) što je prikazano na slici 5.4c Funkcija 1/sin(x) u granicama 0.01 x 0.1 sa tačnošću 10-3 se crta naredbom (slika 5.4d)» fplot('sin(1./ x)', [ ],1e-3) Nacrtajmo i funkciju -(x 2-2x+1)/(x 2 +x-2) u granicama -4 x 4 i -10 y 10» fplot('-(x.^2-2*x+1)./(x.^2+x-2)', [ ]) i primijetimo da ova funkcija ima singularitet u x=-2 (vertikalnu asimptotu) i u x=1 (postoji granična vrijednost). Na slikama 5.4e i 5.4f prikazane su funkcije -(x 2-2x+1)/(x 2 -x-2) i -(x 2-2x+1)/(x 2-1)» fplot('-(x.^2-2*x+1)./(x.^2-x-2)', [ ])» fplot('-(x.^2-2*x+1)./(x.^2-1)', [ ]) a) b) c) d) 151

158 Programiranje i M-fajlovi e) f) Slika 5.4. Korišćenje funkcije fplot 152

159 MATLAB for Windows glava šesta GRAFIČKI OBJEKTI U ovom poglavlju će biti objašnjene funkcije za kontrolu pojedinih elemenata grafičkog okruženja MATLAB-a: osnovnog ekrana, grafičkog prozora, koordinatnog sistema, linija, površina, kolorne matrice podataka, popunjenih poligona, teksta, ulazno izlaznog menija i grafičkih kontrola. Posebno je važno upravljanje pojedinim grafičkim objektima koji se kreiraju uobičajenim grafičkim funkcijama. U sklopu ovog poglavlja vodilo se računa o grafičkim komandama koje prilikom rada kreiraju jedan odnosno više objekata. Na kraju poglavlja dat je kompleksan primjer u kom je obuhvaćen rad sa najvažnijim grafičkim objektima i njihovim osobinama. 6.1 OSNOVNI EKRAN (ROOT) Svakom grafičkom objektu u MATLAB-u dodijeljen je numerički identifikator (handle) koji jedinstveno odre uje objekat i pomoću kojeg se sa objektom rukuje-upravlja. Napomenimo da numerički identifikatori pojedinih objekata koji su dati u knjizi mogu uzimati vrijednosti koje se ne poklapaju sa onim koje su date kao rezultat. Osnovni ekran je tako e grafički objekat kojeg karakteriše identifikator 0. Tekuće osobine osnovnog ekrana se mogu dobiti naredbom:» get(0) gdje su osobine osnovnog ekrana: CurrentFigure = [1] Diary = off DiaryFile = diary Echo = off Format = short FormatSpacing = loose PointerLocation = [547 3] PointerWindow = [0] ScreenDepth = [4] 153

160 CurrentFigure Diary DiaryFile Echo Format FormatSpacing Grafički objekti ScreenSize = [ ] Units = pixels ButtonDownFcn = Children = [1] Clipping = on Interruptible = no Parent = [] Type = root UserData = [] Visible = on Objasnimo neke od osobina osnovnog prozora: PointerLocation PointerWindow ScreenSize Units Trenutno aktivni grafički prozor. Ova osobina se može dobiti i sa gcf. Promjena tekućeg grafičkog prozora se može postići sa gcf=broj. Grafički prozori koji se otvaraju redom dobijaju brojeve od jedan pa nadalje. Da li je uključeno kreiranje dnevnika. Ako nije, vrijednost ove osobine je 'off', a ako jeste 'on'. Fajl u kom se smješta dnevnik. Default vrijednost osobine je 'diary'. Pokazuje stanje naredbe echo. Koji je način prikazivanja brojeva uključen. Npr. 'short', default vrijednost koja odgovara naredbi format short. Definiše format zapisivanja matrica. Moguće vrijednosti ove osobine su 'compact' i 'loose' koje odgovaraju naredbama format compact i format loose. Pozicija pokazivača miša. U kom se prozoru trenutno nalazi pokazivač miša. Ako je to osnovni prozor vrijednost ove osobine je 0. Veličina ekrana. Vektor sa četiri elementa koji determinišu početne i krajnje tačke grafičkog prozora. Jedinica u kojoj se mjeri grafički prozor. Moguće vrijednosti su 'pixels' - ekranska tačka, 154

161 Children Parent prozora, npr. MATLAB for Windows 'normalized' - normalizovane vrijednosti, donji lijevi ugao grafičkog prozora (0,0) a gornji desni (1,1), 'inches' - inči (1inč=2.54cm), 'centimeters' - centimetri i 'points' - 1/72 inča. Vektor numeričkih identifikatora grafičkih prozora. Numerički identifikator roditelja tekućeg grafičkog objekta. Osnovni ekran nema roditelja pa je vrijednost ove osobine prazna matrica []. Naredba get omogućava da se dobiju i pojedine osobine grafičkog» get(0,'diary') daje sadržaj osobine Diary. Za postavljanje osobina koristi se naredba set. Npr. naredbi» figure(2);» set(0,'currentfigure',2) adekvatna je naredba» gcf=2 odnosno, naredbi» set(0,'diary','on','diaryfile','dnevnik.txt') adekvatna je naredba» diary dnevnik.txt Potpuno su adekvatne i naredbe» set(0,'format','long')» format long Postoji tako e i niz osobina koje se mogu samo pročitati i kod kojih pokušaj mijenjanja prouzrokuje grešku. Tako se ne može promijeniti vrijednost osobine ScreenSize.» set(0,'screensize',[ ])??? Error using ==> set Read-only properties can't be modified. Napomenimo da nazive osobina npr. ScreenSize možemo pisati bez razlike i malim i velikim slovima. U ovom pregledu su obra ene osobine koje se mogu mijenjati kako naredbom set tako i nekom od već definisanih naredbi. Postoji 155

162 Grafički objekti čitav niz osobina grafičkih objekata kojima se može prići samo naredbom set i sa njima ćemo se još srijetati. Naredbom set(0) možemo da vidimo moguće vrijednosti koje mogu uzimati pojedine osobine. 6.2 GRAFI^KI PROZOR (FIGURE) Grafički prozor se kreira sa naredbom figure. Sa nekim specifičnostima ove naredbe smo se već srijetali u okviru trećeg poglavlja. Ako se ne navodi broj grafičkog prozora, sa naredbom figure kreiraju se prozori počev od 1 pa redom nadalje. Prvi grafički prozor se može kreirati tako što se neka funkcija grafički prikaže ili se prazan grafički prozor dobija naredbom figure(1). Osobine ovakvog prozora se dobijaju naredbom» get(1) Color» set(1,'color','w')» set(1,'color',[ ]) Colormap CurrentAxes CurrentObject MinColormap MenuBar Name NumberTitle Boja pozadine. Može se zadati karakterom po pravilima iz naredbe plot, npr: daje bijelu pozadinu, ili se boja pozadine definiše vektorom od tri broja izme u 0 i 1 po RGB pravilu Veličina kolorne mape. (Obično 64x3). Numerički identifikator trenutnog koordinantnog sistema koji se za tekući grafički prozor može dobiti naredbom gca. Identifikator tekućeg grafičkog objekta. Minimalan broj boja koje predstavljaju kolornu mapu. Definiše da li će grafički prozor imati standardan Windows meni sa opcijama File, Edit, Window i Help (vrijednost osobine 'figure') ili bez ovih funkcija ('none'). Ime grafika. Definiše prikazivanje rednog broja figure u naslovu grafičkog prozora. Ako je 'on' prikazan je broj, a ako je 'off' ne prikazuje se redni broj. 156

163 MATLAB for Windows PaperType Tip papira na koji se može štampati grafički objekat. Predefinisan je usletter, a moguće je uzeti i više drugih tipova me u kojima a4, b5 itd. Primjer Kreirajmo dva grafička prozora imena Prozor2 sa i bez broja prozora sa različitim bojama pozadine.» figure('color',[ ],'Name','Prozor2','NumberTitle','off')» figure('color','r','name','prozor2') NextPlot Osobina definiše gdje će biti prikazan naredni grafik. Vrijednosti ove osobine mogu biti: 'add' dodaje grafik u tekući grafički prozor, 'new' otvara novi grafički prozor i u njemu prikazuje novi grafik, 'replace' stari grafik mijenja sa novim. PaperUnits Jedinice u kojima se mjeri veličina papira koja odgovara grafičkom prozoru. PaperOrintation Orijentacija papira, može biti uspravljena 'portrait' ili položena 'landscape'. Ova se osobina može podešavati naredbom orient. PaperPosition Pozicija papira (vektor sa četiri elementa) - to jest margine na štampajućem papiru. PaperSize Veličina papira (vektor sa dva elementa). PaperType Tip papira. Mogu biti 'usletter' - 8x11 1/2 inča, 'a4' - 21x29.7cm, itd. Pointer Oznaka pokazivača miša. Strijelica je sa 'arrow' a časovnik 'watch'. Pokazivač miša je u obliku časovnika kada je računar zauzet nekom operacijom pa se na ovaj način onemogućava zadavanje operacija mišem. Position Pozicija grafičkog prozora na ekranu (vektor sa četiri elementa). Units Jedinice u kojima se mjeri veličina papira. Primjer Formirati grafičke prozore različitih veličina sa različitim mjernim jedinicama.» figure('name','vel1','units','inches','position',[ ])» figure('name','vel2','units','pixels','position',[ ])» figure('name','vel3','units','normalized','position',[ ])» figure('name','vel4','units','points','position',[ ]) 157

164 Grafički objekti Type Visible Children Parent Tip grafičkog objekta (ovdje 'figure'). Ako je 'on' prozor je vidljiv odnosno 'off' ako je nevidljiv. Objekti kreirani unutar grafičkog prozora. Roditelj, objekat iz kojeg je kreiran grafički prozor. 6.3 KONTROLA OSA Veoma važan grafički objekat je koordinantni sistem sa osama. Osama se može upravljati naredbom axes. Tako e, značajne naredbe za upravljanje osama su cla i gca. Naredba gca daje numerički identifikator koji je priključen tekućim osama. Naredba cla briše sve objekte unutar tekućih osa, dok se naredbom cla reset brišu svi objekti unutar trenutnih osa i vraćaju osobine grafičkog prozora na default predefinisane. Za brisanje grafičkih objekata, pa i osa može da posluži naredba delete. Naime delete(a) briše grafički objekat kome je dodijeljen numerički identifikator a. Npr. naredbom» delete(gca) brišu se tekuće ose. Ista naredba se može primijeniti na bilo koji grafički objekat, tako da naredba» delete(gcf) briše tekući grafički prozor. Naredbom delete file, briše se fajl sa diska. U tom pogledu ova je naredba potpuno analogna DOS naredbi DEL. Osobine tekućih osa se mogu ravnopravno postavljati sa set(gca,osobina1,vrijednost1,osobina2,vrijednost2,...) axes(osobina1,vrijednost1,osobina2,vrijednost2,...) Osobine tekućeg grafika se mogu dobiti sa» get(gca) Moguće je istovremeno sa kreiranjem koordinantog sistema, dodijeliti nekoj promjenljivoj vrijednost numeričkog identifikatora koji opisuje te ose» a=axes('box','on','position',[ ]) a = Naredbom 158

165 MATLAB for Windows» axes(a) čini se tekućim koordinantni sistem čiji je identifikator a. Naredbom axes, bez argumenata, crta se prazan koordinantni sistem. Vrijednostima pojedinih osobina se u tom slučaju dodjeljuju neke predefinisane vrijednosti. U ovom slučaju koordinantni sistem zauzima čitav grafički prozor. AspectRatio Box Najvažnije osobine grafičkog objekta su: Vektor sa dva elementa, prvi definiše odnos dužina vertikale sa horizontalnom osom a drugi odnos jedinica u kojima se mjere koordinante ose. Predefinisano je [-Nan -Nan]. Pravougaonik oko tekućih osa. Ako je 'on' crta se pravougaonik oko osa a sa 'off' se ne crta. Primjer Nacrtati krivu y=x 3-2x 2 u intervalu -4 x 4 i onemogućiti iscrtavanje pravougaonika oko osa.» x=-4:.1:4;» y=x.^3-2*x.^2;» plot(x,y)» set(a,'box','off') Clim Vektor sa dva elementa koji definišu predstavljanje u pseudo bojama. Ova se veličina može postavljati naredbom caxis. Color Boja grafika u kome se iscrtavaju koordinante ose. Primjer Grafik iz prethodnog zadatka nacrtati na zelenoj pozadini.» set(a,'color','g') ColorOrder FontAngle FontName FontSize FontStrikeThrough Matrica dimenzija m x 3, kojom se definiše redosljed boja kojim će se isrtavati linije na ekranu. Ako se ništa ne zada, pretpostavljaju se prvih šest boja iz MATLAB palete. Ove se osobine mogu postavljati kao u naredbi plot sa 'r', 'w', itd... Ugao pod kojim se prikazuje tekst. Font u kojem će se ispisivati tekst na osama. Npr. 'helvetica'. Veličina fonta u tačkama - pointima. Prekriženi font. Moguće vrijednosti 'on' ili 'off'. 159

166 FontWeight FontUnderline FontWeight Grafički objekti Stil fonta. Predefinisana vrijednost je 'normal', a moguće vrijednosti su 'light' (posvjetljena slova), 'bold', (podebljana slova). Podvučeni font. Moguće vrijednosti 'on' ili 'off'. Debljina fonta. Moguće vrijednosti 'normal' i 'bold'. Primjer Na prethodni grafik nanijeti font Swiss veličine 30 prekrižen.» set(a,'fontname','swiss','fontsize',30,'fontstrikethrough','on') GridLineStyle Odre uje oblik linija koje služe za mrežu. Moguće vrijednosti '-', '--', '-.', ':' i '.'. Ova se mreža iscrtava naredbom grid. LineWidth Debljina linije kojom se iscrtavaju ose. Primjer Prikazati na prethodnom grafiku mrežu u obliku pune linije. Neka debljina osa bude 2.» set(a,'gridlinestyle','-','linewidth',2)» grid NextPlot Definiše poziciju iscrtavanja novog grafika. 'new' - grafik se crta u novom koordinantnom sistemu, 'add' - dodaje se u postojeći, 'replace' - mijenja tekući grafik u koordinantnom sistemu. Position Vektor sa četiri elementa koji definišu poziciju koordinantnog sistema na ekranu. TickDir Pozicija crtica kojim se označavaju pojedine vrijednosti na koordinatnim osama. Predefinisano je 'in' (crtice orjentisane unutar grafika) i 'out' (crtice orjentisane van grafika). TickLength Dužina crtice kojom se označavaju pojedine vrijednosti na koordinantnim osama. Title Naslov prozora. Ovo je tekstualni objekat čiji se numerički identifikator dobija naredbom» get(gca,'title') Osobine ovog objekta se dobijaju naredbom» get(get(gca,'title')) dok se osobine postavljaju naredbom 160

167 MATLAB for Windows» set(get(gca,'title'),'osobina1','vrijednost1',...) Tekstualni objekti su i labele koordinatnih osa - osobina XLabel, YLabel i ZLabel. Units View XColor XDir XGrid XScale XTick XTickLabels Za definisanje x-ose se koriste naredbe: Veličine u kojima se mjere veličine koordinatnih osa. Moguće jedinice su 'pixels', 'normalized', 'inches', 'centimiters' i 'points'. Vektor sa dva elementa koji služi za preslikavanje 3-D grafika u 2-D zonu. Može se postavljati naredbom view, i vezan je za grafike tipa 'mesh', 'watterfall' i 'surf'. Boja x-ose. Orjentacije x-ose. Moguće vrijednosti su 'normal' x-osa orjentisan u pravcu porasta vrijednosti x i 'reverse' suprotno. Može imati vrijednosti 'on' i 'off'. Ako je 'on' iscrtava se mreža normalna na x-osu. Definiše način skaliranja x-ose. Moguće vrijednosti su 'linear' i 'log'. Markeri koji se nalaze na nekim tačkama grafika. Definiše poziciju labele na x-osi gdje postoji XTick. Primjer Na grafik iz prethodnih zadataka nanijeti oznake na x-osi a, b, i c. Ujedno neka boja x-ose bude plava.» set(a,'xticklabels',['a' 'b' 'c']','xcolor','b') XTickaLabelMode Moguće vrijednosti 'manual' - ručno postavljanje labela, 'auto' - automatsko postavljanje labela. XLim Vektor sa dva elementa od kojih prvi definiše donju granicu a drugi gornju granicu x-ose. Ova se osobina može postavljati i naredbom axis. Iste osobine kao za x-osu postoje i za druge dvije koordinantne ose. Ove se osobine razlikuju samo po prvom slovu imena. Children Numerički identifikatori svih objekata kreiranih koordinatnih osa. 161

168 Grafički objekti Primjer Unutar osa nacrtati funkcije y=x 2 i y=2x+4 i naći identifikatore ovih objekata.» a=axes;» x=-4:0.1:4;» plot(x,x.^2,x,2*x+4)» get(a,'children') ans = Parent Visible Numerički identifikator grafičkog prozora u kom su se kreirale ose. Definiše vidljivost osa. Primjer Učiniti nevidljivim ose date numeričkim identifikatorom a iz prethodnog zadatka.» set(a,'visible','off') 6.4. GRAFI^KI OBJEKTI OD KOJIH SE SASTOJI GRAFIK Osnovni objekti od kojih se sastoji grafik su: linija (line), površina (surface), kolorna slika matrice (image), popunjeni poligon (patch) i tekstualni objekti (text). Ovi grafički objekti se mogu dobiti naredbama line, patch, surface i image. Me utim nama su interesantniji grafički objekti koji nastaju crtanjem nekih uobičajenih grafika LINIJA - LINE Grafički objekti tipa linije se dobijaju kao rezultat slijedećih naredbi: plot, polar, semilogx, semilogy, loglog, stem, compass, plot3, contour, itd... Svim ovim naredbama, osim contour, dobija se onoliko objekata koliko se funkcija na jednom grafiku crta. Naredbom contour dobija se onoliko objekata koliko je izolinija na ekranu. Primjer Odrediti numeričke identifikator prilikom crtanja jedne funkcije naredbom plot i prilikom crtanja dvije funkcije naredbom plot. Nacrtajmo prvo funkciju y=sin(x 2 ). 162

169 » x=-1:0.02:1;» a=plot(x,sin(x.^2)) Numerički identifikator linije grafika je MATLAB for Windows a = Odredimo numeričke identifikatore funkcija nacrtanih na jednom grafiku y=sin(x 2 ) i y=sin(x 2 )/(x+3).» b=plot(x,sin(x.^2),'r',x,sin(x.^2)./(x+3)) b = Naredbom contour dobija se više objekata tipa linija. Primjer Nacrtati izodijagram z=sin(x 2 +y 2-2xy) u granicama -2 x 2 i -2 y 2. Odrediti numerički identifikator svih linija u grafiku.» [x,y]=meshdom(-2:.1:2,-2:.1:2);» z=sin(x.^2+y.^2-2*x.*y);» [a,b]=contour(z); Numerički identifikatori izolinija smješteni su u vektoru b» b b = Naredbom get(a(1)) dobijaju se osobine objekta tipa linija. Naredbama meshc i surfc, pored više objekata tipa linija, stvara se jedan objekat koji predstavlja površinu i tipa je surface. 163

170 Grafički objekti Primjer Nacrtati meshc dijagram promjenljive z iz prethodnog primjera i odrediti tip ovako kreiranih grafičkih objekata.» a=meshc(z) a = » get(a(1),'type') ans = surface» get(a(2),'type') ans = line Prvi kreirani grafički objekat je tipa površine (surface) dok su ostali tipa linije (line). Neke od značajnijih osobina objekta tipa linije (line) su: Color Boja linije. LineStyle Oblik linije. LineWidth Debljina linije. Xdata Podaci po x-osi. Slične su osobine Ydata i Zdata (ova posljednja kod naredbe plot3). Parent Roditeljski koordinatni sistem. Type Za ovaj grafički objekat 'line'. Primjer Nacrtati funkciju y=sin(x) za -2π x 2π i podesiti širinu linije na 2 i neka je grafik predstavljen bojom [ ].» x=-pi:0.02:pi;» a=plot(x,sin(x));» set(a,'linewidth',2,'color',[ ]) POPUNJENI POLIGON - PATCH 164

171 MATLAB for Windows Popunjeni poligon se dobija naredbama fill i fill3. Funkcija waterfall daje više objekata tipa patch. Važne osobine ovih grafika su: EdgeColor FaceColor LineWidth Type Boja granične linije. Boja površi. Debljina granične linije. Za ovaj grafički objekat tip je 'patch'. Naredbe Xdata, Ydata, Zdata, Children, Parent i ostale, analogne su kao kod ostalih grafičkih objekata. Primjer Nacrtati funkciju y=sqrt(x) kao poligon popunjen crvenom bojom. Zatim podesiti boje površine i granice, a debljinu granice postaviti na 5.» x=1:20;» a=fill(x,sqrt(x),'r') a = » set(a,'facecolor',[ ],'EdgeColor',[ ],'LineWidth',5) POVR[INA - SURFACE Objekat tipa površina (surface) se dobija kao rezultat sljedećih grafičkih komandi: mesh, surf, pcolor. Tako e se ovaj tip grafičkog objekta dobija kao prvi objekat pri naredbama meshc i surfc. EdgeColor Boja linija. Može imati i vrijednosti 'none', 'flat', 'interp' ili se može precizirati vrijednost boje kojom se linije iscrtavaju. Ove vrijednosti imaju potpuno isti smisao kao u naredbi shading. FaceColor Boja površi unutar granica romba koji čine čvorišta četiri susjedne tačke. MeshStyle Mreža kojom se isacrtavaju mesh dijagrami. 'both' mreža po obje koordinate, 'row' samo po redovima i 'column' samo po kolonama. Primjer Nacrtati surf dijagram z=sin(x 2 +y 2 +eps)/(x 2 +y 2 +eps) u granicama -2 x,y 2. Definisati zatim boju površina izme u linija kao crvenu 'r' i boju linija kao [ ].» [x,y]=meshdom(-2:.1:2,-2:.1:2);» z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps);» a=surf(z) 165

172 Grafički objekti» set(a,'edgecolor',[ ],'Facecolor','r') KOLORNA SLIKA MATRICE - IMAGE Ovaj tip grafičkog objekta se može kreirati naredbom imagesc. Tip grafičkog objekta (Type) je image. Upravljanje sa ovim grafičkim objektom se obavlja na sličan način kao sa line, surface i patch TEKSTUALNI OBJEKAT - TEXT Tekstualni objekat se može kreirati naredbom text, i tom prilikom može se nekoj promjenljivoj dodijeliti numerički identifikator ovog objekta» a=text(30,30,1,'naslov grafika') Analogno prethodnom razmatranju, osobine ovog objekta se mogu dobiti naredbom» get(a) Veliki broj osobina tekstualnog objekta je zajednički za ostale objekte. Pomenimo neke specifične osobine ovog tipa objekata: HorizontalAligment VerticalAligment Rotation Horizontalno poravnavanje. Moguće vrijednost su 'left' (default), 'right' i 'center'. Vertikalno poravnavanje. Moguće vrijednosti 'top', 'bottom', 'cap', 'baseline' i 'middle' (default). Ugao rotacije tekstualnog objekta. Kod teksualnog objekta, postoji tako e niz osobina koje se odnose na font. Tip ovog objekta je 'text'. Već je napomenuto da kada se kreiraju ose istovremeno se kreira i više tekstualnih objekata (Title, Xlabel, Ylabel, Zlabel), čiji se numerički identifikator može dobiti naredbom» get(gca,'xlabel') dok se osobine tekstualnog objekta dobijaju naredbom» get(get(gca,'xlabel')) odnosno sadržaj osobine FontSize sa» get(get(gca,'xlabel'),'fontsize') Analogno se mogu postavljati osobine ovakvog objekta sa» set(get(gca,'xlabel'),'fontsize',20) 166

173 MATLAB for Windows Primjer Za 0 x 1 naredbom plot nacrtati funkciju y=exp(-x 2 )sin(x 2 ). Nakon toga unijeti xlabel-u sa sadržajem 'Potpis ispod crteža' u plavoj boji i podvučeno.» x=0:0.01:1;» y=exp(-x.^2).*sin(x.^2);» plot(x,y)» set(get(gca,'xlabel'),'string','potpis ispod crteza','color','b','fontunderline','on') 6.5 GRAFI^KE KONTROLE Naredba je karakteristika tekstualnog okruženja. Grafičko okruženje podrazumjeva interaktivni rad, to jest da se niz operacija, parametara može zadavati klikom miša na odgovarajuće grafičke kontrole. MATLAB tako e podržava ovu koncepciju. Grafičke kontrole koje se mogu koristiti u MATLAB-u su: frame (površina), text (polje sa tekstom), edit (polje za unos teksta), popupmenu (meni), check (prekidač), radio (prekidač), slider (klizač), pushbutton (taster). Grafičke kontrole se formiraju naredbom uicontrol. Svakoj kontroli se pridružuje numerički identifikator pomoću kojeg se upravlja kontrolom FRAME KONTROLA Frame kontrola se koristi za iscrtavanje površine koja će da nosi ostale kontrole. Ova kontrola sa default osobinama se formira naredbom» a=uicontrol('style','frame') sa get(a) se dobijaju osobine ove kontrole. Sve osobine kontrola su iste samo što od kontrole do kontrole neke od njih imaju drugačiju namjenu. Osobine ove kontrole se postavljaju naredbom set. Važnije osobine ove kontrole su BackgroundColor Position Style Units Type Boja površine; Vektor sa četiri elementa čiji prvi par pokazuje donji lijevi ugao a drugi par je dimenzija površine; 'frame'; Veličina u kojoj se mjeri veličina površine; 'uicontrol'. Pored ovih postoji i niz drugih osobina za ovu kontrolu manje značajnih. Primjer Kreirati grafički prozor i na njemu unijeti frame kontrolu koja će služiti kao nosilac ostalih kontrola. 167

174 Grafički objekti» PrvaGP=figure('NumberTitle','off','Name','Program za 2-D prikaze',... 'Resize','off','Position',[ ]);» Frame1=uicontrol(PrvaGP,'Style','frame','Position',[ ],... 'BackgroundColor',[ ]); TEXT KONTROLA Text grafička kontrola se formira naredbom» a=uicontrol('style','text'); Važnije osobine ove kontrole su BackgroundColor Boja pozadine; ForegroundColor Boja slova; HorizontalAlignment Horizontalno poravnavanje; Position Pozicija kontrole; String Tekst koji se upisuje u kontrolu; Style 'text'; Units Mjerna veličina; Type 'uicontrol'; Visible 'on' kontrola je vidljiva, 'off' kontrola je nevidljiva. Primjer Prethodno definisanu text kontrolu pozicionirati na početnu tačku (200,200) širine i visine 100x20 pointa sa upisanim tekstom 'Proba' u žutoj boji preko pozadine u crvenoj boji.» set(a,'position',[ ],'BackgroundColor',[1 0 0],... 'ForegroundColor',[0 1 1],'String','Proba') EDIT KONTROLA Edit kontrola se kreira naredbom» a=uicontrol('style','edit'); gdje je a numerički identifikator pomoću kojeg se može upravljati kontrolom. Značenje osobina BackgroundColor, ForegroundColor, HorizontalAlignment i Type je isto kao kod text kontrole. Razlika ove i text kontrole se ogleda u činjenici što se tekstualni sadržaj ove kontrole može mijenjati tako što se na nju klikne mišem i unese novi tekst čime se mijenja sadržaj osobine string. Primjer Kreirajmo edit kontrolu u kojoj piše 'Pocetak' kliknimo na nju i upišimo 'Kraj'. Naredbom get pogledajmo zatim sadržaj String osobine kontrole 168

175 MATLAB for Windows» a=uicontrol('style','edit','position',[ ],'String','Pocetak')» get(a,'string') ans = Kraj Veoma važna osobine ove (pa i drugih kontrola) je Callback gdje se upisuje niz naredbi koji će se izvršiti kada se aktivira ova kontrola. Na primjer u edit kontrolu upišimo String1» String1='Pocetak';» a=uicontrol('style','edit','position',[ ],... 'String',String1,'Callback','String1=get(a,''String'')') a = Klikom na kontrolu i upisom stringa mjenja se i promjenljiva String1, npr. neka se prvo upiše 'Nastavak', pa zatim 'Kraj'.» String1 = Nastavak String1 = Kraj Primijetimo da kada se javi potreba da se u okviru Callback koristi apostrof ovdje se mora unijeti dvaput. Ako se sadržaj Callback stringa prostire u više redova uokviruje se srednjim zagradama, redovi počiju apostrofom a završavaju apostofom, pa se postavlja zarez i tri tačke pa novi red. Posljednji red završava se apostrofom. Primjer Neka se u grafičkom prozoru unesu tekst kontrola sa promjenljivom 'N=' i edit kontrola u kojoj se u početku nalazi string '20'. Neka je početna vrijednost promjenljive N=20 i neka se pomoću edit kontrole upisom brojeva u nju unosi i mijenja sadržaj promjenljive N.» N=20;» uicontrol('style','text','position',[ ],'String','N=')» a=uicontrol('style','edit','position',[ ],... 'String','20','Callback','N=str2num(get(a,''String''))') Unesimo u edit kontrolu vrijednost 234 i pročitajmo sadržaj promjenljive N N = 169

176 234 Grafički objekti POPUPMENU KONTROLA Ova kontrola se koristi za iscrtavanje menija u kojem se bira jedna od ponu enih opcija. Opcija koja je trenutno izabrana prikazana je u zatvorenom meniju. Sa menijem se radi tako što se klikne na strelicu na dolje i izabere odovarajuća opcija. Osobine BackgroundColor, ForegroundColor, Position, Units, Callback, Type imaju isto značenje kao u dosadašnjim kontrolama. Osobina String definiše sadržaj opcija kontrole dok je Style 'popupmenu'. Primjer U grafički prozor definisan primjerom unijeti popupmenu koji ima opcije 'mesh', 'surf', 'waterfall', 'contour', 'meshc', 'surfc', 'interp' i 'flat'. Neka je početna vrijednost promjenljive Grafik=1 (što znači da je izabrana default vrijednost - prva vrijednost u meniju 'mesh').» Grafik=1;» Menielementi=str2mat('mesh','surf','waterfall','contour',... 'meshc','surfc','interp','flat');» Popup1=uicontrol(PrvaGP,'Style','popupmenu','String',Menielementi,... 'Position',[ ],'Callback','Grafik=get(Popup1,''Value'');'); Otvorite meni i kliknite na 'surf', kako je u promjenljivu Grafik smješten sadržaj Value osobine popupmenija ova promjenljiva uzima vrijednost 2.» Grafik Grafik = RADIO KONTROLA Ova kontrola je kružnog oblika. Aktivira se klikom na nju a istim postupkom i deaktivira. Kada je kontrola aktivna ima upisan crni krug. Ovakve kontrole se koriste u grupama i obično je samo jedna od njih aktivna. Klik na jednu od ovih kontrola obično izaziva "gašenje" ostalih. Style ove kontrole je 'radio'. Najznačajnija osobina ove kontrole je 'Value' koja ima vrijednost 0 ako prekidač nije uključen i 1 u suprotnom. Primjer Kreirati u grafičkom prozoru iz prethodnog primjera dvije radio kontrole koje jedna drugu isključuju, ujedno neka klik na prvu kontrolu (koja je u početku uključena) prouzrokuje da promjenljiva SQRT uzme vrijednost 0 a klik na drugu daje SQRT=1. 170

177 MATLAB for Windows» SQRT=0;» Radio1=uicontrol(PrvaGP,'Style','Radio','Position',... [ ],'Value',1,'Callback',... 'set(radio1,''value'',1);set(radio2,''value'',0);sqrt=0;',... 'Backgroundcolor',[ ]);» Radio2=uicontrol(PrvaGP,'Style','Radio','Position',... [ ],'Value',0,'Callback',... 'set(radio2,''value'',1);set(radio1,''value'',0);sqrt=1;',... 'Backgroundcolor',[ ]); CHECK KONTROLA Check kontrola, slično kao radio, predstavlja prekidač. Razlika u odnosu na radio kontrolu je ta što se ova kontrola koristi samostalno i predstavlja jednu opciju sa dvije mogućnosti. Pravougaonog je oblika i kada je kontrola uključena u njoj je upisan znak x. Po načinu rada ova kontrola je slična sa radio kontrolom SLIDER KONTROLA U Windows okruženju veoma često se pojedine naredbe zadaju pomoću klizača. U MATLAB-u klizač je kontrola sa stilom 'slider'. Izgled klizača prikazan je na slici 6.1. Slika 6.1 Klizač kontrola Kvadratić na klizaču predstavlja trenutnu vrijednost neke veličine. Klikom na strelice kvadratić se pomijera u jednom ili drugom pravcu. Klikom na površ klizača oko kvadratića pomjeraj je nešto veći u datom smjeru, a kvadatić se može i prevući do željene pozicije. Osobine koje izdvajaju klizač od ostalih kontrola su Max maksimalna vrijednost koja se može postići klizačem. Klizač u krajnje desnoj ili gornjoj poziciji. Default vrijednost ove osobine je 1. Min minimalna vrijednost koja se može postići klizačem. Klizač u krajnje lijevoj ili donjoj poziciji. Default vrijednost 0. Value vrijednost trenutne pozicije klizača izme u Min i Max. 171

178 Grafički objekti Primjer Povezati slider kontrolu sa edit kontrolom iz primjera Neka se promjena veličine M može obavljati klizačem i edit kontrolom i neka ove dvije kontrole ažuriraju jedna na drugu.» M=20;» Tekst1=uicontrol(PrvaGP,'Style','text','Position',[ ],... 'String','M=','Backgroundcolor',[ ]);» Edit1=uicontrol(PrvaGP,'Style','edit','Position',[ ],... 'String','20','Callback',... ['set(slider1,''value'',str2num(get(edit1,''string'')));',... 'M=str2num(get(Edit1,''String''));'],'Backgroundcolor',[ ]);» Slider1=uicontrol(PrvaGP,'Style','Slider','Position',[ ],... 'min',20,'max',256,'value',0,'callback',... 'M=fix(get(Slider1,''value''));set(Edit1,''string'',num2str(fix(M)));'); PUSHBUTTON KONTROLA Pushbutton je taster (dugme) u Windows okruženju čijim se pritiskom odvija neka operacija. ^ak i ako ste relativno neiskusni Windows korisnik sreli ste se sa velikim brojem ovih dugmadi na kojima najčešće piše OK, Help, Cancel, itd. Nesumnjivo najznačajniji dio ove kontrole predstavlja Callback string. Primjer Kreirati pushbutton sa upisanim stringom 'Close' koji dovodi do zatvaranja tekućeg grafičkog prozora. Ovaj pushbutton pridružiti prozoru čiji je identifikator PrvaGP.» PushClose=uicontrol(PrvaGP,'Style','pushbutton','Position',[ ],... 'String','Close','Background',[ ],'Callback','close(gcf);'); 6.6 UIMENU U dosadašnjem radu vidjeli smo da grafički prozor može biti sa standardnim menijem ili bez njega. Dodatne opcije menija se mogu dodavati naredbom uimenu. Oblik ove naredbe je a=uimenu('label','naslovopcije','osobina1','vrijednost1',...) Numerički identifikator a služi za upravljanje ovom opcijom menija. U okviru jedne opcije menija mogu se formirati podmeniji naredbom b=uimenu(a,'label','naslovopcije','osobine','vrijednosti',...) 172

179 MATLAB for Windows gdje je a numerički identifikator menija a b je identifikator opcije tog menija. I meni opisan identifikatorom b može posjedovati svoje podopcije. Primjer Dodati standardnom meniju grafičkog prozora PrvaGP meni Options i u njemu nekoliko podopcija.» Meni(1)=uimenu(PrvaGP,'Label','Options');» Meni(2)=uimenu(Meni(1),'Label','Funkcija1');» Meni(3)=uimenu(Meni(1),'Label','Funkcija2');» Meni(4)=uimenu(Meni(1),'Label','Funkcija3');» Meni(5)=uimenu(Meni(1),'Label','Izbor funkcije');» Meni(6)=uimenu(Meni(1),'Label','Colormap'); gdje su podopcije Funkcija 1, Funkcija 2, Funkcija 3, Izbor funkcije i Colormap. Uobičajeno sve opcije menija imaju u imenu jedno podvučeno slovo koje služi za brzo startovanje opcije sa tastature. Ispred tog slova treba stavljati znak &. Primjer U prethodnom primjeru podvući različite karaktere koji služe za startovanje opcija sa tastature.» Meni(1)=uimenu(PrvaGP,'Label','&Options');» Meni(2)=uimenu(Meni(1),'Label','Funkcija&1');» Meni(3)=uimenu(Meni(1),'Label','Funkcija&2');» Meni(4)=uimenu(Meni(1),'Label','Funkcija&3');» Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije');» Meni(6)=uimenu(Meni(1),'Label','&Colormap'); U ovom primjeru podvučeni su karakteri O, 1, 2, 3, I i C. Važnije osobine menija su: Enable koja ima vrijednost 'on' ako se opcija menija može startovati, 'off' ako se opcija ne može startovati, Position pozicija u meniju. Veoma često se jedan meni dijeli u sekcije, skupine srodnih opcija, koje se dijele separatorima (linijama). Separator je naziv istoimene opcije uimenu-a koja može biti uključena i isključena ('on' ili 'off'). Pored pojedinih trenutno aktivnih opcija postavlja se znak čekiranja. Ovo se podešava osobinom menija Checked koja može imati vrijednosti 'on' i 'off'. Primjer Opcije menija Funkcija 1, Funkcija 2, Funkcija 3 i Izbor funkcije čine grupu i neka je na početku čekirana prva opcije i neka se me usobno isključuju. Meni(1)=uimenu(PrvaGP,'Label','&Options'); Meni(2)=uimenu(Meni(1),'Label','Funkcija&1','Checked','on','Callback',... 'set(meni(2:5),''checked'',''off'');set(meni(2),''checked'',''on'');'); Meni(3)=uimenu(Meni(1),'Label','Funkcija&2','Checked','off','Callback',

180 Grafički objekti 'set(meni(2:5),''checked'',''off'');set(meni(3),''checked'',''on'');'); Meni(4)=uimenu(Meni(1),'Label','Funkcija&3','Checked','off','Callback',... 'set(meni(2:5),''checked'',''off'');set(meni(4),''checked'',''on'');'); Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije','checked','off','callback',... 'set(meni(2:5),''checked'',''off'');set(meni(5),''checked'',''on'');'); Meni(6)=uimenu(Meni(1),'Label','&Colormap','Separator','on'); Vidimo da i ovaj grafički objekat ima Callback string kojim se može pozvati niz operacija aktiviranjem datog objekta. 6.7 INTERAKTIVNI PROGRAM ZA CRTANJE 2-D CRTE@A U ovom programu će biti prezentiran program D2CRTEZ.M u kojem će se crtati funkcija z=f(x,y) -2π x,y 2π, i koji predstavlja sublimat primjera iz ove glave. U okviru grafičkog prozora može se izabrati oblik 2-D crteža kao i broj odbiraka po x i y osi (M i N). Izbor tipa grafičkog predstavljanja se obavlja pomoću popupmenu kontrole. Podešavanje broja odbiraka se obavlja paralelno pomoću slider i edit kontrole. Dvije radio kontrole se koriste da bi se preciziralo da li se crta funkcija z=f(x,y) ili kvadratni korijen funkcije. Pored 2-D crteža paralelno sa stranicama ovog crteža može se crtati funkcije sum(z) i sum(z'). Izbor da li će ovi crteži biti prikazani se obavlja sa dvije check kontrole. U frame-u postoje i tri push dugmeta: Start - za početak crtanja grafika, Print - smještanje grafičkog prozora u Clipboard i Close za zatvaranje grafičkog prozora. U meniju grafičkog prozora dodata je opcija Options u kojoj se bira funkcija koja se crta (tri predefinisane ili sa Izbor funkcije upisom funkcije u otvorenom pomoćnom grafičkom prozoru) i kolorne mape prikaza (Colormap). Program se sastoji od definicije grafičkog prozora (D2CRTEZ.M), programa sa definicijom pomoćnog grafičkog prozora (POMOCNI.M), fajl sa definicijama funkcija (FUNK.M) i program u kome se vrši proračun i crtanje funkcije z=f(x,y) (CRTANJE.M) PROGRAM D2CRTEZ.M Nakon brisanja sadržaja radnog prostora, postavljaju se inicijalne vrijednosti N i M (broja odbiraka po x i y), Grafik (definiše tip grafičkog prikaza - predefinisano Grafik=1 - mesh), SQRT (za SQRT=0 crta se funkcija z=f(x,y) a za SQRT=1 crta se z=f 1/2 (x,y)), promjenljiva definiše funkciju koja se crta (vrijednosti od 1 do 3 predefinisane vrijednosti i 4 definiše neku fukciju definisanu od korisnika), Paleta je kolorna mapa koja se koristi (predefinisano 'hsv'), Broj 174

181 MATLAB for Windows promjenljiva u kojoj se smješta broj iscrtavanja funkcija, NovaFunkcija predstavlja od korisnika definisanu funkciju clear all; M=20; N=20; Grafik=1; SQRT=0; Funkcija=1; PaLeTa='hsv'; Broj=0; NovaFunkcija='exp(-x.^2-y.^2)'; Zatim definišimo grafički prozor (PrvaGP) i frame kontrolu koja će biti podloga ostalih kontrola (primjer 6.5.1) PrvaGP=figure('NumberTitle','off','Name','Program za 2-D prikaze',... 'Resize','off','Pointer','watch','Position',[ ],'Color',[ ]); Frame1=uicontrol(PrvaGP,'Style','frame','Position',[ ],... 'BackgroundColor',[ ]); Za definisanje broja odbiraka po x i y (M i N) koriste se dva para slider, edit i text kontola kao u primjeru Tekst1=uicontrol(PrvaGP,'Style','text','Position',[ ],... 'String','M=','Backgroundcolor',[ ]); Edit1=uicontrol(PrvaGP,'Style','edit','Position',[ ],... 'String','20','Callback',... ['set(slider1,''value'',str2num(get(edit1,''string'')));',... 'M=str2num(get(Edit1,''String''));'],'Backgroundcolor',[ ]); Slider1=uicontrol(PrvaGP,'Style','Slider','Position',[ ],... 'min',20,'max',256,'value',0,'callback',... 'M=fix(get(Slider1,''value''));set(Edit1,''string'',num2str(fix(M)));'); Tekst2=uicontrol(PrvaGP,'Style','text','Position',[ ],... 'String','N=','Backgroundcolor',[ ]); Edit2=uicontrol(PrvaGP,'Style','edit','Position',[ ],... 'String','20','Callback',... ['set(slider1,''value'',str2num(get(edit1,''string'')));',... 'N=str2num(get(Edit2,''String''));'],'Backgroundcolor',[ ]); Slider2=uicontrol(PrvaGP,'Style','Slider','Position',[ ],

182 Grafički objekti 'min',20,'max',256,'value',0,'callback',... 'N=fix(get(Slider2,''value''));set(Edit2,''string'',num2str(fix(N)));'); U popupmenu-u bira se način grafičkog prikaza (primjer 6.5.5) Menielementi=str2mat('mesh','surf','waterfall','contour',... 'meshc','surfc','interp','flat'); Popup1=uicontrol(PrvaGP,'Style','popupmenu','String',Menielementi,... 'Position',[ ],'Callback','Grafik=get(Popup1,''Value'');'); Dvije radio kontrole definišu vrijednost promjenljive SQRT Tekst3=uicontrol('Style','text','Position',[ ],'String','SQRT',... 'BackgroundColor',[ ]); Tekst4=uicontrol('Style','text','Position',[ ],'String','Da',... 'BackgroundColor',[ ]); Radio1=uicontrol(PrvaGP,'Style','Radio','Position',... [ ],'Value',1,'Callback',... 'set(radio1,''value'',1);set(radio2,''value'',0);sqrt=1;',... 'Backgroundcolor',[ ]); Tekst5=uicontrol('Style','text','Position',[ ],'String','Ne',... 'BackgroundColor',[ ]); Radio2=uicontrol(PrvaGP,'Style','Radio','Position',... [ ],'Value',0,'Callback',... 'set(radio2,''value'',1);set(radio1,''value'',0);sqrt=0;',... 'Backgroundcolor',[ ]); i ispod toga dvije check kontrole definišu crtanje 1-D grafika plot(sum(z)) i plot(sum(z')) Tekst6=uicontrol('Style','Text','String','plot(sum(z))','Position',[ ],... 'BackgroundColor',[ ]); Check1=uicontrol('Style','Check','Position',[ ],... 'BackgroundColor',[ ]); Tekst7=uicontrol('Style','Text','String','plot(sum(z''))','Position',[ ],... 'BackgroundColor',[ ]); Check2=uicontrol('Style','Check','Position',[ ],... 'BackgroundColor',[ ]); 176

183 MATLAB for Windows Na dnu frame kontrole nalaze se tri pushbuttona. Start poziva program CRTANJE.M, PushStart=uicontrol(PrvaGP,'Style','pushbutton','Position',[ ],... 'String','Start','Background',[ ],'Callback','crtanje'); Print smješta sadržaj grafičkog prozora u Clipboard PushPrint=uicontrol(PrvaGP,'Style','pushbutton','Position',[ ],... 'String','Print','Background',[ ],'Callback','print -dmeta'); dok Close zatvara grafički prozor i u MATLAB-ovom komandnom prozoru prikazuje broj izvršenih grafičkih prikaza PushClose=uicontrol(PrvaGP,'Style','pushbutton','Position',[ ],... 'String','Close','Background',[ ],'Callback',... 'close(gcf);disp([''bilo je '',num2str(broj),'' izracunavanja''])'); Standardni MATLAB meni je naredbom Meni(1)=uimenu(PrvaGP,'Label','&Options'); proširen sa menijem Options, dok se naredbama Meni(2)=uimenu(Meni(1),'Label','Funkcija&1','Checked','on','Callback',... 'Funkcija=1;set(Meni(2:5),''Checked'',''off'');set(Meni(2),''Checked'',''on'');'); Meni(3)=uimenu(Meni(1),'Label','Funkcija&2','Checked','off','Callback',... 'Funkcija=2;set(Meni(2:5),''Checked'',''off'');set(Meni(3),''Checked'',''on'');'); Meni(4)=uimenu(Meni(1),'Label','Funkcija&3','Checked','off','Callback',... 'Funkcija=3;set(Meni(2:5),''Checked'',''off'');set(Meni(4),''Checked'',''on'');'); Meni(5)=uimenu(Meni(1),'Label','&Izbor funkcije','checked','off','callback',... 'pomocni;'); ovaj meni proširuje opcijama Funkcija 1, Funkcija 2, Funkcija 3 i Izbor Funkcije. Klik na prve tri funkcije definiše crtanje predefinisanih funkcija, dok klik na četvrtu otvara prozor u kome korisnik može unijeti proizvoljnu funkciju koja se želi nacrtati. Prilikom izbor četvrte opcije poziva se program POMOCNI.M. Opcija Colormap otvara dodatni meni u kome se može izabrati kolorna mapa za crtanje podataka Meni(6)=uimenu(Meni(1),'Label','&Colormap','Separator','on'); Meni(7)=uimenu(Meni(6),'Label','&hsv','Checked','off','Callback',... ['PaLeTa=''hsv'';set(Meni(7:11),''Checked'',''off'');',... 'set(meni(7),''checked'',''on'');']); Meni(8)=uimenu(Meni(6),'Label','&gray','Checked','off','Callback',

184 Grafički objekti ['PaLeTa=''gray'';set(Meni(7:11),''Checked'',''off'');',... 'set(meni(8),''checked'',''on'');']); Meni(9)=uimenu(Meni(6),'Label','h&ot','Checked','on','Callback',... ['PaLeTa=''hot'';set(Meni(7:11),''Checked'',''off'');',... 'set(menu(9),''checked'',''on'');']); Meni(10)=uimenu(Meni(6),'Label','&cool','Checked','off','Callback',... ['PaLeTa=''cool'';set(Meni(7:11),''Checked'',''off'');',... 'set(meni(10),''checked'',''on'');']); Meni(11)=uimenu(Meni(6),'Label','&jet','Checked','off','Callback',... ['PaLeTa=''jet'';set(Meni(7:11),''Checked'',''off'');',... 'set(meni(11),''checked'',''on'');']); Na kraju programa pokazivač miša se postavlja na strelicu, čime se omogućuje rad sa objektima unutar grafičkog prozora. set(prvagp,'pointer','arrow'); Na slici 6.2 je prikazan osnovni grafički prozor sa kontrolama. Slika 6.2 Izgled grafičkog prozora sa kontrolama PROGRAM ZA PRORA^UN I CRTANJE - CRTANJE.M Oblast nezavisno promjenljive se definiše naredbom [x,y]=meshdom(-2*pi:4*pi/m:2*pi,-2*pi:4*pi/n:2*pi); 178

185 MATLAB for Windows U zavisnosti da li je funkcija jedna od tri predefinisane, ili se uzima od korisnika definisana, i uzimajući u obzir promjenljivu SQRT računa se funkcija z=f(x,y) if(sqrt==0&funkcijač=4) z=funk(x,y,funkcija); elseif(sqrt==1&funkcijač=4) z=sqrt(funk(x,y,funkcija)); elseif(sqrt==0&funkcija==4) eval(['z=',novafunkcija,';']); else eval(['z=',novafunkcija,';']); z=sqrt(z); end Ako je prethodno već bilo crtanja promjenljiva Broj je veći od nule pa treba izbrisati tekuće ose i tekuće grafike (čiji se numerički identifikatori čuvaju u promjenljivim Graf i Ose) if(broj>0) delete(graf); set(ose,'visible','off'); end Zatim se postavlja odgovarajuća kolorna mapa i veličina osa colormap(paleta); Ose=axes('Position',[ ]); U zavisnosti od izbora tipa grafičkog prikaza u popupmeniju crta se odgovarajući 2-D grafik uz istovremeno smještanje novokreiranih grafičkih objekata u promjenljivu Graf if(grafik==1) Graf=mesh(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); elseif(grafik==2) Graf=surf(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); elseif(grafik==3) Graf=waterfall(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); elseif(grafik==4) [priv,graf]=contour(-2*pi:4*pi/m:2*pi,-2*pi:4*pi/n:2*pi,z); elseif(grafik==5) 179

186 Grafički objekti Graf=meshc(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); elseif(grafik==6) Graf=surfc(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); else Graf=pcolor(-2*pi:4*pi/M:2*pi,-2*pi:4*pi/N:2*pi,z); if(grafik==7) shading interp; elseif(grafik==8) shading flat; end end Za različite tipove grafika na razne načine se definišu granice axis i pogled na grafik view if(grafik==1 Grafik==2 Grafik==3) view([10 80]) axis([-2*pi 2*pi -2*pi 2*pi min(min(z)) max(max(z))]) elseif(grafik==5 Grafik==6) view([10 50]) axis([-2*pi 2*pi -2*pi 2*pi min(min(z)) max(max(z))]) else axis([-2*pi 2*pi -2*pi 2*pi]) end U zavisnosti od sadržaja check kontrola vrši se crtanje 1-D grafika uz dopunjavanje vektora u kojem se čuvaju ose (Ose) i vektora sa grafikom (Graf) if(get(check1,'value')==1) Ose=[Ose;axes('Position',[ ])]; Graf=[Graf;plot(-2*pi:4*pi/M:2*pi,sum(z))]; axis([-2*pi 2*pi min(sum(z)) max(sum(z))]) end if(get(check2,'value')==1) Ose=[Ose;axes('Position',[ ])]; Graf=[Graf;plot(sum(z'),-2*pi:4*pi/N:2*pi)]; axis([min(sum(z')) max(sum(z')) -2*pi 2*pi]) end Na kraju ovog programa inkrementira se broj izračunavanja 180

187 MATLAB for Windows Broj=Broj+1; Na slici 6.3 dat je grafik na kojem je data prva predefinisana funkcija. Svi parametri grafika se mogu sa njega pročitati. Slika 6.3 Grafički prozor sa dijagramima POMO]NI PROZOR - POMOCNI.M U okviru ovog programa koji je realizovan kao skript fajl korisnik programa može da izabere proizvoljnu funkciju. Sadržaj ove funkcije se smješta u promjenljivu NovaFunkcija. Početna funkcija je, kao što smo već vidjeli, z=exp(-x 2 - y 2 ). Ovaj prozor se sastoji od text kontrole u kojoj je piše f(x,y), edit kontrole u kojoj se po MATLAB pravilima zapisuje funkcija dvije promjenljive i dvije pushbutton kontrole. OK kojom se potvr uje izbor funkcije i Cancel kojom se poništava. Na početku ovog programa crta se grafički prozor bez menija i sa naslovom 'Unos 2-D funkcije' DrugiGP=figure('Position',[ ],'NumberTitle','off','Name',... 'Unos 2-D Funkcije','Resize','off','Pointer','watch','Color',... [ ],'InvertHardcopy','off','Menubar','none'); Klik na OK dovodi do potvrde opcije Izbor funkcije u Options meniju, postavlja vrijednost promjenljive Funkcija na 4, u promjenljivu NovaFunkcija smješta sadržaj edit kontrole i potom zatvara pomoćni grafički prozor OK1=uicontrol(DrugiGP,'Style','Pushbutton','Position',... [ ],'String','OK','Enable','off','Callback',... ['NovaFunkcija=get(Edit3,''String'');set(Meni(2:5),''Checked'',''off'');',... 'set(meni(5),''checked'',''on'');funkcija=4;close(gcf)']); 181

188 Grafički objekti Cancel zatvara ovaj grafički prozor bez promjene ostalih parametara Cancel=uicontrol(DrugiGP,'Style','Pushbutton','Position',... [ ],'String','Cancel','Enable','off','Callback','close(gcf);'); Definicija text i edit kontrole je Tekst8=uicontrol(DrugiGP,'Style','Text','Position',[ ],'String',... 'f(x,y)=','backgroundcolor',[ ],'ForegroundColor',[1 1 1]); Edit3=uicontrol(DrugiGP,'Style','Edit','Position',[ ],... 'String',NovaFunkcija,'BackgroundColor',[ ],'ForegroundColor',[1 1 1]); Tokom crtanja pomoćnog grafičkog prozora onemogućena je upotreba miša što se ostvaruje naredbama set([ok1 Cancel],'Enable','on'); set(gcf,'pointer','arrow'); Na slici 6.4 prikazan je pomoćni grafički prozor. Slika 6.4 Pomoćni grafički prozor POTPROGRAM FUNK.M U ovom funkcijskom programu nalaze se tri predefinisane funkcije čiji se izbor obavlja na osnovu promjenljive Izbor. Predefinisane funkcije su z=f(x,y)=sin(x 2 +y 2 +eps)/(x 2 +y 2 +eps), z=f(x,y)=xy sin(x 2 +y 2 +eps)/(x 2 +y 2 +eps), z=f(x,y)=x 2 -y 2 Rezultat ovog fajla vraća se programu CRTANJE.M. Sadržaj potprograma FUNK.M je function z=funk(x,y,izbor); if(izbor==1) z=sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps); elseif(izbor==2) 182

189 MATLAB for Windows z=x.*y.*sin(x.^2+y.^2+eps)./(x.^2+y.^2+eps); elseif(izbor==3) z=x.^2-y.^2; end 183

190 MATLAB for Windows glava sedma POLINOMI I OBRADA SIGNALA U ovoj glavi obra eni su polinomi, odnosno mogućnosti MATLAB-a u radu sa polinomima. U drugom dijelu su opisane funkcije za obradu signala, me u kojima najznačajnije mjesto zauzima brza Fourierova transformacija POLINOMI 7.1 DEFINISANJE POLINOMA Polinom n-tog reda možemo predstaviti u obliku: y=c(1)x n +c(2)x n c(n)x+c(n+1) Tako predstavljen polinom je odre en svojim koeficijentima c(i), i=1,2,..,(n+1). Koeficijenti se u MATLAB-u mogu zapisati u obliku vektora, pa se i polinom može predstaviti vektorom čiji su članovi koeficijenti polinoma. Primjer Polinom y=2x 4-3x 3 +x se zapisuje vektorom:» c=[ ] Nule polinoma čiji su koeficijenti u vektoru c, dobijaju se naredbom roots(c). U prethodnom primjeru dobijamo:» p=roots(c) p = i i Polinom se može zadati i preko nula, odnosno u faktorizovanom obliku: y=(x-n(1))(x-n(2))...(x-n(i)) Koeficijenti polinoma se dobijaju naredbom poly(n). Primjer Odrediti koeficijente polinoma y=(x-1)(x-3)(x+1)(x-2). 185

191 Polinomi i obrada signala» n=[ ];» c=poly(n) c = Može se pokazati da ove naredbe usljed primjenjenih algoritama pokazuju odre ena odstupanja. Tako, naredbom roots(poly(x)) trebao bi da se dobije polazni vektor; usljed akumulisanja greške pri računanju, rezultati se ponekad ne podudaraju. Primjer Polinom je zadat sa dvadeset nula od jedan do dvadeset. Naći koeficijente ovog polinoma i korijene.» roots(poly(1:20)) ans = KARAKTERISTI^NI POLINOM I SOPSTVENE VRIJEDNOSTI MATRICE Ulazni argument naredbe poly može biti i matrica. U tom slučaju poly(a) daje koeficijente karakterističnog polinoma matrice a. Ako je matrica a data sa: 186

192 onda je njen karakteristični polinom: p( λ) = MATLAB for Windows a(,) 11 a(,) 12 L a(, 1 n) a a a n a = ( 21, ) ( 22, ) L ( 2, ) M M O M an (, 1) an (, 2) L ann (, ) a(,) 11 λ a(,) 12 L a(, 1 n) a( 21, ) a( 22, ) λ L a( 2, n) M M O M an (, 1) an (, 2) L ann (, ) λ Sopstvene vrijednosti matrice su jednake nulama karakterističnog polinoma. Primjer Odrediti koeficijente karakterističnog polinoma matrice a, kao i njene sopstvene vrijednosti a = » a=[1 2-1;2 4 7;-3 1 2];» poly(a) ans = » lambda=roots(ans) lambda = i i MNO@ENJE POLINOMA Dva polinoma čiji su koeficijenti zadati vektorima c1, odnosno c2, se množe naredbom conv(c1,c2). Primjer Pomnožiti polinome: 187

193 Polinomi i obrada signala y1=x 3 +2x 2-3x i y2=-2x 4 +3x 2 +5x+4 Polinom y=y1*y2 ima koeficijente c koji su:» c1=[ ];» c2=[ ];» c=conv(c1,c2) c = pa je: y=y1*y2=-2x 7-4x 6 +9x 5 +11x 4 +5x 3-7x 2-12x Više polinoma se mogu množiti uzastopnom primjenom naredbe conv IZRA^UNAVANJE POLINOMA Vrijednost polinoma se može izračunati za vrijednosti x (x može biti skalar ili vektor) naredbom polyval(c,x). Ako je x skalar onda se izračunava vrijednost polinoma za dato x, a ako je x vektor onda se izračunava vrijednost polinoma za svaki element x-a. Primjer Nacrtati funkciju y koja je jednaka polinomu 4-tog reda sa nulama [ ], u intervalu -1 x 4.» n=[ ];» c=poly(n) c = » x=-1:.1:4;» y=polyval(c,x);» plot(x,y) Ako želimo izračunati polinom čiji su elementi x matrice, onda se to postiže naredbom polyvalm(c,x). Primjer Izračunati vrijednost polinoma y=2x 2 -x+1, ako je x matrica: x =

194 MATLAB for Windows» x=[1 3;2 7];» y=polyvalm([2-1 1],x) y = DIJELJENJE POLINOMA Posmatrajmo količnik dva polinoma y1 i y2 čiji su koeficijenti definisani vektorima c1 i c2. n n 1 c11 () x + c12 ( ) x c1( n) x+ c1( n+ 1) y = m m 1 c21 ( ) x + c22 ( ) x c1( m) x+ c1( m+ 1) Ukoliko je stepen brojioca veći ili jednak od stepena imenioca, onda je prethodni izraz moguće transformisati u: y x y = 1( ) rx y x = ( ) 2( ) y2( x) + qx ( ) gdje je q(x) količnik polinoma y1 i y2, a r(x) ostatak. Koeficijenti polinoma q(x) i p(x) se dobijaju naredbom [r,q]=deconv(y1,y2). Primjer Podijeliti polinome čiji su koeficijenti zadati vekorima c1 i c2.» c1=[ ];» c2=[ ];» [q,r]=deconv(c2,c1) q = -2 4 r = [to znači da je: = 2 2x 3x 5x 4 11x + 17x + 4 2x x + 2x 3x x + 2x 3x RAZVOJ U RACIONALNE RAZLOMKE 189

195 Polinomi i obrada signala Naredbom residue odre ujemo polove, koeficijente razvoja i slobodni član pri razvoju količnika dva polinoma c1 i c2 u racionalne razlomke. c1( x) r() 1 r( 2) rn ( ) = k( x) c2( x) x p() 1 x p( 2) x p( n) Primjer Razviti u racionalne razlomke izraz: x 9x + 25x 15x 26x+ 24» c1=1;» c2=[ ];» [r,p,k]=residue(c1,c2) r = p = k = [] Primjer Ponoviti prethodni primjer ako je u brojiocu x 7.» c1=[ ];» c2=[ ];» [r,p,k]=residue(c1,c2) r = p =

196 MATLAB for Windows k = Može se ostvariti i inverzna operacija. Na osnovu razvoja, definisanog sa r, p, k, oblik količnika dva polinoma dobija se sa» [c1,c2]=residue(r,p,k) INTERPOLACIJA POLINOMOM Polinom n-tog reda, koji aproksimira podatke date u vektorima x i y u smislu najmanjih kvadrata, dobija se naredbom c=polyfit(x,y,n). Primjer Odrediti polinom 4-tog reda koji aproksimira podatke date vektorima x i y, a zatim nacrtati dobijeni polinom za date podatke.» x=[ ];» y=[ ];» c=polyfit(x,y,4) c = » xf=.1:.01:.8;» yf=polyval(c,xf);» plot(xf,yf,x,y,'o') Proceduru fitovanja i crtanja krivih i podataka možemo napraviti koristeći funkcijski fajl. Napravićemo fajl interpol.m. function interpol(x,y,n,znak,ni) % interpol(x,y,n,znak,ni) interpolira podatke x i y polinomima % n-tog reda i crta ih.vrijednosti x i y crta simbolom definisanim % u znak. Polinom se izracunava u ni tacaka i crta punom linijom % interpol(x,y,n,znak) uzima automatski ni=100 % interpol(x,y,n) uzima automatski znak='*' i ni=100 % c=polyfit(x,y,n) if nargin<5 ni=100; 191

197 Polinomi i obrada signala end xp=min(x):(max(x)-min(x))/ni:max(x); yp=polyval(c,xp); if nargin==3 znak='*'; end plot(x,y,znak,xp,yp) end Primjer Interpolirati podatke x i y polinomom 5-tog reda.» x=[ ];» y=[ ];» interpol(x,y,5) Slika 7.1 Podaci i fitovana kriva iz primjera OBRADA SIGNALA Sve funkcije sa kojima smo do sada radili bile su diskretne, iako se lako desi da zaboravimo na njihovu prirodu, posmatrajući njihove kontinualne grafike na ekranu. U svim slučajevima smo, bilo radi odre enog računanja, bilo radi crtanja, zadavali diskretne vrijednosti nezavisno promjenljive (najčešće x od xmin do xmax sa odre enim korakom diskretizacije). Pojedine primjere obrade signala smo već i do sada upoznali: nalaženje maksimalnog i minimalnog elementa, sortiranje, nalaženje srednje vrijednosti niza, standardne devijacije, izvoda, integrala... Pored tih, reklo bi se opštih funkcija za obradu nizova, odnosno signala, postoji i niz posebnih funkcija namijenjenih obradi diskretnih signala, predstavljenih u obliku nizova (vektora). U tabeli 7.1 daćemo samo one koje se nalaze u osnovnom MATLAB-u. Dodatne, specijalizovane funkcije za obradu signala se mogu instalisati u okviru SIGNAL TOOLBOX-a. 192

198 MATLAB for Windows fft ifft fftshift fft2 ifft2 conv conv2 deconv cov filter freqz freqs xcorr xcorr2 Funkcije za obradu signala brza Fourierova transformacija inverzna brza FT preure ivanje rezultata FFT dvodimenziona FFT inverzna dvodimenziona FFT konvolucija signala dvodimenziona konvolucija signala dekonvolucija kovarijansa direktna realizacija diskretnog sistema frekventni odziv diskretnog sistema frekventni odziv analognog sistema kroskorelaciona funkcija dvodimenziona kroskorelaciona funkcija Tabela 7.1. Funkcije za obradu signala FOURIEROVA ANALIZA Teorijski pregled Kratko ćemo se osvrnuti na osnovne elemente Fourierove analize. Periodičnu funkciju sa periodom 2l možemo razviti u Fourierov red (pod uslovom da su zadovoljeni Dirichletovi uslovi): gdje su Fourierovi koeficijenti F f ( x) = k = 1 2l 2l 0 k = Fe f ( x) e jkxπ/ l k jkx π / l Aproksimacija ove vrijednosti može se ostvariti zamjenom integrala sa sumom, korišćenjem pravougaonog pravila. F k N f ( n x) e n= dx jk π x / l x

199 Polinomi i obrada signala gdje je x korak odabiranja koji bi, po teoremi o odabiranju, trebao biti x 1/f m, gdje je f m maksimalna frekvencija u signalu f(x). Pošto je broj odbiraka signala, unutar periode 2l, jednak N, to je l/ x=n/2. Uzimajući da je f(n)=f(n x) x/2l, dobijamo: F k N f $ ( n) e n= 1 jk π/ x l što je, po definiciji, diskretna Fourierova transformacija. Prema tome, koeficijenti Fourierovog reda mogu se aproksimirati vrijednostima diskretne Fourierove transformacije signala f(n)=f(n x) x/2l. Rednom broju odbirka k odgovara učestanost: k ω = kπ/ l = 2kπ/( N x) i to samo za k N/2. Za k veće od N/2 dobijaju se preslikane negativne učestanosti. Na sličan način se mogu dobiti i odbirci Fourierove transformacije neperiodičnog signala koja ima oblik: jωx F( jω) = f ( x) e dx Uzimajući da je signal bitno različit od nule samo u intervalu od 0 do 2l i zamjenjujući integral sumom, dobijamo: N jωn x F( jω) = f ( n x) e x n= 1 Odbirke Fourierove transformacije za ω=k ω dobijamo kao: N N jk ωn x ~ jkn Fk ( ) f( n xe ) x f ( ne ) 2π/ = = n= 1 gdje je f(n)=f(n x) x, a znamo da je ω x=2π/n. Ponovo smo dobili da se odbirci Fourierove transformacije mogu aproksimirati diskretnom Fourierovom transformacijom. Rednom broju odgovara učestanost: k n= 1 ω = 2 kπ/( N x) N Računanje Diskretna Fourierova transformacija signala označenog sa f (čije vrijednosti su elementi vektora f) za razne vrijednosti k računa se po standardnom 194

200 MATLAB for Windows algoritmu razbijanja po frekvenciji naredbom fft(f). Ovaj algoritam se primjenjuje za broj odbiraka koji je stepen broja 2, N=2 m (N=4, 8, 16, 32, 64, 128, 256,...). U slučaju da je broj odbiraka različit od ovog broja primjenjuje se sporiji algoritam direktnog izračunavanja. Postoji i drugi oblik naredbe za izračunavanje Fourierove transformacije fft(f,m) gdje se, ako je M>length(f), vrši dopunjavanje signala nulama (zero padding), a za M<length(f) vrši se odsijecanje signala do dužine M. Za M=length(f) naredba fft(f,m) je ista kao naredba fft(f). Dopunjavanje nulama ne utiče na oblik Fourierove transformacije, već samo na gustinu odabiranja. Kod Fourierovog reda dolazi do promjene periode, pa time i rasporeda harmonika Preure ivanje rezultata Pošto su rezultati dobijeni tako da samo do N/2 imaju prirodni raspored, to ih je radi crtanja neophodno preurediti. To se ostvaruje naredbom fftshift(f) gdje je F već izračunata Fourierova transformacija signala f. U skladu sa preure ivanjem potrebno je prenumerisati i frekventnu osu. Primjer Odrediti koeficijente Fourierovog reda funkcije date na slici Slika 7.2. Periodični signal f(x) Prvo treba odrediti korak odabiranja (imajući u vidu teoremu o odabiranju). Broj odbiraka unutar periode je jednak broju koeficijenata Fourierovog reda koje računamo. Da bi mogli koristiti fft algoritme taj broj mora biti oblika 2 m. Uzmimo da je n=64. Odbirke funkcije ćemo računati u tačkama x i =i x=i4/64. Interval jedne periode 0 x 4 ćemo podijeliti na dva dijela 0 x<2 i 2 x<4 i računati odbirke u tim djelovima.» l=2;» n=64; 195

201 Polinomi i obrada signala» dx=2*l/n;» x1=0:dx:l-dx;» f1=(-0.5*x1+1)*dx/(2*l);» x2=l:dx:2*l-dx;» f2=(0.5*x2-1)*dx/(2*l);» f=[f1 f2];» F=fft(f); Time smo dobili Fourierovu transformaciju signala f(x). Prvih n/2 harmonika su zaista harmonici funkcije f(x), a preostali dio od n/2+1 do n su preslikane negativne vrijednosti. Zbog toga je, radi crtanja spektra u obliku u kojem se najčešće predstavlja, potrebno preurediti rezultate, ali i prenumerisati redni broj harmonika.» Fp=fftshift(F);» k=-n/2:n/2-1;» plot(k,abs(fp))» stem(k,abs(fp)) Tako smo konačno dobili amplitudsku karakteristiku signala f(x) koja je prikazana na slici Slika 7.3 Spektar (amplitudska karakteristika) periodičnog signala f(x) Primjer Odrediti odbirke Fourierove transformacije signala f(x)=sin 2 (xπ) za 0 x<1 i f(x)=0 drugdje. Da bismo odredili vrijednosti odbiraka Fourierive transformacije treba, prije svega, odrediti korak odabiranja. Ponovo se tačan račun može izvesti jedino na osnovu teoreme o odabiranju. Mi ćemo se ovdje poslužiti procjenom i proizvoljno uzeti korak odabiranja, koji će biti dovoljno mali da se signal izme u dva odbirka puno ne mijenja. U intervalu za 0 x<1 uzimamo vrijednosti zadate funkcije, 196

202 MATLAB for Windows pomnožene korakom odabiranja, a izvan tog intervala, još proizvoljan broj vrijednosti f(x)=0. [to više tačaka uzmemo, gustina odbiraka Fourierove transformacje će biti veća. U ovom slučaju za primjenu fft algoritama nije nephodno uzet broj odbiraka 2 m već se može koristiti i nešto sporiji algiritam sa proračun FT. Uzmimo n=50 i odredimo odbirke Fourierove transformacije.» n=50;» l=0.5;» dx=2*l/n;» x=0:dx:2*l-dx;» f=(sin(pi*x)).^2*dx;» F=fft(f);» Fp=fftshift(F);» k=-length(fp)/2:length(fp)/2-1; Umjesto rednog broja odbiraka bolje je imati na nezavisno promjenljivoj osi vrijednosti učestanosti ω ili frekvencije f r, koje su izračunate prema izrazima datim u » fr=k/(n*dx);» plot(fr,abs(fp)) Slika 7.4 Amplituda Fourierove transformacije signala f(x) Inverzna transformacija Inverzna diskretna Fourierova transformacija ima oblik: N 1 2 $ ( ) ( ) / f n Fke jkn π = N n= 1 N 197

203 Polinomi i obrada signala i daje signal na osnovu transformacije. Razlikuje se od direktne jedino po znaku u eksponentu i zbog dijeljenja sa N. ifft(f). Inverzna diskretna Fourierova transformacija transformacije F se dobija sa Dvodimenziona transformacija Dvodimenziona diskretna Fourierova transformacija definiše se analogno jednodimenzionoj, a poziva se sa fft2(f), ili sa ifft2(f), za inverznu transformaciju. Postoji i oblik ovih naredbi fft2(f,m,n) Primjer Izračunati i nacrtati dvodimenzionu transformaciju signala z(x,y)=sinxsiny za -π x,y<π. Uzećemo n=32 odbirka unutar oblasti (periode).» [x,y]=meshdom(-pi:2*pi/32:pi-pi/16,-pi:2*pi/32:pi-pi/16);» z=sin(x).*sin(y);» mesh(z)» Z=fft2(z); % Racunanje dvodimenzione FT» Zp=fftshift(Z); % Pomjeranje rezultata» mesh(abs(zp)) % Crtanje amplitudske karakteristike Slika 7.5 Dvodimenzioni signal i njegova FT RA^UNANJE I CRTANJE FREKVENTNOG ODZIVA Analogni domen Frekventni odziv sistema u analognom domenu definisanog funkcijom prenosa: 198

204 MATLAB for Windows n n 1 a( 1) s + a( 2) s ans ( ) + an ( + 1) Hs () = m m 1 b( 1) s + b( 2) s a( m) s+ a( m+ 1) dobija se sa h=freqs(a,b,w), gdje je w frekvencija, a h vrijednost frekventnog odziva. Ako se želi nacrtati amplitudski i frekventni dijagram poziva se ova funkcija bez izlaznog argumenta freqs(a,b,w). Ova funkcija se nalazi u okviru SIGNAL TOOLBOX-a. Primjer Nacrtati amplitudsku i faznu karakteristiku sistema čija je funkcija prenosa data sa: s Hs () = 2 s + s + 1 za učestanosti ω od 0.1 do 100, u četrdeset tačaka.» a=[1.5];» b=[1 1 1];» w=logspace(-1,2,40);» h=freqs(a,b,w);» semilogx(w,abs(h))» grid» semilogx(w,angle(h)*180/pi)» grid Bez računanja odziva h crteži sa slike 7.6 (amplitudska i fazna karakteristika analognog sistema) su se mogli dobiti naredbom» freqs(a,b,w) Slika 7.6 Amplitudska i fazna karakteristika analognog sistema Diskretni domen Za diskretni sistem opisan sa: 199

205 Polinomi i obrada signala a( 1) + a( 2) z anz ( ) Hz () = b( 1) + b( 2) z b( m) z 1 n+ 1 1 m+ 1 frekventni odziv se dobija sa y=freqz(a,b,w), gdje je w vrijednost učestanosti za koje se računa frekventni odziv. Funkcija freqz bez izlaznog argumenta crta amplitudsku i faznu karakteristiku. Interesantan oblik ove funkcije je [h,w]=freqz(a,b,n,'whole') kojom se odre uje vrijednost vektora h i w (odziva i frekvencije) u N tačaka na čitavom jediničnom krugu. Primjer Nacrtati amplitudsku i faznu karakteristiku diskretnog sistema: z z z Hz () = z z z z» a=[ ];» b=[ ];» w=-pi:pi/30:pi;» h=freqz(a,b,w);» plot(w,abs(h))» grid Slika 7.7 Amplitudska karakteristika diskretnog sistema RA^UNANJE SIGNALA NA IZLAZU IZ DISKRETNOG SISTEMA Ako je diskretni sistem opisan jednačinom datom u , onda se signal na izlazu iz tog diskretnog sistema, za dati ulazni signal x, dobija kao y=filter(a,b,x). Primjer Izračunati impulsni odziv diskretnog sistema datog sa: 200

206 MATLAB for Windows z z z Hz () = z z z z Za računanje impulsnog odziva uzećemo da je ulazni signal x=[1 zeros(1,50)].» x=[1 zeros(1,50)];» a=[ ];» b=[ ];» y=filter(a,b,x);» plot(y)» grid Izlazni signal se može računati i na osnovu impulsnog odziva h(n) i ulaznog signala x(n). Kao što je poznato, izlazni signal je jednak konvoluciji signala x i h, tj. y=conv(x,h) Slika 7.8 Impulsni odziv diskretnog sistema KROSKORELACIONA FUNKCIJA I SPEKTRALNA GUSTINA SNAGE SLU^AJNIH SIGNALA Kroskorelacija dva slučajna signala x(n) i y(n) definiše se kao matematičko očekivanje proizvoda signala x i konjugovano kompleksne vrijednosti signala y: r(n)=ešx(m)y * (m-n)ć, Kroskorelacija se računa sa r=xcorr(x,y). Autokorelacija signala x je definisana sa: r(n)=ešx(m)x * (m-n)ć i računa se sa r=xcorr(x). Primjer Izračunati i nacrtati autokorelacionu funkciju signala x(n) koji se dobija kao jedna realizacija slučajnog signala sa uniformnom raspodjelom od 0 do

207 Polinomi i obrada signala» x=rand(1,50);» r=xcorr(x);» plot(r) Uočimo razliku da je u ovoj verziji rand slučajni signal sa uniformnom raspodjelom na intervalu (0,1) dok je randn normalni, bijeli, Gausov šum sa varijansom 1. Spektralna gustina snage signala x definisana je kao Fourierova transformacija autokorelacione funkcije, i računa se sa sx=fft(r) Slika 7.9 Autokorelaciona funkcija Ovim oblicima kroskorelacione funkcije mogu se pridružiti oblici sa odre enim opcijama koje se definišu stringom xcorr(x,'string'). Za signal x dužine M, ako je string biased računa se 1/M vrijednosti autokorelacione funkcije, za unbiased 1/(M- k ), gdje je k indeks odgovarajuće pozicije, dok coeff daje normalizovanu vrijednost tako da je maksimalna vrijednost 1. Primjer Naći unbiased autokorelaciju signala iz prethodnog primjera.» ru=xcorr(x,'unbiased');» plot(ru) Slika 7.10 Unbiased autokorelaciona funkcija DVODIMENZIONI SIGNALI 202

208 MATLAB for Windows Jedan broj funkcija za obradu signala definisan je i za dvodimenzione signale. Te funkcije su date u tabeli 7.1, a korišćenje im je slično kao i za jednodimenzione slučajeve. Na kraju, još jedanput ćemo istaći da je veliki broj algoritama, metoda projektovanja diskretnih sistema, funkcija prozora i funkcija za obradu slučajnih signala, sadržan u SIGNAL TOOLBOX-u. 203

209 MATLAB for Windows glava osma LINEARNA ALGEBRA I MATRIČNE FUNKCIJE Centralni numerički problem u linearnoj algebri predstavlja rješavanje sistema linearnih jednačina oblika a 11 x 1 +a 12 x a 1n x n =y 1 a 21 x 1 +a 22 x a 2n x n =y 2... a m1 x 1 +a m2 x a mn x n =y m tj. u vektorsko-matričnoj formulaciji: za datu matricu A R mxn i vektor y R m, naći vektor x R n koji zadovoljava relaciju Ax=y. Ako se definiše slika linearnog operatora predstavljenog sa A kao Im(A)=šy R y=ax za neko x Rć i kernel operatora A kao Ker(A)=šx R Ax=0ć poznato je da navedeni problem ima rješenje ako i samo ako je ispunjen uslov y Im(A), a rješenje je jedinstveno ako i samo ako je Ker(A)=š0ć. Alternativno, ako definišemo rang matrice r(a) kao broj linearno nezavisnih kolona (ili vrsta) i formiramo proširenu matricu W=[A y], važi: 1 o za r(a) r(w) nema rješenja, tj. sistem je nekonzistentan; 2 o za r(a)=r(w) postoji najmanje jedno rješenje, i to: (i) jedinstveno rješenje, kada je r(a)=r(w)=n (ii) beskonačno mnogo rješenja, kada je r(a)=r(w)<n. Ovakva karakterizacija skupa rješenja, me utim, nije dovoljna sa numeričke tačke gledišta. Aritmetika sa konačnom preciznošću i približno tačni ulazni podaci u praktičnim primjenama, nameću slijedeća pitanja: (a) Ako se A i y "malo" promijene, kako to utiče na rješenje? 205

210 Linearna algebra i matrične funkcije (b) [to znači kada je matrica A "skoro singularna"? (c) Ukoliko b Im(A), kako možemo odrediti x tako da je Ax "blizu" y? Da bi kvantifikovali odgovore na ovakva pitanja potreban je jezik kojim ćemo precizirati pojmove kao što su: "male promjene", "blizu singularnosti", "rastojanje u vektorskom prostoru", itd. To nam omogućava pojam norme vektora i matrica. MATLAB raspolaže skupom moćnih i numerički pouzdanih operatora za tretiranje problema iz linearne algebre: karakterizaciju linearnih operatora i vektorskih prostora i podprostora, odre ivanje sopstvenih vrijednosti i vektora, odre ivanje singularnih vrijednosti, itd. Ovdje nećemo ulaziti u detalje iz teorije, već ćemo navesti najvažnije operatore i pojedine definicije pojmova. Iscrpni tretman teorijskih i numeričkih problema iz ove oblasti može se naći u literaturi. 8.1 SOPSTVENE VRIJEDNOSTI I SOPSTVENI VEKTORI Sopstvene vrijednosti matrice A R nxn su definisane kao n korijena njenog karakterističnog polinoma p(z)= zi-a. Skup ovih korijena šz1,z2,..,znć nazivamo spektrom matrice A. Za zi iz spektra A, pridruženi vektor vi koji zadovoljava relaciju Avi=zivi, i=1,2,..,n, naziva se sopstveni vektor matrice A. Ako od vektora vi, i=1,..., n, formiramo matricu V=[v1 v2... vn], tada očigledno važi AV=VD, gdje je D=diagšz1,z2,...,znć dijagonalna matrica formirana od sopstvenih vrijednosti koja se naziva i Jordanova forma matrice A. Ukoliko u spektru A postoji konjugovano kompleksni par sopstvenih vrijednosti z k,k+1 =σ k + iω k, tada i pridruženi par sopstvenih vektora ima oblik v k,k+1 =q+is. Ukoliko hoćemo da radimo samo sa realnim vrijednostima, kompleksnu Jordanovu formu i odgovarajuću matricu sopstvenih vektora možemo zamijeniti sa tzv. Jordanovim blokovima na k-tom i k+1-om mjestu u matrici D, i realnim vektorima q i s u matrici V. Tako se iz kompleksne dobija realna Jordanova forma. Za višestruke sopstvene vrijednosti potrebno je izvršiti odre ene modifikacije, koje se mogu naći u literaturi. Operator eig nalazi sopstvene vrijednosti i sopstvene vektore. Tako izraz s=eig(a) daje vektor kolonu s koji sadrži sopstvene vrijednosti matrice A. Ukoliko imamo dva izlazna argumenta, tj. [V,D]=eig(A), dobićemo dijagonalnu matricu D, sa sopstvenim vrijednostima na glavnoj dijagonali, i matricu V čije kolone su sopstveni vektori od A, tako da važi A*V=V*D. Pošto sopstveni vektori nijesu jednoznačni, ovaj operator ih daje u normalizovanoj formi tako da nijedan element nije veći od 1. Napomenimo da matrica V definiše transformaciju sličnosti koja matricu A prevodi u dijagonalnu, tj. Jordanovu, formu. 206

211 MATLAB for Windows Za simetrične matrice, sopstvene vrijednosti su uvijek realne, dok za nesimetrične često postoje kompleksni parovi sopstvenih vrijednosti. U tom slučaju, ukoliko želimo da radimo sa realnim vrijednostima, kompleksnu Jordanovu formu možemo prevesti u realnu upotrebom operatora cdf2rdf (skraćenica od: complex diagonal form to real diagonal form). Primjer Ilustrovaćemo operator eig na simetričnoj matrici A = i nesimetričnoj matrici B = » s=eig(a) daje sopstvene vrijednosti: s = dok» [X,L]=eig(A) daje sopstvene vrijednosti u L i sopstvene vektore u X X = L =

212 Linearna algebra i matrične funkcije Ako želimo samo sopstvene vrijednosti možemo ih, npr. za matricu B, dobiti i sa» r=roots(poly(b)) kao što je istaknuto u glavi 7. Sopstvene vrijednosti i vektore matrice B dobijamo sa» [X,D]=eig(B) X = i i i i D = i i pri čemu vidimo da su, zbog prisustva kompleksnih spostvenih vrijednosti, matrice X i D kompleksne. Prevešćemo ih u realnu Jordanovu formu sa» [Xr,J]=cdf2rdf(X,D) Xr = J = Operator eig može poslužiti i za računanje generalisanih sopstvenih vrijednosti i vektora. Ako su A i B kvadratne matrice dimenzije (nxn), tada se generalisane sopstvene vrijednosti λ definišu kao netrivijalna rješenja jednačine g(z)= A-zB =0. Pridruženi vektor x, koji odgovara skalaru λ i zadovoljava relaciju Ax=λBx, naziva se generalisani sopstveni vektor. Napomenimo da broj generalisanih sopstvenih vrijednosti zavisi od ranga matrice B: ima ih n ukoliko je r(b)=n a za r(b)<n skup generalisanih sopstvenih vrijednosti može biti konačan, beskonačan ili prazan (za detalje konsultovati literaturu). Naredba oblika s=eig(a,b) daje vektor s koji sadrži generalisane sopstvene vrijednosti, dok oblik iste naredbe sa dva izlazna argumenta [V,D]=eig(A,B) daje matricu X sa generalisanim sopstvenim vektorima i dijagonalnu matricu D sa generalisanim sopstvenim vrijednostima na dijagonali. Za ovako na ene vrijednosti važi relacija AV=BVD. 208

213 Primjer Za matrice MATLAB for Windows A = B = naći generalisane sopstvene vrijednosti i vektore.» eig(a,b) daje ans = dok izraz» [x,d]=eig(a,b) daje i generalisane sopstvene vektore: x = d = Q-Z DEKOMPOZICIJA Za kvadratne matrice A i B, Q-Z dekompozicija računa gornje trougaone matrice Au i Bu, matricu generalisanih sopstvenih vektora V i matrice Q i Z koje zadovoljavaju relacije: QAZ=Au i QBZ=Bu. Ovakva dekompozicija se inače koristi kao me ukorak pri računanju generalisanih sopstvenih vrijednosti i vektora, i data je kao posebni operator radi mogućnosti korišćenja me u-rezultata. Primjer Za matrice A i B iz prethodnog primjera naći Q-Z dekompoziciju.» [Au,Bu,Q,Z,V]=qz(A,B) 209

214 Au = Bu = Q = Z = V = Linearna algebra i matrične funkcije 8.3 SINGULARNE VRIJEDNOSTI I PRIDRU@ENA DEKOMPOZICIJA MATRICA Singularne vrijednosti predstavljaju jedan od najvažnijih pojmova u matričnoj numerici, a u zadnje vrijeme koriste se i kao analitički aparat u mnogim primjenama. Za datu matricu A R mxn postoje ortogonalne kvadratne matrice U=[u1 u2... um] i V=[v1 v2... vn] i dijagonalna matrica S=diagšs1,s2,...,spć, p=minšm,nć, takve da važi relacija UAV=S. Skalari σi, i=1, 2,..., p, nazivaju se singularne vrijednosti matrice A, a vektori ui, i=1,...,m, i vj, j=1,...,n, nazivaju se lijevi i desni singularni vektori, respektivno. Pokazuje se da izme u nenultih singularnih vrijednosti matrice A i sopstvenih vrijednosti λi matrice A T A važi relacija σi=λi, i=1, 2,..., p. Za računanje singularnih vrijednosti koristi se operator svd. Izraz s=svd(x) daje vektor s koji sadrži singularne vrijednosti, dok izraz sa višestrukim argumentima oblika [U,S,V]=svd(X) daje dijagonalnu matricu S iste dimenzije kao X, sa singularnim vrijednostima na glavnoj dijagonali, i ortogonalne matrice U i V. 210

215 MATLAB for Windows Primjer A = » s=svd(a) s = » [U,S,V]=svd(A) U = S = V = Izraz [U,S,V]=svd(A,0) daje redukovanu verziju matrica S i U. Naime, za A R mxn, m>n, računaju se samo prvih n kolona matrice U a matrica S ima dimenziju nxn. Primjer Izračunati redukovanu verziju matrica za dekompoziciju pomoću singularnih vrijednosti matrice A iz prethodnog primjera.» [U,S,V]=svd(A,0) U = S = V =

216 Linearna algebra i matrične funkcije Dekompozicija preko singularnih vrijednosti omogućava numerički pouzdane, stabilne i tačne faktorizacije pravougaonih matrica, što omogućava jednostavno računanje mnogih važnih osobina matrice kao što su: rang, lijevi i desni inverz, sliku i kernel pridruženog linearnog operatora, norme matrice i sl. Zbog toga se i u MATLAB-u koristi kao osnovni algoritam pri izračunavanju. 8.4 NORME VEKTORA I MATRICA Norme vektora i matrica predstavljaju skalare koji daju informacije o njihovoj "veličini". Koriste se u mnogim teorijskim razmatranjima i u pravljenju stabilnih algoritama za računanje. Detaljna analiza prezentirana je u literaturi. Postoji više različitih normi za vektore i matrice. Navešćemo njihove definicije i odgovarajuće operatore MATLAB-a u tabelama 8.1 i 8.2. Vektorske norme ime definicija i oznaka MATLAB operator n p p-norma n = x = x p p i i= 1 1 / p norm(x,p) 1-norma n = x = x 1 1 i norm(x,1) n i= 1 n 2 2-norma (Euklidova) n = x = x 2 2 i i= 1 12 / norm(x,2), norm(x) -norma n = x max x norm(x,inf) i i = - -norma n = x min x norm(x,-inf) i i Primjer Na vektoru = Tabela 8.1. Vektorske norme x = ilustrovati neke od postojećih normi.» n1=norm(x,1) n1 = » n2=norm(x,2) n2 = » np=norm(x,3.4) 212

217 MATLAB for Windows np = » ninf=norm(x,inf) ninf = » n_inf=norm(x,-inf) n_inf = 1 Matrična norme ime definicija i oznaka MATLAB operator 2-norma N = A =max σ ( A) norm(a), norm(a,2) norma N = A = a 1 1 max ij norm(a,1) -norma i j m i i= 1 max i j= 1 N = A = a Frobeniusova m n norma NF = A = a F ij 2 i= 1 j= 1 Primjer Na matrici A = ilustrovati različite matrične norme.» N1=norm(A,1) N1 = 17» N2=norm(A,2) N2 = » Ninf=norm(A,inf) Ninf = 21» Nf=norm(A,'fro') n ij 12 / Tabela 8.2. Matrične norme 213 norm(x,inf) norm(x,'fro')

218 Linearna algebra i matrične funkcije Nf = Primjer Za matricu A iz prethodnog primjera provjeriti relaciju = σ + σ σ, koja povezuje Frobeniusovu normu i singularne A F 1 vrijednosti matrice. Izraz 2» Nfk=Nf^2 daje kvadrat Frobeniusove norme: p Nfk = 287 Singularne vrijednosti matrice A dobićemo sa» s=svd(a) s = a sumu njihovih kvadrata sa» s2=sum(s.^2) s2 = čime smo provjerili navedenu relaciju. Primjer Na primjeru matrice A = i vektora x = provjeriti Schwartz-ovu nejednakost: A 2 A 2 x 2» n2=norm(a*x,2) n2 = » nn2=norm(a,2)*norm(x,2) nn2 =

219 MATLAB for Windows 8.5 KONDICIONI BROJ MATRICE Kondicioni broj matrice predstavlja odnos najveće i najmanje singularne vrijednosti. On predstavlja indikator osjetljivosti rješenja sistema linearnih jednačina na greške u ulaznim podacima, kao i indikator tačnosti rezultata dobijenih pri invertovanju matrica i rješavanju sistema linearnih jednačina. Kondicioni broj matrice X dobija se izrazom cond(x). Za matricu kažemo da je perfektno kondicionirana ako je kondicioni broj jednak jedinici. Takav slučaj je sa ortogonalnim matricama. Prirodno je očekivati da je determinanta kvadratne matrice na neki način povezana sa kondicionim brojem. Me utim, ne postoji neka korelacija izme u ova dva skalara pridružena istoj matrici. Primjer Odrediti determinantu i kondicioni broj za matrice A = B = Izrazi» ka=cond(a),da=det(a) daju determinantu i kondicioni broj matrice A ka = da = 1 što znači da matrica sa determinantom jednakom jedinici ne mora biti dobro kondicionirana. S druge strane, izrazi» kb=cond(b),db=det(b) daju iste ove veličine za matricu B 215

220 Linearna algebra i matrične funkcije kb = 1 db = e-005 iz čega vidimo da perfektno kondicionirana matrica može da ima malu vrijednost determinante. Kao gruba procjena može poslužiti sljedeće pravilo: pri zaokruživanju kod Gausove eliminacije računar gubi tačnost na onoliko decimalnih mjesta koliki je logaritam (za osnovu 10) kondicionog broja. U MATLAB-u postoji i operator rcond koji može poslužiti za procjenu podešenosti matrice za računanje. Izraz rc=rcond(x) daje procjenu recipročne vrijednosti kondicionog broja. Znači, matrica je perfektno kondicionirana za rc=1, dok male vrijednosti rc služe kao indikator loše podešenosti matrice. 8.6 TROUGAONA (L-U) DEKOMPOZICIJA L-U dekompozicija kvadratne matrice A R nxn sastoji se u prikazivanju matrice A kao proizvoda A=LU, L R nxn, U R nxn, pri čemu L ima donju trougaonu formu a U gornju trougaonu formu. Ovakva dekompozicija koristi se pri rješavanju sistema linearnih jednačina Gausovom eliminacijom i pri invertovanju nesingularne matrice. Operator lu, pomoću izraza [L,U]=lu(A), daje matrice L i U. Navodimo ga najviše iz pedagoških razloga, jer predstavlja jedan od osnovnih načina faktorizacije matrica. Napominjemo da faktor L koji proističe iz MATLAB-ovog operatora lu nije u čistoj, već u permutovanoj donjoj trougaonoj formi. Primjer L-U dekompoziciju ilustrovaćemo na primjeru matrice A = Izraz» [L,U]=lu(A) daje faktore L i U L =

221 MATLAB for Windows U = Lako se provjerava da je L*U=A. Postoji oblik funkcije lu sa tri izlazna argumenta [L,U,P]=lu(A) gdje je P permutaciona matrica takva da važi P*A=L*U. 8.7 HESSENBERGOVA FORMA I SCHUROVA DEKOMPOZICIJA Ove dvije dekompozicije koriste se pri izračunavanju sopstvenih vrijednosti i sopstvenih vektora. Operator hess nalazi Hessenbergovu formu kvadratne matrice. Hessenbergova matrica ima takav oblik da su joj svi elementi ispod prve subdijagonale jednaki nuli. Izraz H=hess(A) daje Hessenbergovu formu matrice A, dok izraz [P,H]=hess(A) pored H daje i unitarnu matricu P tako da važi dekompozicija: A=PHP H uz P H P=I, gdje P H označava konjugovanu transpoziciju kompleksne matrice P (u slučaju realne matrice ova operacija se svodi na običnu transpoziciju). Primjer Naći Hessenbergovu formu matrice A = Izraz» [P,H]=hess(A) daje matrice P i H P = H = Lako se provjerava da izraz» P'*P 217

222 daje jediničnu matricu ans = dok izraz» P*H*P' daje početnu matricu A Linearna algebra i matrične funkcije ans = U zavisnosti od toga da li matrica A ima realne ili kompleksne elemente, postoje realna i kompleksna Schur-ova forma matrice. Kompleksna Schur-ova forma matrice je gornja trougaona matrica sa sopstvenim vrijednostima te matrice na glavnoj dijagonali. Realna Schur-ova forma razlikuje se od kompleksne u tome što se realne sopstvene vrijednosti nalaze na dijagonali, a konjugovano-kompleksne sopstvene vrijednosti su raspore ene u (2x2)-dimenzione blokove oko glavne dijagonale. Schur-ova forma nalazi se pomoću operatora schur. Izraz S=schur(A) daje Schur-ovu formu matrice A, dok izraz [U,S]=schur(A) daje još i unitarnu (ortogonalnu) matricu U, tako da važe relacije: A=USU H i U H U=I. Primjer Za matricu sa realnim elementima B = izraz» [U,S]=schur(B) daje matrice S i U U = S = 218

223 Za provjeru, izračunaćemo» U'*U ans = » U*S*U' ans = MATLAB for Windows Za ilustraciju kompleksne Schur-ove forme, pomoću izraza» C=ones(4);D=B+i*C; formiraćemo kompleksnu matricu D = i i i i i i i i i i i i i i i i Izraz» T=schur(D) daje kompleksnu Schur-ovu formu T = i i i i i i i i i i i i i i i i Za prevo enje matrice iz realne u kompleksnu Schur-ovu formu služi operator rsf2csf. 8.8 CHOLESKY-jeva FAKTORIZACIJA 219

224 Linearna algebra i matrične funkcije Osnovno pravilo u numeričkoj analizi je da se posebna struktura sistema jednačina (odnosno pridružene matrice) kao što je simetrija, definitnost i sl., koristi pri kreiranju algoritama za rješavanje problema. Jedna od takvih metoda je i Cholesky-jeva dekompozicija matrice, koja je moguća samo za pozitivno definitne matrice. Podsjetimo se da se za kvadratnu matricu A kaže da je pozitivno definitna ako je pridružena kvadratna forma q=x T Ax (q je skalar) pozitivna za sve vrijednosti vektora x, osim za x=0, kada je q=0. Operator chol izvodi ovakvu faktorizaciju. Izraz R=chol(A) daje matricu R u gornjoj trougaonoj formi tako da važi R H R=A za matrice sa realnim elementima, odnosno R T R=A za matrice sa kompleksnim elementima. Ukoliko tražimo Cholesky-jevu faktorizaciju za matricu koja nije pozitivno definitna, računar će javiti grešku. Inače, jedan od mogućih testova za ispitivanje pozitivne definitnosti matrice je uslov da su sve njene sopstvene vrijednosti pozitivne. Primjer Naći Cholesky-jevu faktorizaciju za matricu A = Najprije ćemo provjeriti da li je matrica pozitivno definitna sa» eig(a) ans = » R=chol(A) daje traženu matricu R = Za provjeru, izraz» R'*R daje polaznu matricu ans =

225 MATLAB for Windows U slučaju da matrica X nije pozitivno definitna [R,p]=chol(X), vraća vrijednost p za koju je matrica X(1:p,1:p) pozitivno definitna. 8.9 ORTOGONALNA (Q-R) DEKOMPOZICIJA Q-R faktorizacija primjenjuje se na matrice i pravougaonog i kvadratnog oblika. Izražava datu matricu kao proizvod ortonormalne matrice (za realne) ili unitarne matrice (za kompleksne), i gornje trougaone matrice. Ovakva dekompozicija primjenjuje se za rješavanje sistema linearnih jednačina. Izraz [Q,R]=qr(X) daje matrice Q i R sa opisanim osobinama, pri čemu je dimenzija R ista kao matrice X, i važi X=QR. Oblik [Q,R,E]=qr(X) daje permutacionu matricu E, gornju-trougaonu matricu R sa opadajućim elementima na dijagonali i ortonormalnu matricu Q, tako da važi relacija XE=QR. Primjer Za matricu A = naći ćemo Q-R dekompoziciju pomoću izraza» [Q,R]=qr(A) Q = R = Lako se provjerava da je Q*R=A. Napomenimo da se iz oblika matrice R može izvesti zaključak o rangu matrice A. Naime, očigledno je da R ima rang 2, a pokazuje se, da je to istovremeno i rang matrice A. Ukoliko želimo drugu verziju ovakve dekompozicije, upotrijebićemo 221

226 » [Q,R,E]=qr(A) sa rezultatom Q = R = E = Za provjeru, formiraćemo razliku» A*E-Q*R sa rezultatom Linearna algebra i matrične funkcije ans = 1.0e-014 * što znači da je AE=QR, sa tačnošću do četrnaeste decimale RANG. BAZIS ZA SLIKU I KERNEL LINEARNOG OPERATORA Rang matrice može se definisati na više načina, pa se i za njegovo izračunavanje koriste različiti algoritmi. U MATLAB-u postoji nekoliko operatora koji se direktno ili indirektno služe algoritmima za nalaženje ranga. Pri tome se koriste različite vrijednosti tolerancije, pa se može dogoditi da za istu matricu dobijemo različite rezultate. Rang možemo dobiti koristeći operatore rref, \, orth, null, qr, ali se najpouzdaniji rezultat dobija upotrebom operatora rank koji koristi dekompoziciju preko singularnih vrijednosti. Ovaj operator koristi se i za pinv koji nalazi pseudo-inverznu matricu. Operator rank možemo koristiti u dvije verzije: 222

227 MATLAB for Windows r=rank(x), koji daje r kao broj singularnih vrijednosti matrice X koje su veće od broja e=max(size(x))*norm(x)*eps, i r=rank(x,tol), koji daje r kao broj singularnih vrijednosti matrice X koje su veće od proizvoljno zadatog malog broja tol. Primjer Za matricu X = odredićemo rang sa» r=rank(x) r = 2 Ako uzmemo tol = e-014 izraz» r=rank(x,tol) znači da zanemarujemo sve singularne vrijednosti manje od tol, i daje r = 2 Za izračunavanje bazisa slike linearnog operatora pridruženog matrici A koristi se operator orth. Izraz Q=orth(A) daje ortonormalni bazis za sliku matrice A, koji čine kolone matrice Q. Broj kolona matrice Q predstavlja rang matrice A, i može se pokazati da važi Q T Q=I, gdje je I jedinična matrica iste dimenzije kao A. Dok orth služi za nalaženje bazisa za Im(A), operator null koristi se za nalaženje bazisa drugog važnog podprostora pridruženog matrici A, takozvanog nul-prostora ili Ker(A). Izraz N=null(A) daje matricu N čije kolone predstavljaju ortonormalni bazis za Ker(A), tj. važe relacije: N T N=I i AN=0, a broj kolona matrice N odre uje dimenziju Ker(A). Primjer Na matrici A =

228 Linearna algebra i matrične funkcije ilustrovaćemo primjenu operatora orth i null. Tako» Q=orth(A) daje matricu Q = sa dvije kolone. Znači, rang A je 2 a vektori koji razapinju Im(A) su odre eni kolonama matrice Q. Izraz» N=null(A) daje matricu N = koja definiše Ker(A), koji u ovom slučaju ima dimenziju MOORE-PENROSE PSEUDOINVERZIJA MATRICE Za datu matricu A R mxn postoji jedinstvena matrica A + koja zadovoljava slijedeća četiri uslova: (a) AA + A=A (b) A + AA + =A (c) (AA + ) T =AA + (d)(a + A) T =A + A i naziva se Moore-Penrose inverz matrice A. Lako se pokazuje da za m>n matrica A + =(A T A) -1 A T zadovoljava gornje uslove, kao i matrica A + =A T (AA T ) -1 za slučaj da je m<n. U literaturi se za ovakvu matricu koristi i termin pseudoinverzna matrica a koristi se kod rješavanja sistema linearnih jednačina u smislu najmanjih kvadrata. U MATLAB-u se za izračunavanje pseudoinverzne matrice koristi izraz oblika X=pinv(A), a samo računanje se vrši pomoću singularnih vrijednosti. Tolerancija koja služi za zanemarivanje singularnih vrijednosti uzima se po automatizmu kao tol=max(size(a))*norm(a)*eps, a možemo je promijeniti zadavanjem proizvoljno malog broja tol1 i korišćenjem izraza oblika pinv(a,tol1). Primjer Za matricu 224

229 A = » Ap=pinv(A) Ap = dok za matricu B = sa» Bp=pinv(B) dobijamo MATLAB for Windows Bp = Lako se provjerava da izrazi» inv(b'*b)*b'» A'*inv(A*A') daju iste rezultate za pseudoinverzije matrica A i B RJE[AVANJE SISTEMA LINEARNIH JEDNA^INA U nekolika naredna odjeljaka ilustrovaćemo mogućnosti primjene MATLAB-a za rješavanje sistema linearnih jednačina opisanog na početku ovog poglavlja, kojega smo u matričnoj notaciji predstavili sa Ax=y HOMOGENI SISTEM JEDNA^INA Za y=0 dobijamo homogeni sistem jednačina Ax=0. Poznato je da se trivijalno rješenje ovog sistema dobija za x=0. Ako je A R mxn netrivijalno 225

230 Linearna algebra i matrične funkcije rješenje je moguće naći samo ako je r(a)<n, a takvih rješenja ima beskonačno mnogo. Sva rješenja su definisana sa Ker(A), tako da se za ovakav sistem jednačina može koristiti operator null koji definiše bazis za Ker(A). Primjer Naći sva netrivijalna rješenja za sistem Ax=0, gdje je A = Najprije ćemo naći bazis za Ker(A) sa» n=null(a) n = Vidimo da Ker(A) ima dimenziju 1, što znači da je x=an, gdje je a proizvoljni realni skalar, rješenje datog sistema jednačina. Napomenimo da za rješenje ovog problema možemo koristiti i operator rref, koji daje takozvanu redukovanu ešalonsku formu matrice. U tom smislu, prvo formiramo proširenu matricu W=[A y] a zatim na emo rref(w), odakle lako nalazimo rješenje. Pošto je u ovom slučaju y=0, W je dato sa» W=[A,zeros(5,1)] W = Sa» R=rref(W) dobijamo R =

231 MATLAB for Windows odakle neposredno slijedi: x 1 +2x 3 =0 i x 2 +x 3 =0. Iz ovoga sistema vidimo da ima beskonačno mnogo rješenja, a lako se pokazuje da sva leže u Ker(A) SISTEMI SA VE]IM BROJEM NEPOZNATIH OD BROJA JEDNA^INA Kada je m<n ne postoji mogućnost nalaženja jedinstvenog rješenja. Bez gubitka na opštosti razmatranja, posmatraćemo slučaj kada je r(a)=m jer za r(a)<m neke jednačine možemo ispustiti zbog linearne zavisnosti sa preostalim jednačinama. Shodno ranijem razmatranju, kada je r(a)=r(w)=m, postoji beskonačno mnogo rješenja sistema jednačina. Iz čitave familije rješenja možemo izdvojiti ono koje ima minimalnu normu, tj. koje ispunjava uslov x min. Lako se pokazuje da se rješenje xm koje ima minimalnu normu dobija sa operatorom pinv kao xm=pinv(a)*y. Primjer Naći rješenje sa minimalnom normom za sistem opisan sa A = y = Najprije provjerimo rang A sa» rank(a) i pošto dobijemo da je r(a)=3, nalazimo rješenje minimalne norme sa» xm=pinv(a)*y xm = Napomenimo da se drugo rješenje može dobiti pomoću operatora \ za "dijeljenje" slijeva, kao» x1=a\y x1 =

232 Linearna algebra i matrične funkcije Ako provjerimo norme rješenja xm i x1 sa» norm(xm),norm(x1) dobijemo normu xm ans = i normu x1 ans = što potvr uje da je norma xm manja SISTEMI SA VE]IM BROJEM JEDNA^INA OD BROJA NEPOZNATIH Za odnos n>m, tačno rješenje moguće je naći samo u rijetkim slučajevima kada je y Im(A). Jedan od načina da se na e približno rješenje x p je minimizacija x p =min x Ax-y, za pogodno izabranu normu p. U zavisnosti od izbora norme, dobijaju se i različite vrijednosti x p. Pokazano je da se problem minimizacije najpogodnije formuliše za 2-normu jer je f(x)= Ax-y 2 kontinualno diferencijabilna funkcija od x, a njenom minimizacijom dobija se rješenje x p optimalno u smislu najmanjih kvadrata. Za nalaženje rješenja u smislu najmanjih kvadrata mogu poslužiti operatori pinv i \. Primjer Naći rješenje sistema jednačina Ax=y, za A = y = Najprije ćemo ispitati rang matrica A i W=[A y] sa» r1=rank(a),r2=rank([a y]) sa rezultatima r1=2 i r2=3, što znači da y Im(A) pa ćemo rješenje tražiti u smislu najmanjih kvadrata, sa 228

233 MATLAB for Windows» x1=pinv(a)*y x1 = Isti rezultat u ovom slučaju dobija se i pomoću operatora \:» x2=a\y x2 = MATRI^NE FUNKCIJE Vidjeli smo da elementarne matematičke funkcije (npr. sin, exp, i sl.) prihvataju kao argument matrice proizvoljne dimenzije i tretiraju ih kao polja brojeva, tj. vrše naznačenu operaciju na principu element-po-element. Pored ovakvih, u MATLAB-u postoji mogućnost računanja i matričnih funkcija koje su definisane na suštinski različitom principu, i to samo za kvadratne matrice. Posmatrajmo matricu A = a a. Funkcija exp(a) znači a a exp( a11) exp( a12), dok se matrična eksponencijalna funkcija, exp( a21) exp( a22) e A A A A 2 k = I + 1! + 2! +... = k!, računa pomoću izraza expm(a). Vidimo da je k = 0 matrična exponencijalna funkcija definisana analogno skalarnoj, a takav pristup može se uzeti pri definisanju proizvoljne funkcije. Ako je f(z) skalarna funkcija, definisana na spektru matrice A, tada se matrična funkcija f(a) dobija jednostavnom "zamjenom" skalara z matricom A u izrazu f(z). Na primjer, ako ( 1+ z) je f () z = matričnu funkciju ćemo definisati sa f(a)=(i+a)(i-a) -1, uz uslov ( 1 z) da broj 1 nije sopstvena vrijednost matrice A. Detaljno razmatranje matričnih funkcija i algoritama za njihovo izračunavanje može se naći u literaturi. Ovdje ćemo samo napomenuti da se pouzdani algoritmi zasnivaju na Schur-ovoj dekompoziciji matrice i Parlett-ovom metodu za računanje f(s), gdje je S Schur-ova forma matrice A. Operator funm služi za računanje matričnih funkcija. Opšti izraz F=funm(A,'funkcija') daje pojedine matrične funkcije, u zavisnosti od stringa 'funkcija'. Tako izrazi F1=funm(A,'exp'), F2=funm(A,'sin') i F3=funm(A,'log10') daju matričnu eksponencijalnu, sinusnu i logaritamsku funkciju, respektivno. 229

234 Linearna algebra i matrične funkcije Pored funm, postoje i operatori expm, logm i sqrtm, pri čemu su logm(x) i sqrtm(x) ekvivalentni sa funm(x,'log') i funm(x,'sqrt'), dok izraz expm(x) računa matričnu eksponencijalnu funkciju e X po posebnom algoritmu koji koristi Pade-ov razvoj. Napomenimo da expm daje pouzdanije, brže a često i tačnije rezultate od funm(,'exp'). Primjer Ilustrovaćemo pojedine matrične funkcije na primjeru matrice A = Najprije ćemo unijeti matricu i naći običnu eksponencijalnu funkciju» A=[-1 2 0;1 1 0;2-1 2];» E=exp(A) gdje se A smatra kao polje brojeva, pa je rezultat E = Za razliku od exp(a), matričnu eksponencijalnu funkciju dobićemo sa» Em=expm(A) Em = Pošto je logm inverzna matrična funkcija za expm, izraz» logm(em) daje polaznu matricu A ans = Matričnu eksponencijalnu funkciju možemo izračunati i sa» E1=funm(A,'exp') a dobija se isti rezultat kao i sa expm(a): E1 = Matrični kvadratni korijen dobija se sa 230

235 MATLAB for Windows» Q=sqrtm(A) Q = i i i i i i i i i a kao provjera može poslužiti izraz» Q^2 koji treba da rezultira u polaznoj matrici, s obzirom da iz definicije matričnog kvadratnog korijena proizilazi relacija Q 2= A. Zaista ans = i i i i i i i i i Primjer Izračunati sin(b), za B = Matričnu funkciju sin(b) možemo izračunati sa» S=funm(B,'sin') S = U MATLAB-u ne postoji operator sinm za matrični sinus, ali se lako može kreirati sa posebnim funkcijskim fajlom sinm koji se automatski dodaje sin A e ia ia = + e / 2 i listi MATLAB-ovih operatora. Na osnovu izraza ( ) jednostavno pravimo novi fajl u Notepad-u sa: function y=sinm(x) y=(expm(i*x)-expm(-i*x))/(2*i); end Sa ovako kreiranim fajlom, sada možemo izračunati sin(b) sa» S1=sinm(B) što daje isti rezultat kao i operator funm(b,'sin'): S1 =

236 Linearna algebra i matrične funkcije Na analogan način možemo kreirati funkcijske fajlove i za druge matrične funkcije kao na primjer cos(x), sinh(x), i sl., ukoliko nam je tako nešto pogodnije od odgovarajućeg operatora funm. 232

237 MATLAB for Windows glava deveta RIJETKE MATRICE MATLAB je softverski paket koji se stalno dogra uje, dopunjavajući se funkcijama potrebnim u savremenoj inžinjerskoj praksi. Dio ovih funkcija se isporučuje u osnovnom MATLAB-u dok se dio isporučuje u okviru TOOLBOX-ova. U TOOLBOX-ovima se nalaze funkcije zajedničke za rješavanje grupe problema u jednoj oblasti. Tako postoje specifični TOOLBOX-ovi za obradu signala, kontrolu i automatiku, fazi logiku, neuralne mreže, elektroenergetiku, obradu slike, itd. Istovremeno, osnovni MATLAB se proširuje specifičnim funkcijama. U poslednje vrijeme u inžinjerskoj praksi kao i teoriji algoritama intenzivno se koriste tzv. rijetke matrice. Ove matrice imaju mali broj nenultih elemenata. Nepraktično je čitave ove matrice držati u memoriji računara već samo nenulte elemente. Osim ovog pragmatičnog razloga, već smo naveli da u opisivanju struktura teorije algoritama, drveta, grafova, lista, veoma se često koriste rijetke matrice. Ove strukture se koriste za algoritme sortiranja i preure ivanja i već su odomaćene u programerskoj praksi. Niz algoritama u kojima se koriste rijetke matrice i drveta implementiran je posebnim MATLAB funkcijama. U ovom poglavlju će na nekoliko ilustrativnih primjera biti objašnjeno šta je to rijetka matrica, kako se vrši konverzija rijetke u "punu" matricu, kao i osnove vizuelizacije rijetke matrice i drveta. Naredbi koje se tiču rijetkih matrica veoma veliki broj i date su u tabeli KREIRANJE RIJETKE MATRICE Rijetka matrica se može formirati na više načina. Prvi je način primjena neke od elementarnih rijetkih matrica. Osnovna rijetka matrica je rijetka jedinična matrica koja se dobija naredbom speye(n,m) i za koju važe ista pravila kao za pravu jediničnu matricu. speye Naredbe za rad sa rijetkim matricama rijetka jedinična matrica 233

238 Rijetke matrice sprandn sprandsy m spdiags sparse full spconvert nnz nnzeros nzmax spones spalloc issparse spfun spy gplot treeplot rijetka slučajna matrica rijetka simetrična slučajna matrica rijetka dijagonalna matrica kreiranje rijetke matrice kreiranje "pune" matrice iz rijetke konvertovanje rijetke matrice broj nenultih elemenata nenulti elementi veličina prostora koji zauzimaju nenulti elementi nenulti elementi rijetke matrice se postavljaju na jedinicu zauzimanje memorije za nenulte elemente provjera da li je matrica rijetka primjenjuje funkcije na nenulte elemente vizuelizacija nenulte matrice crtanje grafa kao u "teoriji grafova" crtanje drveta Tabela 9.1 Funkcije za rad sa rijetkim matricama Primjer Kreirati rijetku jediničnu matricu a dimenzija 5x5, pa nakon toga elementu a(2,3) dodijeliti vrijednost 5.» a=speye(5);» a(2,3)=5 a = (1,1) 1 (2,2) 1 (2,3) 5 (3,3) 1 (4,4) 1 (5,5) 1 Vidimo da se na ekranu štampaju samo oni elementi matrice koji su nenulti a da bi bili jednoznačno odre eni pored njih se ispisuju indeksi koji ukazuju na poziciju tih elemenata u matrici. Za rijetke matrice, kao i za sve ostale naredbom whos dobijaju se osnovne informacije 234

239 MATLAB for Windows» whos Name Size Elements Bytes Density Complex a 5 by No Grand total is 6 elements using 92 bytes Za rijetke matrice uočimo značajan podatak Density koji predstavlja količnik broja nenultih elemenata sa ukupnim brojem elemenata matrice. Za "punu" matricu ova veličina je Full. Rijetke matrice se ravnopravno kao "pune" mogu koristiti u aritmetičkim izrazima, s tim da aritmetički izraz u kojem se pojavljuju samo rijetke matrice daje kao riješenje rijetku matricu a ako se uključi makar jedna "puna" matrica rezultat je "puna" matrica. Primjer Rijetku matricu iz prošlog zadatka pomnožiti sa dva i sabrati sa rijetkom speye(5). Nakon toga rezultat sabrati sa matricom nultih elemenata koja ima sve elemente nule (naredba zeros u pitanju je "puna" matrica)» b=speye(5);» C=2*a+b C = (1,1) 3 (2,2) 3 (2,3) 10 (3,3) 3 (4,4) 3 (5,5) 3 Sabiranjem ove matrice sa "punom" matricom čiji su svi elementi nule dobija se puna matrica» C+zeros(5) ans = I pored toga što nijesmo mijenjali vrijednost matrice, dobijamo "punu" matricu. Da zaključimo da se rijetka matrica može pretvoriti u "punu" naredbom 235

240 Rijetke matrice» C+zeros(size(C)) 9.2 RIJETKA MATRICA I FUNKCIJE Rijetka matrica na koju je primjenjena funkcija i dalje ostaje rijetka. Primjer Na imo sin i cos rijetke matrice C iz prethodnih primjera.» sin(c) ans = (1,1) (2,2) (2,3) (3,3) (4,4) (5,5) » cos(c) ans = (1,1) (2,1) (3,1) (4,1) (5,1) (1,2) (2,2) (3,2) (4,2) (5,2) (1,3) (2,3) (3,3) (4,3) (5,3) (1,4) (2,4) (3,4) (4,4) (5,4)

241 MATLAB for Windows (1,5) (2,5) (3,5) (4,5) (5,5) Vidi se da matrica cos(c), iako sa svim nenultim vrijednostima, i dalje ostaje rijetka. Ponekad je potrebno neku funkciju primijeniti samo na nenulte elemente rijetke matrice. To se postiže naredbom spfun('fun',a) gdje je fun ime MATLAB funkcije a A rijetka matrica. Primjer Na nenulte elemente matrice C primjeniti funkciju cos.» spfun('cos',c) ans = (1,1) (2,2) (2,3) (3,3) (4,4) (5,5) Postoji čitav niz funkcija koji se odnosi na rijetke mattrice a koji se može naći u tabeli 9.1. ili pomoću help-a. Ovdje ćemo pomenuti samo funkciju spones koja nenulte elemente matrice argumenta pretvara u jedinice. 9.3 KONVERZIJA PUNE MATRICE U RIJETKU I OBRNUTO Za konverziju pune matrice u rijetku koristi se naredba sparse. Ako je argument ove naredbe matrica (koja može biti "puna" ili rijetka) rezultat ove naredbe je rijetka matrica čije su dimenzije jednake dimenzijama polazne matrice. Primjer Matricu A=eye(4,3) možemo konvertovati u rijetku matricu, naredbama» A=eye(4,3) A =

242 Rijetke matrice» sparse(a) ans = (1,1) 1 (2,2) 1 (3,3) 1» size(a) ans = 4 3 Već smo vidjeli kako se rijetka matrica može konvertovati u punu. Za ovo može služiti i naredba full.» full(c) 9.4 GRAFI^KI PRIKAZ RIJETKE MATRICE I DRVETA Pozicije nenultih elemenata rijetke matrice crtaju se naredbom spy. Primjer Nacrtati pozicije nenultih elemenata matrice C primjera » spy(c) nz = 6 Slika 9.1 Grafički prikaz rijetke matice naredbom spy Drvo je složeni tip podataka u brojnim programskim jezicima, koji se može implementirati direktno (PROLOG i LISP) ili preko samoreferentnih struktura (C i PASCAL). Svaki čvor drveta može da ima više sinova (grana drveta) a sinovi svoje sinove, itd. ^vor koji nema roditelja je korijen stabla a čvorovi koji nemaju sinove su listovi. Binarno drvo je ono drvo čiji svaki čvor može imati samo dva sina koje nazivamo lijevi i desni sin čvora. Visina drveta je rastojanje od korijena drveta do najudaljenijeg lista. U MATLAB-u se obilazak binarnog drveta definiše po srednjem redosljedu koji se može opisati sljedećim algoritmom: 1 o Obilazi se po srednjem redosljedu lijevo poddrvo korijena stabla; 238

243 MATLAB for Windows 2 o Zatim se obilazi korijen; 3 o Po srednjem redosljedu se obilazi desno poddrvo korijena stabla. Za stablo sa 7 čvorova prikazano na slici 9.2 u krugovima su upisane pozicije po srednjem redosljedu. 4 korijen list Slika 9.2. Puno binarno stablo visine 2 Za crtanje drveta u MATLAB-u služi funkcija treeplot(p,'c','d'), gdje je p vektor čiji svaki element ukazuje koji je čvor roditelj datom čvoru. Za korijen se usvaja da mu je korijen 0. 'c' je boja u kojoj se crta stablo dok je 'd' boja kojom se crta veza korjena sa najudaljenijim listom stabla. Primjer Nacrtati stablo sa slike 9.2 naredbom treeplot.» p=[ ]» treeplot(p,'y','r') height = 2 Slika 9.3. Prikaz stabla funkcijom treeplot 239

244 MATLAB for Windows glava deseta ULAZNO IZLAZNE NAREDBE MATLAB posjeduje velike mogućnosti razmjene podataka sa ostalim programskim aplikacijama. Sa nekim naredbama koje mogu da sačuvaju i proslijede rezultate rada u MATLAB-u već smo se sretali. Pregled ovih naredbi kao i neke druge naredbe obra en je u ovom poglavlju. Nove MATLAB ulaznoizlazne naredbe niskog nivoa postoje u obliku analogije sa naredbama koje u C programskom jeziku služe za rad sa fajlovima. MATLAB može rezultate svoga rada da bilježi i u formi LOTUS tabele kao i u nekim drugim formatima. Posebno interesantan dio MATLAB-a je korišćenje mogućnosti dinamičke razmjene podataka sa programskim jezicima i Windows aplikacijama (tehnika DDE - Dinamic Data Exchange) što u okviru ove knjige neće biti detaljnije obrazlagano. Tako e, MATLAB može da šalje podatke na zvučnik računara i da ih smješta u format podataka.wav koji je standard za obradu zvuka PREGLED JEDNOSTAVNIH U/I NAREDBI Da bi podatke sačuvali za neku narednu sesiju MATLAB-a, koristimo naredbu save čiji su oblici save Snima sve podatke iz radnog prostora u datoteku MATLAB.MAT; save fajl Snima sve podatke iz radnog prostora u datoteku FAJL.MAT; save fajl A B C U datoteku FAJL.MAT snima samo matrice A, B i C; save fajl.ext A B C -ascii Zapisuje matrice A, B i C u datoteku FAJL.EXT u osmobitnom ASCII zapisu; save fajl.ext A B C -ascii -double Zapisuje matrice A, B i C u datoteku FAJL.EXT u šesnaestobitnom ASCII zapisu; save fajl.ext A -ascii -double -tab Zapisuje matricu A u datoteku FAJL.EXT u šenaestobitnom ASCII zapisu sa Tab znakom kao razmakom izme u podataka. load load fajl Za učitavanje podataka sa diska koristi se naredba load čiji su oblici Učitavanje iz datoteke MATLAB.MAT; Učitavanje podataka iz datoteke FAJL.MAT; 241

245 Ulazno izlazne naredbe load fajl.ext Učitavanje podataka iz tekstualne ASCII datoteke (ovdje je ekstenzija datoteke obavezna); Svi podaci koji se pojavljuju u MATLAB-ovom komandnom prozoru mogu da se snime u dnevničku datoteku - diary, naredbom diary imefajla.ext. Kraj zapisivanja u dnevnik obilježava naredba diary off. U širem smislu u izlazne naredbe MATLAB-a spadaju naredbe za grafičko postprocesiranje meta i print pomoću kojih se u raznim formatima mogu zapisati plodovi MATLAB-ovog grafičkog rada ULAZNO/IZLAZNE NAREDBE NISKOG NIVOA OTVARANJE I ZATVARANJE FAJLA Da bi se otvorio neki fajl koristi se naredba fopen čiji je opšti oblik F=fopen('imefajla','namjena') gdje je F cijelobrojni numerički identifikator pomoću kojeg se upravlja fajlom. F=0, F=1 i F=2 su već predefinisani i odnose se respektivno na standardni ulaz (obično tastatura), standardni izlaz (obično monitor) i standardnu grešku (obično monitor). 'imefajla' je naziv datoteke sa kojom se želi raditi. Dok su moguće vrijednosti namjene 'r' 'w' 'a' 'r+' 'w+' 'a+' čitanje; zapisivanje (ako datoteka ne postoji biće kreirana); dodavanje (ako datoteka ne postoji biće kreirana); čitanje i zapisivanje (ne kreira se) odsijecanje ili kreiranje za čitanje i pisanje; čitanje i dodavanje (ako je potrebno datoteka se kreira). Kod otvaranja fajla pretpostavljeno je da su u pitanju binarni fajlovi (ovdje postoje bitne razlike u zavisnosti od verzija MATLAB-a pa se treba informisati u help-u). Ako se želi fajl otvoriti u tekstualnom režimu u namjeni je potrebno dodati slovo t. Npr. 'rt' ili 'wt+'. Fajl čiji je numerički identifikator F zatvara se naredbom fclose(f), dok se naredbom fclose('all') zatvaraju svi otvoreni fajlovi osim onih sa identifikatorima F=0, F=1 i F=2. Naredba fclose vraća nulu ako je zatvaranje uspješno obavljeno i -1 ako nije NEFORMATIZOVANI ULAZ/IZLAZ 242

246 MATLAB for Windows Za čitanje binarnih podataka iz fajla koristi se naredba fread čiji je opšti oblik [A,B]=fread(F,vel,'preciznost') gdje je A matrica u koju se zapisuju podaci iz datoteke, B broj uspješno pročitanih podataka, F cjelobroni numerički identifikator datoteke koja je otvorena naredbom fopen. vel je veličina podataka koji se žele pročitati i ima vrijednosti N inf [M,N] Smještanje N elemenata u vektor kolonu; ^itanje podataka do kraja fajla; Smještanje podataka u matricu dimenzija MxN, N - može biti inf. 'preciznost' definiše tip podatka koji se želi čitati kao i koliko svaki podatak zauzima memorije. Moguće vrijednosti su 'char' 'schar' 'short' 'int' 'long' 'float' 'double' 'uchar' 'ushort' 'uint' 'ulong' Karakter 8-bita; Označeni karakter 8-bita; Cijeli broj 16-bita; Cijeli broj 16 ili 32 bita; Cijeli broj 32 ili 64 bita; Broj u pokretnom zarezu 32 bita; Broj u pokretnom zarezu 64 bita; Neoznačeni karakter 8-bita; Neoznačeni cijeli broj; Neoznačeni cijeli broj 16 ili 32 bita; Neoznačeni cijeli broj 32 ili 64 bita. Za neformatizovano zapisivanje matrice A u datoteku F koristi se naredba fwrite u obliku B=fwrite(F,A,'preciznost') B je broj uspješno zapisanih podataka, dok preciznost ima isto značenje kao u naredbi fread. Primjer Matricu veličine 5x5 slučajnih cijelih brojeva od 0 do 15 snimiti u datoteku pod imenom prva.bin.» a=fopen('prva.bin','w');» fwrite(a,floor(16*rand(5)),'int') ans = 25» fclose(a) 243

247 ans = 0 Ulazno izlazne naredbe Otvorimo datoteku prva.bin za čitanje i pročitajmo njen sadržaj.» a=fopen('prva.bin','r');» fread(a,[5 5],'int') ans = » fclose(a) FORMATIZOVANI ULAZ/IZLAZ Za zapisivanje formatizovanih podataka u fajl služi naredba fprintf čiji je opšti oblik B=fprintf(F,'format',A,...) gdje je F identifikator fajla i A matrica koja se zapisuje. Vidimo da ovom naredbom u fajl možemo da snimimo više različitih kombinacija formata i matrice koja se zapisuje. 'format' predstavlja format zapisa koji je potpuno analogan C programskom jeziku. Moguće slovne oznake tipa konverzije podataka su kao i u C-u karakteri d, i, o, u, x, X, f, e, E, g, G, c i s kojima prethodi znak % (procenat). Ko je radio u programskom jeziku C zna značenje ovih oznaka a ovdje samo da pomenemo da %d ukazuje na cijele brojeve, %f na brojeve u pokretnom zarezu, %c na karakter i %s na string. Primjer Kreirati fajl tabela u kojem se nalaze vrijednosti nezavisno promjenljive -1 x 1 sa korakom 0.1 kao i odgovarajuće vrijednosti sin(x) i cos(x). Neka svi podaci budu zapisani u pokretnom zarezu i to x sa pet mjesta od toga 3 decimalna, a sin(x) i cos(x) 12 mjesta od toga 8 decimalnih.» x=-1:0.1:1; y=[x;sin(x);cos(x)];» F=fopen('tabela','w');» fprintf(f,'%5.3f %12.8f %12.8f\n',y);» fclose(f) 244

248 MATLAB for Windows Oznaka \n predstavlja znak za novi red što će reći da se poslije zapisa tri elementa podaci smještaju u novi red. Opcioni rezultat naredbe fprintf ukazuje na broj uspješno prenesenih podataka. Za čitanje iz fajla formatizovanih podataka koristi se naredba fscanf čiji je opšti oblik [A,B]=fscanf(F,'format',vel) gdje je A matrica u koju se smještaju podaci, B opcioni izlaz i ukazuje na broj uspješno prenesenih podataka, F je numerički identifikator fajla, 'format' ima isto značenje kao u naredbi fprintf a vel ima isto značenje kao u naredbi fread. Primjer Pročitati sa diska sadržaj fajla koji je snimljen u prethodnom primjeru» F=fopen('tabela','r');» [a,b]=fscanf(f,'%f',[3 21]) a = Columns 1 through Columns 8 through Columns 15 through b = 63 Ovim smo pročitali sadržaj fajla i stigli do njegovog kraja, novi pokušaj čitanja neće dovesti do čitanja podataka» fscanf(f,'%f',1) ans = [] Me utim, zatvorimo fajl pa ga ponovo otvorimo i pročitajmo 6 podataka u matrici 2x3» fclose(f)» F=fopen('tabela','r'); 245

249 Ulazno izlazne naredbe» [a,b]=fscanf(f,'%f',[4 3]) a = b = 12 sada se može nastaviti čitanje podataka, npr. može se pročitati matrica od 2x2 elemenata u nastavku» [a,b]=fscanf(f,'%f',[2 2]) a = b = 4» fclose(f); U MATLAB-u postoji i dvije naredbe kojima se čita jedan red matrice fgetl(f) i fgets(f), s time što prva naredba ne prenosi oznaku za kraj reda a druga prenosi POZICIONIRANJE U FAJLU Veoma važne za rad sa fajlovima su naredbama za pozicioniranja u fajlu. Za pomijeranje pozicije čitanja i zapisivanja u postojećem fajlu koristi se naredba fseek čiji je oblik S=fseek(F,pravac,pocetak) gdje je F numerički identifikator fajla, pravac veličina koja govori o pravcu pomjeraja u fajlu. Ako je pravac>0 kretanje je ka kraju fajlu, pravac=0 stojanje na mjestu i pravac<0 ka početku fajla. pocetak je pozicija od koje se vrši pomijeranje a moguće su vrijednosti 'bof' ili -1 'cof' ili 0 'eof' ili 1 nije. početak fajla; trenutna pozicija; kraj fajla. Rezultat naredbe S je jednak 0 ako je pozicioniranje uspjelo i -1 ako Primjer Otvorimo fajl tabela, pročitajmo prvih šest podataka iz njega, zatim preskočiti dio matrice, pa pročitati slijedećih 12 podataka u matrici 3x4. 246

250 MATLAB for Windows» F=fopen('tabela','r');» fscanf(f,'%f',6) ans = » fseek(f,0,-1) ans = 0» fscanf(f,'%f',4) ans = » fclose(f); Trenutnu poziciju u fajlu možemo pročitati naredbom ftell(f). Za premotavanje fajla na početak može se koristiti naredba frewind(f) što se može uraditi i naredbom» fseek(f,0,-1); Ako se želi znati da li je pokazivač fajla na kraju fajla koristi se naredba feof(f) čiji je rezultat 1 ako se stiglo do kraja fajla a nula ako nije ZAPISIVANJE FAJLOVA U LOTUS-FORMATU MATLAB pored već vi enih formata zapisa podatke može da zapiše i čita u nizu drugih formata. Jedan od tih formata je zapis matrice u formatu LOTUS radne tabele.wk1. Za čitanje sa diska LOTUS radne tabele i njeno smještanje u matricu M koristi se naredba wk1read M=wk1read('file',r,c) čime se sadržaj LOTUS radne tabele file.wk1 smješta u matricu. Veoma često radne tabele posjeduju zaglavlje za koje se koristi prvih nekoliko redova i kolona matrice. Za definisanje tog razmaka koriste se opcioni argumenti naredbe wk1read r i c. Matrica se može zapisati u LOTUS tabelu naredbom wk1write čiji je opšti oblik wk1write('file',m,r,c) 247

251 Ulazno izlazne naredbe čime se u radnu tabelu file.wk1 smješta matrica M a r i c su ofset od kojega počinje radna tabela SNIMANJE I U^ITAVANJE ZVU^NIH PODATAKA Za snimanje vektora u obliku MS Windows 3.1x.WAV formatu koristi se naredba wavwrite(y,f,'fajl') čime se niz podataka u vektoru y odabran učestanošću F smješta u fajl.wav. Npr. naredbom» y=floor(256*rand(1,1024));» wavwrite(y,10000,'c:\windows\sum'); se snima slučajni šum inteziteta od 0 do 255 u direktorijumu C:\WINDOWS, pod imenom SUM.WAV, koji se može priključiti nekom postojećem Windows doga aju (pomoću Control Panel-a i programa Sounds). Naredbom wavwrite se snimaju 8-bitni cijelobrojni podaci. Podaci iz fajla se mogu čitati naredbom y=wavread('fajl') a ako želimo znati i učestanost odabiranja [y,f]=wavread('fajl'). Na primjer, naredbom» [y,f]=wavread('c:\windows\ding')» F F = se učitava sadržaj fajla DING.WAV iz direktorijuma C:\WINDOWS. Dobili smo da je signal odabran učestanošću F= MATLAB posjeduje i mogućnost reprodukcije signala pomoću zvučnika (ugra enog ili spoljašnjeg) naredbom sound(y). 248

252 glava jedanaesta MATLAB for Windows MATLAB OKRUŽENJE 11.1 OSNOVNI MATLAB I DODATNI MODULI U verziji MATLAB-a 4.2, pored osnovnog MATLAB-a mogu se instalisati i dodatni toolbox-ovi i program SIMULINK. Toolbox programski moduli predstavljaju skupove funkcija namijenjenih za rješavanje specifičnih inžinjerskih problema. SIMULINK je dodatni MATLAB modul koji je namjenjen simulaciji dinamike sistema. Ovi dodatni moduli neće biti detaljnije obrazlagani u okviru ove knjige STRUKTURA MATLAB-A Prilikom instalacije MATLAB-a kreira se direktorijum MATLAB (a može mu se dati i drugo ime) sa nizom poddirektorijuma. Ovi direktorijumi čine put po kojem se mogu pretraživati MATLAB funkcije. Uvid u put pretraživanja se može dobiti naredbom» path Neki direktorijum se može dodati putu pretraživanja naredbom path(c,path) gdje je C direktorijum koji se dodaje putu pretraživanja. Tako se naredbom» path('c:\tc',path) dodaje direktorijum C:\TC putu pretraživanja naredbi.» dir Sadržaj tekućeg direktorijuma se može pogledati naredbom Za naredbu dir važe sva značajnija MS DOS pravila tako je naredbom» dir c*.* izlistavaju iz tekućeg direktorijuma svi fajlovi koji počinju slovom c. Naredbom what se izlistavaju tri grupe MATLAB fajlova iz tekućeg direktorijuma (fajlovi koji imaju.m,.mat i.mex ekstenziju). U MATLAB-u se može pomoću naredba cd vršiti promjena tekućeg direktorijuma. Oblici ove naredbe su cd prikazuje ime tekućeg direktorijuma; cd.. čini aktivnim direktorijum iznad tekućeg; cd imedir čini tekućim direktorijum imedir. 249

253 MATLAB okruženje Napomenimo da se prilikom startovanja MATLAB-a pokreće program matlabrc.m u kojem su podešeni osnovni parametri rada. Pored ovog fajla korisnik može kreirati fajl pod nazivom startup.m koji će se izvršavati nakon matlabrc.m a prije početka rada u MATLAB-u MENI KOMANDNOG PROZORA MATLAB-A U liniji menija nalaze se opcije File, Edit, Options, Windows i Help FILE MENI U File meniju reguliše se rad sa fajlovima. Opcije ovog menija su New Open M-file otvaranje novog - m fajla (M-file); otvaranje novog grafičkog prozora (Figure); otvaranje novog SIMULINK modela (Model); otvaranje postojećeg m-fajla., nakon čega se otvara dialog box sa slike 11.1 u kojem se bira fajl koji se želi otvoriti; Slika 11.1 Open dialog box Save Workspace As snima radni prostor u.mat fajl koji se specificira u dialog boxu koji je sličan onom sa slike 11.1; Run M-file aktiviranje m-fajla. Treba upisati ime fajla koji se želi otvoriti ili sa Browse potražiti taj fajl; Print štampanje komandnog prozora; Print Setup izbor štampača i postavljanje njegovih parametara; Exit MATLAB izlazak iz MATLAB-a EDIT MENI Namjena Edit menija je rad sa Clipboard-om, to jest smještanje i uzimanje podataka iz ove memorije. 250

254 MATLAB for Windows Cut Copy Paste Clear Session briše selektovani dio teksta iz komandnog prozora i smješta ga u Clipboard; kopira selektovani dio teksta iz komandnog prozora u Clipboard; smještanje sadržaja Clipboard-a u komandni prozor; čisti komandni prozor (slično MS DOS naredbi cls) OPTIONS MENI Ovaj meni služi za postavljanje parametara MATLAB-ovog radnog okruženja. Opcije menija su Numeric Format adekvatno naredbi format; Turn Echo on (ili off) adekvatno naredbi echo; Enable (ili Disable) Background Process omogućuje (ili onemogućuje) odvijanje procesa u pozadini; Command Window Font odre uje font koji se koristi u komandnom prozoru. Pored fonta i njegove veličine može se podesiti boja fonta i boja pozadine (slika 11.2). Slika 11.2 Izbor fonta koji se primjenjuje u komandnom prozoru Uicontrol Font Editor Preference font koji se koristi u kontrolama (uicontrol); izbor editora u kojem se kreiraju m-fajlovi. Uobičajeno je to C:\Windows\Notepad.EXE a može i bilo koji drugi MS DOS i WINDOWS editor (EDIT, NE, WRITE, itd). 251

Mathcad sa algoritmima

Mathcad sa algoritmima P R I M J E R I P R I M J E R I Mathcad sa algoritmima NAREDBE - elementarne obrade - sekvence Primjer 1 Napraviti algoritam za sabiranje dva broja. NAREDBE - elementarne obrade - sekvence Primjer 1 POČETAK

More information

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH MAT-KOL (Banja Luka) XXIII ()(7), -7 http://wwwimviblorg/dmbl/dmblhtm DOI: 75/МК7A ISSN 5-6969 (o) ISSN 986-588 (o) ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA Šefket Arslanagić,

More information

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek Algoritam za množenje ulančanih matrica Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek O problemu (1) Neka je A 1, A 2,, A n niz ulančanih matrica duljine n N, gdje su dimenzije matrice

More information

Projektovanje paralelnih algoritama II

Projektovanje paralelnih algoritama II Projektovanje paralelnih algoritama II Primeri paralelnih algoritama, I deo Paralelni algoritmi za množenje matrica 1 Algoritmi za množenje matrica Ovde su data tri paralelna algoritma: Direktan algoritam

More information

TEORIJA SKUPOVA Zadaci

TEORIJA SKUPOVA Zadaci TEORIJA SKUPOVA Zadai LOGIKA 1 I. godina 1. Zapišite simbolima: ( x nije element skupa S (b) d je član skupa S () F je podskup slupa S (d) Skup S sadrži skup R 2. Neka je S { x;2x 6} = = i neka je b =

More information

Fajl koji je korišćen može se naći na

Fajl koji je korišćen može se naći na Machine learning Tumačenje matrice konfuzije i podataka Fajl koji je korišćen može se naći na http://www.technologyforge.net/datasets/. Fajl se odnosi na pečurke (Edible mushrooms). Svaka instanca je definisana

More information

Kratak kurs MatLab-a

Kratak kurs MatLab-a Kratak kurs MatLab-a 1 SADRŽAJ 1. Uvodne osnove... 3 2. Rad sa osnovnim funkcijama MatLab-a... 4 2.1. Matematičke funkcije u MatLabu... 5 2.2. Rad sa matricama... 6 2.2.1. Rad sa elementima matrice...

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 2. čas 1 Mala studentska baza dosije (indeks, ime, prezime, datum rodjenja, mesto rodjenja, datum upisa) predmet (id predmeta, sifra, naziv, bodovi) ispitni rok

More information

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU MAT KOL Banja Luka) ISSN 0354 6969 p) ISSN 1986 58 o) Vol. XXI )015) 105 115 http://www.imvibl.org/dmbl/dmbl.htm PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU Bernadin Ibrahimpašić 1 Senka Ibrahimpašić

More information

O MATLAB-U Što je MATLAB? MATLAB je naročito dobar za. Elektrotehnika. Kako se i gdje sve Matlab koristi u tehnici?

O MATLAB-U Što je MATLAB? MATLAB je naročito dobar za. Elektrotehnika. Kako se i gdje sve Matlab koristi u tehnici? O MATLAB-U Što je MATLAB? MATLAB je jedan od nekolicine komercijalnih matematičkih software paketa/alata Postoje još i Maple Mathematica MathCad MATLAB je naročito dobar za Matematičke operacije Posebno

More information

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će Permutacije Zadatak. U vreći se nalazi n loptica različitih boja. Iz vreće izvlačimo redom jednu po jednu lopticu i stavljamo jednu pored druge. Koliko različitih redosleda boja možemo da dobijemo? Primer

More information

Red veze za benzen. Slika 1.

Red veze za benzen. Slika 1. Red veze za benzen Benzen C 6 H 6 je aromatično ciklično jedinjenje. Njegove dve rezonantne forme (ili Kekuléove structure), prema teoriji valentne veze (VB) prikazuju se uobičajeno kao na slici 1 a),

More information

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia oktobar 2012 Iskazi, istinitost, veznici Intuitivno, iskaz je rečenica koja je ima tačno jednu jednu

More information

Sveučilišni studijski centar za stručne studije. Zavod za matematiku i fiziku. Uvod u Matlab. Verzija 1.1

Sveučilišni studijski centar za stručne studije. Zavod za matematiku i fiziku. Uvod u Matlab. Verzija 1.1 Sveučilišni studijski centar za stručne studije Zavod za matematiku i fiziku Uvod u Matlab Verzija 1.1 Karmen Rivier, Arijana Burazin Mišura 1.11.2008 Uvod Matlab je interaktivni sistem namijenjen izvođenju

More information

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE Linearni model Promatramo jednodimenzionalni linearni model. Y = β 0 + p β k x k + ε k=1 x 1, x 2,..., x p - varijable poticaja (kontrolirane) ε - sl.

More information

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ   URL: KLASIFIKACIJA NAIVNI BAJES NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info ŠTA JE KLASIFIKACIJA? Zadatak određivanja klase kojoj neka instanca pripada instanca je opisana

More information

Metode praćenja planova

Metode praćenja planova Metode praćenja planova Klasična metoda praćenja Suvremene metode praćenja gantogram mrežni dijagram Metoda vrednovanja funkcionalnosti sustava Gantogram VREMENSKO TRAJANJE AKTIVNOSTI A K T I V N O S T

More information

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom. Osječki matematički list 5(005), 8 Različiti načini množenja matrica Ivan Soldo Sažetak U članku se analiziraju različiti načini množenja matrica Svaki od njih ilustriran je primjerom Ključne riječi: linearni

More information

Matrice u Maple-u. Upisivanje matrica

Matrice u Maple-u. Upisivanje matrica Matrice u Maple-u Tvrtko Tadić U prošlom broju upoznali ste se s matricama, a u ovom broju vidjeli ste neke njihove primjene. Mnoge je vjerojatno prepalo računanje s matricama. Pa tko će raditi svo to

More information

SINTAKSNA I ALGORITAMSKA NOTACIJA

SINTAKSNA I ALGORITAMSKA NOTACIJA B-1 Prilog B SINTAKSNA I ALGORITAMSKA NOTACIJA B-2 B.1 Sintaksna notacija sa zagradama U osnovi svake sintaksne notacije nalaze se slede}i elementi: sintaksni pojam: leksi~ka konstrukcija koja se defini{e;

More information

AUTOMATIZACIJA AUTOMATIZACIJA. Proces kontrole i upravljanja zahtijeva kontinuirano mjerenje. znanje i informacije. Osnovni tipovi sustava

AUTOMATIZACIJA AUTOMATIZACIJA. Proces kontrole i upravljanja zahtijeva kontinuirano mjerenje. znanje i informacije. Osnovni tipovi sustava AUTOMATIZACIJA Laboratorijske vježbe MatLab/Simulink (Octave, Scilab) 1.Uvod u MatLab (Octave, Scilab) 2.Matematičko modeliranje komponenti sustava 3.Matlab (Octave, Scilab) u analizi automatskih sustava

More information

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1 Šime Šuljić Funkcije Zadavanje funkcije i područje definicije š2004š 1 Iz povijesti Dvojica Francuza, Pierre de Fermat i Rene Descartes, posebno su zadužila matematiku unijevši ideju koordinatne metode

More information

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice Osječki matematički list 6(2006), 79 84 79 Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice Zlatko Udovičić Sažetak. Geometrijski smisao rješenja sustava od dvije linearne

More information

povezuju tačke na četiri različita načina (pravom linijom, splajnom,

povezuju tačke na četiri različita načina (pravom linijom, splajnom, Origin Zadatak 1. Otvoriti Origin i kreirati novi projekat; U datasheet-u dodati novu kolonu; U project exploreru kreirati nove podfoldere: Data i Graphs; Prebaciti trenutni datasheet u podfolder Data;

More information

NIPP. Implementing rules for metadata. Ivica Skender NSDI Working group for technical standards.

NIPP. Implementing rules for metadata. Ivica Skender NSDI Working group for technical standards. Implementing rules for metadata Ivica Skender NSDI Working group for technical standards ivica.skender@gisdata.com Content Working group for technical standards INSPIRE Metadata implementing rule Review

More information

3. Programiranje u Matlab-u

3. Programiranje u Matlab-u 3. Programiranje u Matlab-u 3.1 M-datoteke M-datoteka nije ništa drugo do obična tekstualna datoteka koja sadrži MATLAB komande i sačuvana je sa ekstenzijom.m. Postoje dva tipa M-datoteka, skriptovi i

More information

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA 6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA U programiranju često postoji potreba da se redoslijed izvršavanja naredbi uslovi prethodno dobivenim međurezultatima u toku izvršavanja programa. Na

More information

L A T E X 1. predavanje

L A T E X 1. predavanje L A T E X 1. predavanje Ivica Nakić PMF-MO Računarski praktikum 3 nakic@math.hr LAT E X- predavanje 1 - p. 1 Što je LAT E X? Mali primjer PDF dokument Zašto LAT E X? LAT E X- predavanje 1 - p. 2 Što je

More information

Metode izračunavanja determinanti matrica n-tog reda

Metode izračunavanja determinanti matrica n-tog reda Osječki matematički list 10(2010), 31 42 31 STUDENTSKA RUBRIKA Metode izračunavanja determinanti matrica n-tog reda Damira Keček Sažetak U članku su opisane metode izračunavanja determinanti matrica n-tog

More information

PREDAVANJA. Igor Vujović. Split, 2016.

PREDAVANJA. Igor Vujović. Split, 2016. SVEUČILIŠTE U SPLITU POMORSKI FAKULTET U SPLITU TEHNIČKI PROGRAMSKI PAKETI PREDAVANJA Igor Vujović Split, 2016. PREDGOVOR Danas se smatra da tehnički obrazovana osoba mora imati određena znanja iz programiranja

More information

Metrički prostori i Riman-Stiltjesov integral

Metrički prostori i Riman-Stiltjesov integral Metrički prostori i Riman-Stiltjesov integral Sadržaj 1 Metrički prostori 3 1.1 Primeri metričkih prostora................. 3 1.2 Konvergencija nizova i osobine skupova...................... 12 1.3 Kantorov

More information

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva. Zadatci sa ciklusima Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva. StrToIntDef(tekst,broj) - funkcija kojom se tekst pretvara u ceo broj s tim da je uvedena automatska kontrola

More information

Matrice traga nula math.e Vol. 26. math.e. Hrvatski matematički elektronički časopis. Matrice traga nula. komutator linearna algebra. Sažetak.

Matrice traga nula math.e Vol. 26. math.e. Hrvatski matematički elektronički časopis. Matrice traga nula. komutator linearna algebra. Sažetak. 1 math.e Hrvatski matematički elektronički časopis komutator linearna algebra Marijana Kožul i Rajna Rajić Matrice traga nula marijana55@gmail.com, rajna.rajic@rgn.hr Rudarsko-geološko-naftni fakultet,

More information

Ariana Trstenjak Kvadratne forme

Ariana Trstenjak Kvadratne forme Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Ariana Trstenjak Kvadratne forme Završni rad Osijek, 014. Sveučilište Josipa Jurja Strossmayera

More information

Nilpotentni operatori i matrice

Nilpotentni operatori i matrice Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Nikolina Romić Nilpotentni operatori i matrice Završni rad Osijek, 2016. Sveučilište J. J. Strossmayera

More information

UPUTE ZA OBLIKOVANJE DIPLOMSKOG RADA

UPUTE ZA OBLIKOVANJE DIPLOMSKOG RADA 1 UPUTE ZA OBLIKOVANJE DIPLOMSKOG RADA Opseg je diplomskog rada ograničen na 30 stranica teksta (broje se i arapskim brojevima označavaju stranice od početka Uvoda do kraja rada). Veličina je stranice

More information

Konstrukcija i analiza algoritama

Konstrukcija i analiza algoritama Konstrukcija i analiza algoritama 27. februar 207 Matematička indukcija Princip matematičke indukcije: Da bi za svako n N važilo tvrdjenje T (n) dovoljno je pokazati: bazu indukcije: tvrdjenje T () induktivni

More information

UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE

UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE UNIVERZITET U NIŠU PRIRODNO MATEMATIČKI FAKULTET ODSEK ZA MATEMATIKU I INFORMATIKU Dijana Mosić UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE Doktorska disertacija Mentor Prof. dr Dragan Djordjević

More information

Karakteri konačnih Abelovih grupa

Karakteri konačnih Abelovih grupa Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Matija Klarić Karakteri konačnih Abelovih grupa Završni rad Osijek, 2015. Sveučilište J. J. Strossmayera

More information

BROJEVNE KONGRUENCIJE

BROJEVNE KONGRUENCIJE UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU Vojko Nestorović BROJEVNE KONGRUENCIJE - MASTER RAD - Mentor, dr Siniša Crvenković Novi Sad, 2011. Sadržaj Predgovor...............................

More information

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010.

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010. Oracle Spatial Koordinatni sustavi, projekcije i transformacije Dalibor Kušić, mag. ing. listopad 2010. Pregled Uvod Koordinatni sustavi Transformacije Projekcije Modeliranje 00:25 Oracle Spatial 2 Uvod

More information

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013)

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013) MAT-KOL (Banja Luka) ISSN 0354-6969 (p), ISSN 1986-5228 (o) Vol. XIX (3)(2013), 35-44 ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013) Nenad O. Vesi 1 Du²an

More information

Mirela Nogolica Norme Završni rad

Mirela Nogolica Norme Završni rad Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Mirela Nogolica Norme Završni rad Osijek, 2014. Sveučilište J.J. Strossmayera u Osijeku Odjel za

More information

Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu.

Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu. Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu (akademska godina 2015/16) Funkcijske relacije i funkcije (preslikavanja)

More information

U X. 1. Multivarijantna statistička analiza 1

U X. 1. Multivarijantna statistička analiza 1 . Multivarijantna statistička analiza Standardizovana (normalizovana) vrednost obeležja Normalizovano odstupanje je mera varijacije koja pokazuje algebarsko odstupanje jedne vrednosti obeležja od aritmetičke

More information

pretraživanje teksta Knuth-Morris-Pratt algoritam

pretraživanje teksta Knuth-Morris-Pratt algoritam pretraživanje teksta Knuth-Morris-Pratt algoritam Jelena Držaić Oblikovanje i analiza algoritama Mentor: Prof.dr.sc Saša Singer 18. siječnja 2016. 18. siječnja 2016. 1 / 48 Sadržaj 1 Uvod 2 Pretraživanje

More information

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele. Bubble sort Razmotrimo još jedan vrlo popularan algoritam sortiranja podataka, vrlo sličan prethodnom algoritmu. Algoritam je poznat pod nazivom Bubble sort algoritam (algoritam mehurastog sortiranja),

More information

Matrične dekompozicije i primjene

Matrične dekompozicije i primjene Sveučilište JJ Strossmayera u Osijeku Odjel za matematiku Goran Pavić Matrične dekompozicije i primjene Diplomski rad Osijek, 2012 Sveučilište JJ Strossmayera u Osijeku Odjel za matematiku Goran Pavić

More information

Algoritmi za mnoºenje i dijeljenje velikih. brojeva. Marko Pejovi UNIVERZITET CRNE GORE. Prirodno-matemati ki fakultet Podgorica. Podgorica, 2018.

Algoritmi za mnoºenje i dijeljenje velikih. brojeva. Marko Pejovi UNIVERZITET CRNE GORE. Prirodno-matemati ki fakultet Podgorica. Podgorica, 2018. UNIVERZITET CRNE GORE Prirodno-matemati ki fakultet Podgorica Marko Pejovi Algoritmi za mnoºenje i dijeljenje velikih brojeva SPECIJALISTIƒKI RAD Podgorica, 2018. UNIVERZITET CRNE GORE Prirodno-matemati

More information

DISTRIBUIRANI ALGORITMI I SISTEMI

DISTRIBUIRANI ALGORITMI I SISTEMI Postavka 7: međusobno isključivanje sa read/write promenljivama 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch Read/Write deljene promenljive

More information

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia novembar 2012 Rezolucija 1 Metod rezolucije je postupak za dokazivanje da li je neka iskazna (ili

More information

Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe

Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe Kvaternioni i kvaternionsko rješenje 1 Uvod Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe Željko Zrno 1 i Neven Jurić Što je matematika? Na što prvo čovjeka asocira riječ matematika? Matematika

More information

Vedska matematika. Marija Miloloža

Vedska matematika. Marija Miloloža Osječki matematički list 8(2008), 19 28 19 Vedska matematika Marija Miloloža Sažetak. Ovimčlankom, koji je gradivom i pristupom prilagod en prvim razredima srednjih škola prikazuju se drugačiji načini

More information

Fraktali - konačno u beskonačnom

Fraktali - konačno u beskonačnom Prirodno-Matematički fakultet, Niš. dexterofnis@gmail.com www.pmf.ni.ac.rs/dexter Nauk nije bauk, 2011 Sadržaj predavanja 1 Sadržaj predavanja 1 2 Sadržaj predavanja 1 2 3 Box-Counting dimenzija Hausdorfova

More information

Miloš Brajović REKURZIVNO IZRAČUNAVANJE VREMENSKO-FREKVENCIJSKIH REPREZENTACIJA. magistarski rad

Miloš Brajović REKURZIVNO IZRAČUNAVANJE VREMENSKO-FREKVENCIJSKIH REPREZENTACIJA. magistarski rad UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET Miloš Brajović REKURZIVNO IZRAČUNAVANJE VREMENSKO-FREKVENCIJSKIH REPREZENTACIJA magistarski rad Podgorica, 23. UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET

More information

Simetrične matrice, kvadratne forme i matrične norme

Simetrične matrice, kvadratne forme i matrične norme Sveučilište JJStrossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Martina Dorić Simetrične matrice, kvadratne forme i matrične norme Završni rad Osijek, 2014 Sveučilište

More information

Hornerov algoritam i primjene

Hornerov algoritam i primjene Osječki matematički list 7(2007), 99 106 99 STUDENTSKA RUBRIKA Hornerov algoritam i primjene Zoran Tomljanović Sažetak. U ovom članku obrad uje se Hornerov algoritam za efikasno računanje vrijednosti polinoma

More information

Prsten cijelih brojeva

Prsten cijelih brojeva SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ODJEL ZA MATEMATIKU Marijana Pravdić Prsten cijelih brojeva Diplomski rad Osijek, 2017. SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ODJEL ZA MATEMATIKU

More information

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov UNIVERSITY OF NIŠ The scientific journal FACTA UNIVERSITATIS Series: Mechanical Engineering Vol.1, N o 6, 1999 pp. 675-681 Editor of series: Nenad Radojković, e-mail: radojkovic@ni.ac.yu Address: Univerzitetski

More information

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu 1. Izdvojiti ime i prezime studenata koji su rođeni u Beogradu. (DOSIJE WHERE MESTO_RODJENJA='Beograd')[IME, PREZIME] where mesto_rodjenja='beograd'

More information

Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG

Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG http://web.math.hr/~rogina/001096/num_anal.pdf Numerička analiza G R E Š K E Prvi uvodni primjer 50 50 1/ 5 33554 43 1.414 1356... 50 1.414 1356

More information

1.1 Algoritmi. 2 Uvod

1.1 Algoritmi. 2 Uvod GLAVA 1 Uvod Realizacija velikih računarskih sistema je vrlo složen zadatak iz mnogih razloga. Jedan od njih je da veliki programski projekti zahtevaju koordinisani trud timova stručnjaka različitog profila.

More information

DISKRETNI LOGARITAM. 1 Uvod. MAT-KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XVII (2)(2011), 43-52

DISKRETNI LOGARITAM. 1 Uvod. MAT-KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XVII (2)(2011), 43-52 MAT-KOL (Banja Luka) ISSN 0354-6969 (p), ISSN 1986-5228 (o) Vol. XVII (2)(2011), 43-52 DISKRETNI LOGARITAM Bernadin Ibrahimpašić 1, Dragana Kovačević 2 Abstract U ovom članku se opisuje pojam diskretnog

More information

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle). Uvod u analizu (M-0) 0., 07. i. XI 0. dr Nenad Teofanov. Kardinalni broj skupa R U ovom predavanju se razmatra veličina skupa realnih brojeva. Jasno, taj skup ima beskonačno mnogo elemenata. Pokazaće se,

More information

DESIGN AND CALCULATION OF RING SPRINGS AS SPRING ELEMENTS OF THE WAGON BUFFER UDC : Jovan Nešović

DESIGN AND CALCULATION OF RING SPRINGS AS SPRING ELEMENTS OF THE WAGON BUFFER UDC : Jovan Nešović FACTA UNIVERSITATIS Series: Mechanical Engineering Vol.1, N o 9, 2002, pp. 1127-1133 DESIGN AND CALCULATION OF RING SPRINGS AS SPRING ELEMENTS OF THE WAGON BUFFER UDC 62-272.43:623.435 Jovan Nešović Faculty

More information

DRUGI KOLOKVIJ ZADACI ZA VJEŽBU. 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu:

DRUGI KOLOKVIJ ZADACI ZA VJEŽBU. 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu: DRUGI KOLOKVIJ ZADACI ZA VJEŽBU 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu: a. SELECT moja_baza b. ENTER moja_baza c. USE moja_baza d. OPEN moja_baza 2. zadatak. Koja od ovih naredbi

More information

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

ANALYSIS OF THE RELIABILITY OF THE ALTERNATOR- ALTERNATOR BELT SYSTEM I. Mavrin, D. Kovacevic, B. Makovic: Analysis of the Reliability of the "Alternator- Alternator Belt" System IVAN MAVRIN, D.Sc. DRAZEN KOVACEVIC, B.Eng. BRANKO MAKOVIC, B.Eng. Fakultet prometnih znanosti,

More information

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1 MAT KOL (Banja Luka) ISSN 0354 6969 (p), ISSN 1986 5228 (o) Vol. XXII (1)(2016), 5 19 http://www.imvibl.org/dmbl/dmbl.htm KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU

More information

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA KOZMIČKI SAT ranog svemira Ekstra zračenje u mjerenju CMB Usporedba s rezultatima LEP-a Usporedba CMB i neutrina Vj.: Pozadinsko zračenje neutrina

More information

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008 1 Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD NOVI SAD jun 2008 2 Sadržaj 1 UVOD 5 2 FUNKCIJE 11 3 KLASIČNI KOMBINATORNI OBJEKTI 17 4 NEKI NEKLASIČNI KOMBINATORNI

More information

Programiranje u realnom vremenu Bojan Furlan

Programiranje u realnom vremenu Bojan Furlan Programiranje u realnom vremenu Bojan Furlan Tri procesa sa D = T imaju sledeće karakteristike: Proces T C a 3 1 b 6 2 c 18 5 (a) Pokazati kako se može konstruisati ciklično izvršavanje ovih procesa. (b)

More information

THE ROLE OF SINGULAR VALUES OF MEASURED FREQUENCY RESPONSE FUNCTION MATRIX IN MODAL DAMPING ESTIMATION (PART II: INVESTIGATIONS)

THE ROLE OF SINGULAR VALUES OF MEASURED FREQUENCY RESPONSE FUNCTION MATRIX IN MODAL DAMPING ESTIMATION (PART II: INVESTIGATIONS) Uloga singularnih vrijednosti izmjerene matrice funkcije frekventnog odziva u procjeni modalnog prigušenja (Dio II: Istraživanja) ISSN 33-365 (Print), ISSN 848-6339 (Online) DOI:.7559/TV-2492894527 THE

More information

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Valentina Volmut Ortogonalni polinomi Diplomski rad Osijek, 2016. Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

More information

L3: Review of linear algebra and MATLAB

L3: Review of linear algebra and MATLAB L3: Review of linear algebra and MATLAB Vector and matrix notation Vectors Matrices Vector spaces Linear transformations Eigenvalues and eigenvectors MATLAB primer CSCE 666 Pattern Analysis Ricardo Gutierrez-Osuna

More information

Napredni standard enkripcije (AES)

Napredni standard enkripcije (AES) UNIVERZITET CRNE GORE Prirodno-matematički fakultet Podgorica Dušan Radoičić Napredni standard enkripcije (AES) Specijalistički rad Podgorica, 2013. UNIVERZITET CRNE GORE Prirodno-matematički fakultet

More information

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu KOTROI SKOPOVI ZA RASVJETU I KIMA UREĐAJE Kontrolni i s vremenskom odgodom za rasvjetu i klimu Modularni dizajn, slobodna izmjena konfiguracije Sigurno. iski napon V Efikasno čuvanje energije Sigurnost.

More information

O aksiomu izbora, cipelama i čarapama

O aksiomu izbora, cipelama i čarapama O aksiomu izbora, cipelama i čarapama Aksiom izbora može se izreći u raznim ekvivalentnim formama. Dokazi ekvivalencije aksioma izbora npr. sa Zornovom lemom, ili pak sa Zermelovim teoremom o dobrom uredaju,

More information

Neke klase maksimalnih hiperklonova

Neke klase maksimalnih hiperklonova UNIVERZITET U NOVOM SDU PRIRODNO-MTEMTIČKI FKULTET DERRTMN Z MTEMTIKU I INFORMTIKU Jelena Čolić Neke klase maksimalnih hiperklonova - završni rad - MENTOR: Prof. dr Rozalija Madaras-Siladi Novi Sad, 2012.

More information

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS http://doi.org/10.24867/jpe-2018-02-055 JPE (2018) Vol.21 (2) Choudhary, M., Narang, R., Khanna, P. Original Scientific Paper MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING

More information

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike Tibor Pejić Sortiranje u linearnom vremenu Diplomski rad Osijek, 2011. Sveučilište J.

More information

The existence theorem for the solution of a nonlinear least squares problem

The existence theorem for the solution of a nonlinear least squares problem 61 The existence theorem for the solution of a nonlinear least squares problem Dragan Jukić Abstract. In this paper we prove a theorem which gives necessary and sufficient conditions which guarantee the

More information

Metoda parcijalnih najmanjih kvadrata: Regresijski model

Metoda parcijalnih najmanjih kvadrata: Regresijski model Sveučilište u Zagrebu Prirodoslovno-matematički fakultet Matematički odsjek Tamara Sente Metoda parcijalnih najmanjih kvadrata: Regresijski model Diplomski rad Voditelj rada: Izv.prof.dr.sc. Miljenko Huzak

More information

PRIMJENA USMJERENIH HIPERGRAFOVA ZA PREDSTAVLJANJE FUNKCIONALNIH ZAVISNOSTI U RELACIONIM MODELIMA

PRIMJENA USMJERENIH HIPERGRAFOVA ZA PREDSTAVLJANJE FUNKCIONALNIH ZAVISNOSTI U RELACIONIM MODELIMA MAT-KOL (Banja Luka) ISSN 0354-6969 (p), ISSN 1986-5228 (o) Vol. XXII (1)(2016), 61-69 www.imvibl.org/dmbl/dmbl.htm PRIMJENA USMJERENIH HIPERGRAFOVA ZA PREDSTAVLJANJE FUNKCIONALNIH ZAVISNOSTI U RELACIONIM

More information

PRIMJENA METODE PCA NAD SKUPOM SLIKA ZNAKOVA

PRIMJENA METODE PCA NAD SKUPOM SLIKA ZNAKOVA SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br. 81 PRIMJENA METODE PCA NAD SKUPOM SLIKA ZNAKOVA Ivana Sučić Zagreb, srpanj 009 Sadržaj 1. Uvod... 1. Normalizacija slika znakova....1.

More information

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING Slota Ján, Jurčišin Miroslav Department of Technologies and Materials, Faculty of Mechanical Engineering, Technical University of

More information

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Preddiplomski sveučilišni studij matematike. Završni rad. Tema : Vedska matematika

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Preddiplomski sveučilišni studij matematike. Završni rad. Tema : Vedska matematika Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Preddiplomski sveučilišni studij matematike Završni rad Tema : Vedska matematika Student : Vedrana Babić Broj indeksa: 919 Osijek, 2016. 1 Sveučilište

More information

MATEMATIČKI ALATI ZA REDUKCIJU DIMENZIONALNOSTI SIGNALA

MATEMATIČKI ALATI ZA REDUKCIJU DIMENZIONALNOSTI SIGNALA UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU Srd an Lazendić MATEMATIČKI ALATI ZA REDUKCIJU DIMENZIONALNOSTI SIGNALA - master rad - Mentor: dr Sanja Konjik

More information

Fibonaccijev brojevni sustav

Fibonaccijev brojevni sustav Fibonaccijev brojevni sustav Ljerka Jukić asistentica Odjela za matematiku Sveučilišta u Osijeku, ljukic@mathos.hr Helena Velić studentica Odjela za matematiku Sveučilišta u Osijeku, hvelic@mathos.hr Sažetak

More information

ALGORITMI. Pojam algoritma Blok dijagram

ALGORITMI. Pojam algoritma Blok dijagram ALGORITMI Pojam algoritma Blok dijagram UVOD U ALGORITME Sadržaj Pojam algoritma Primjeri algoritama Osnovna svojstva algoritama Pojam algoritma Što je algoritam? Grubo rečeno: Algoritam = metoda, postupak,

More information

REVIEW OF GAMMA FUNCTIONS IN ACCUMULATED FATIGUE DAMAGE ASSESSMENT OF SHIP STRUCTURES

REVIEW OF GAMMA FUNCTIONS IN ACCUMULATED FATIGUE DAMAGE ASSESSMENT OF SHIP STRUCTURES Joško PAUNOV, Faculty of Mechanical Engineering and Naval Architecture, University of Zagreb, Ivana Lučića 5, H-10000 Zagreb, Croatia, jparunov@fsb.hr Maro ĆOAK, Faculty of Mechanical Engineering and Naval

More information

January 18, 2008 Steve Gu. Reference: Eta Kappa Nu, UCLA Iota Gamma Chapter, Introduction to MATLAB,

January 18, 2008 Steve Gu. Reference: Eta Kappa Nu, UCLA Iota Gamma Chapter, Introduction to MATLAB, Introduction to MATLAB January 18, 2008 Steve Gu Reference: Eta Kappa Nu, UCLA Iota Gamma Chapter, Introduction to MATLAB, Part I: Basics MATLAB Environment Getting Help Variables Vectors, Matrices, and

More information

Teorem o reziduumima i primjene. Završni rad

Teorem o reziduumima i primjene. Završni rad Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Matej Petrinović Teorem o reziduumima i primjene Završni rad Osijek, 207. Sveučilište J. J. Strossmayera

More information

4 Funkcije. 4.1 Definicija funkcije

4 Funkcije. 4.1 Definicija funkcije Definicija funkcije Poziv funkcije Funkcijski parametri Pozicijski parametri Slijedni parametri Imenovani parametri Funkcija je objekt Funkcijski prostor imena Ugnjež dene funkcije Rekurzivne funkcije

More information

THE USE OF SCRIPT IN THE SOFTWARE GEMCOM ***

THE USE OF SCRIPT IN THE SOFTWARE GEMCOM *** MINING AND METALLURGY INSTITUTE BOR UDK: 622 ISSN: 2334-8836 (Štampano izdanje) ISSN: 2406-1395 (Online) UDK: 681.51:551:517.1(045)=111 doi:10.5937/mmeb1504053v Abstract Zoran Vaduvesković *, Daniel Kržanović

More information

ALGORITAM FAKTORIZACIJE GNFS

ALGORITAM FAKTORIZACIJE GNFS SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ALGORITAM FAKTORIZACIJE GNFS Ivan Fratrić Seminar iz predmeta Sigurnost računalnih sustava ZAGREB, Sažetak Faktorizacija brojeva jedan je od

More information

FTN Novi Sad Katedra za motore i vozila. Drumska vozila Uputstvo za izradu vučnog proračuna motornog vozila. 1. Ulazni podaci IZVOR:

FTN Novi Sad Katedra za motore i vozila. Drumska vozila Uputstvo za izradu vučnog proračuna motornog vozila. 1. Ulazni podaci IZVOR: 1. Ulazni podaci IZVOR: WWW.CARTODAY.COM 1. Ulazni podaci Masa / težina vozila Osovinske reakcije Raspodela težine napred / nazad Dimenzije pneumatika Čeona površina Koeficijent otpora vazduha Brzinska

More information

Položaj nultočaka polinoma

Položaj nultočaka polinoma Osječki matematički list 4 (204), 05-6 Položaj nultočaka polinoma Mandalena Pranjić Rajna Rajić Sažetak Prema Rolleovom teoremu, bilo koji segment čiji su krajevi međusobno različite realne nultočke polinoma

More information

Konstekstno slobodne gramatike

Konstekstno slobodne gramatike Konstekstno slobodne gramatike Vežbe 07 - PPJ Nemanja Mićović nemanja_micovic@matfbgacrs Matematički fakultet, Univerzitet u Beogradu 4 decembar 2017 Sadržaj Konstekstno slobodne gramatike Rečenična forma

More information

O dvjema metodama integriranja nekih iracionalnih funkcija

O dvjema metodama integriranja nekih iracionalnih funkcija ACTA MATHEMATICA SPALATENSIA Series didactica O dvjema metodama integriranja nekih iracionalnih funkcija Denis Benčec, Bojan Kovačić Sažetak U nastavi matematičkih predmeta na veleučilištima, samostalnim

More information

AKSIOME TEORIJE SKUPOVA

AKSIOME TEORIJE SKUPOVA MAT-KOL (Banja Luka) ISSN 0354/6969 XV(1)(2009), 17-25 AKSIOME TEORIJE SKUPOVA Duško Bogdanić 1, Bojan Nikolić 2 i Daniel A. Romano 2 Sažetak: Postoji više od jedne mogućnosti aksiomatizacije teorije skupova.

More information