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

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

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

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

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

Mathcad sa algoritmima

TEORIJA SKUPOVA Zadaci

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

Metode izračunavanja determinanti matrica n-tog reda

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

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

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

Projektovanje paralelnih algoritama II

Matrice u Maple-u. Upisivanje matrica

3. Programiranje u Matlab-u

Uvod u relacione baze podataka

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

Hornerov algoritam i primjene

Kratak kurs MatLab-a

PREDAVANJA. Igor Vujović. Split, 2016.

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

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

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

Vedska matematika. Marija Miloloža

Karakteri konačnih Abelovih grupa

Matrične dekompozicije i primjene

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

Fibonaccijev brojevni sustav

ALGORITAM FAKTORIZACIJE GNFS

NIZOVI I REDOVI FUNKCIJA

Quasi-Newtonove metode

Nilpotentni operatori i matrice

MATLAB matrični laboratorij Interaktivni alat (kalkulator), programski jezik, grafički procesor

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1

MATLAB for Windows PODGORICA, DECEMBAR 1996.

pretraživanje teksta Knuth-Morris-Pratt algoritam

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

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

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28.

Funkcijske jednadºbe

Ariana Trstenjak Kvadratne forme

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

Red veze za benzen. Slika 1.

Metoda parcijalnih najmanjih kvadrata: Regresijski model

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

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin

L A T E X 1. predavanje

UPUTE ZA OBLIKOVANJE DIPLOMSKOG RADA

Mirela Nogolica Norme Završni rad

Pitagorine trojke. Uvod

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

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

PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK BINARNI POLINOMI. Diplomski rad. Voditelj rada: doc. dr. sc. Goranka Nogo. Zagreb, 2017.

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku DIOFANTSKE JEDNADŽBE

DES I AES. Ivan Nad PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: doc.dr.sc.

Maja Antolović Algoritmi u teoriji brojeva

Zanimljive rekurzije

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

Algoritam za odre divanje ukupnog poravnanja dva grafa poravnanja parcijalnog ure daja

Prsten cijelih brojeva

HRVATSKA MATEMATIČKA OLIMPIJADA

O aksiomu izbora, cipelama i čarapama

Teorem o reziduumima i primjene. Završni rad

Iterativne metode za rješavanje linearnih sustava

MATLAB for Chemical Engineering

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

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

KRITERIJI KOMPLEKSNOSTI ZA K-MEANS ALGORITAM

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

Linearni operatori u ravnini

Metode praćenja planova

SINTAKSNA I ALGORITAMSKA NOTACIJA

Introduction to MATLAB

Pellova jednadžba. Pell s equation

Neprekidan slučajan vektor

Nelder Meadova metoda: lokalna metoda direktne bezuvjetne optimizacije

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

ARITMETIČKO LOGIČKA JEDINICA ( ALU ) Davor Bogdanović SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET. Sveučilišni studij

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

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting

ALGORITMI PODIJELI PA VLADAJ

PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Marina Zrno KOMUTATIVNI PRSTENI. Diplomski rad. Voditelj rada: prof.dr.sc.

Položaj nultočaka polinoma

4 Funkcije. 4.1 Definicija funkcije

NAPREDNI FIZIČKI PRAKTIKUM II studij Geofizika POLARIZACIJA SVJETLOSTI

Procjena funkcije gustoće

TOPIC 2 Computer application for manipulating matrix using MATLAB

Optimizacija Niza Čerenkovljevih teleskopa (CTA) pomoću Monte Carlo simulacija

Pogled u povijest razvoja algoritama

Matea Ugrica. Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike i računarstva

ELIPTIČKE KRIVULJE I KRIPTIRANJE. Zdravko Musulin PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad

Sveučilište J.J.Strossmayera u Osijeku Odjel za matematiku. Sveučilišni preddiplomski studij matematike

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

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

Konformno preslikavanje i Möbiusova transformacija. Završni rad

Linearno programiranje i primjene

Turingovi strojevi Opis Turingovog stroja Odluµcivost logike prvog reda. Lipanj Odluµcivost i izraµcunljivost

Krivulja središta i krivulja fokusa u pramenu konika. konika zadanom pomoću dviju dvostrukih točaka u izotropnoj ravnini

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike. Ivana Oreški REKURZIJE.

Uvod u numericku matematiku

Pojam funkcije u nastavi matematike nekad i danas

Transcription:

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 numeričkih izračuna. Omogućava nam jednostavan rad s matricama, crtanje funkcija i podataka, implementaciju algoritama i povezivanje s programima pisanim u drugim jezicima. Prvu verziju razvio je 1970. godine Cleve Moler, šef katedre za informatiku na University of New Mexico. Danas je Matlab komercijalni proizvod tvrtke Mathworks i ima više od milion korisnika. Pokretanje Na Windows sistemima Matlab pokrećemo dvostrukim klikom na Matlab ikonu na desktopu ili biranjem Matlab-a u Start izborniku. Daljnje naredbe se ukucavaju u komandnoj liniji označenoj sa >>. Odabirom izbornika File/Preferences možete promijeniti default postavke Matlab-a (font, boju,...). Help/Pomoć Ukoliko vam je potrebna pomoć tokom rada, pozivom help help dobit ćete detaljan opis help funkcije. Ako vam je potrebna pomoć za neko točno određeno poglavlje, npr.general, unesete u komandnu liniju help general. S obzirom na veliki obim ispisanih informacija, ukoliko želite da one budu prikazane jedna po jedna, prvo morate unijeti naredbu more on, pa tek onda help general. Nakon toga, biranjem bilo koje tipke, na ekranu dobivate idući slijed informacija. Naredbom helpwin ili helpdesk otvara se interaktivni help prozor. Drugi način pozivanja help prozora je biranjem izbornika Help/MATLAB Help. 1. Sintaksa, konstante, varijable Brojevi Matlab razlikuje nekoliko različitih vrsta brojeva: Cjelobrojni npr. 674, -674 Realni 1.234 Kompleksni 3+3i te posebni ili specijalni brojevi: Inf - beskonačno (npr. rezultat koji dobijemo kad broj dijelimo s 0) NaN Not a number (npr. rezultat kod 0/0) 1

eps strojni epsilon, ocjena greške zaokruživanja realmin - vrijednost najmanjeg realnog broja realmax - vrijednost najvećeg realnog broja i imaginarna jedinica (j također ima vrijedost imaginarne jedinice) pi - π ans - automatski poprima vrijednost izraza kad izraz nije pridružen varijabli ( o tome više u poglavlju Varijable) Formati Korisnik sam bira u kojem formatu će Matlab prikazati brojeve. To utječe isključivo na prikaz broja a ne i na način na koji su izračuni izvršeni i pohranjeni (sve kalkulacije Matlab izvodi koristeći dvostruku preciznost double precision način zapisa). Npr. pogledajmo kvocijent 4/3 prikazan u različitim formatima: format short 1.3333 format short e 1.3333e+000 format long 1.33333333333333 format long e 1.333333333333333e+000 format rational 4/3 format bank 1.33 Eksponencijalni zapis (formati koji koriste 'e' u zapisu) je uglavnom korišten za prikaz vrlo velikih, odnosno vrlo malih brojeva: -1.34567e+04=-13456.7-1.34567e-01=-0.134567 Naredba format compact briše prazne linije, dozvoljavajući tako prikaz više informacija na ispisu. Ukoliko prazne linije želimo vratiti nazad, to radimo naredbom format loose. Aritmetičke operacije Pogledajmo kako Matlab koristimo kao kalkulator. Aritmetička operacija Zbrajanje oduzimanje množenje dijeljenje potenciranje Simbol + - * / ili \ ^ 2

MATLAB ima dvije operacije dijeljenja / - desno dijeljenje i \ - lijevo dijeljenje. One ne daju isti rezultat: >>47/3 15.6667 >>47\3 0.0638 Primjetite da je rezultat od 47\3 jednak onom od 3/47. Matlab vodi računa o prioritetima računskih operacija. Prema tome, prvo izračunava vrijednosti u zagradama, zatim potenciranje, nakon toga operacije * i / (počevši s lijeva na desno) i na kraju operacije + i (s lijeva na desno). Npr: >>1+5/4*3 >> 4.7500 Matlab je prvo izračunao vrijednost izraza 5/4, to pomnožio s 3 i na kraju tu vrijednost dodao 1+ 5 jedinici. Međutim ako je ono što ste htjeli izračunati vrijednost izraza onda morate 4 *3 koristiti zagrade: >>(1+5)/(4*3) >> 0.5000 Da bi uvidjeli važnost pravilne uporabe zagrada, pogledajte idući primjer: Matematički izraz Matlabov zapis Vrijednost 8 4 + + 2 2 4 + 8 + 2 2 4 + 8 2 + 2 8 4 + 2 + 2 4 + 8/ 2 + 2 ( 4 + 8) / 2 + 2 ( 4 + 8) /( 2 + 2) ( 2 2) 4 + 8/ + 10 8 3 6 3

Logički i relacijski operatori Operator jednako nije jednako manje, manje ili jednako veće,veće ili jednako i ili ne Simbol == ~= <,<= >, >= & ~ Primjer upotrebe: >> 5<13 1 >> 5>13 0 Unošenje izraza 5<13 Matlab tretira kao logički upit, odnosno tvrdnju 5 je manje od 13?. I odgovara ans=1, što označava logičku istinu. U drugom slučaju Matlab odgovara sa 0, što označava negativan odgovor, odnosno logičku neistinu. Izraze možemo i kombinirati: >> x=7; >> x > 3 x == -3 1 Varijable >> 3-2^4-13 >> ans*5-65 Rezultat prve kalkulacije Matlab označava kao ans i koristi ga u drugoj kalkulaciji gdje je njegova vrijednost promijenjena i sad iznosi -65. Prema tome, ans je redefinirana varijabla u koju Matlab smješta trenutnu vrijednost izračuna ukoliko korisnik ne specificira drukčije. Za pohranjivanje vrijednosti preporučljivo je definirati vlastite varijable. 4

Ime varijable može se sastojati od bilo koje kombinacije slova i znamenaka počevši sa slovom. Znakovi nisu dozvoljeni, dok korištenje specijalnih/rezerviranih imena kao što su eps, pi, Inf nije preporučljivo. >> x = 3-2^4 x = -13 >> y = x*5 y = -65 Sada x ima vrijednost -13, a y -65 i oni mogu biti korišteni u narednim računima. Ukratko, da bi varijablu mogli koristiti na desnoj strani nekog izraza, prethodno joj moramo pridodati neku vrijednost. Ukoliko ne želimo na zaslonu vidjeti rezultate međuoperacija, izraz završimo s ; (točka-zarez): >> x=-13; >>y = 5*x y = -65 Pored toga ; služi za razdvajanje više naredbi u jednom redu. Ukoliko nam je naredba predugačka za jedan red dodavanjem na kraju tog reda... ista se nastavlja u sljedećem redu. Naredba who (whos) daje listu svih korištenih varijabli. Naredba clear <ime_varijable> briše navedenu varijablu iz tekućeg radnog prostora, a clear all briše vrijednost svih varijabli. clc briše/čisti komandni prozor i postavlja kursor na vrh prozora Naredba % je korištena za komentare i Matlab ignorira cijelu liniju što slijedi nakon tog znaka. Ukoliko želite prekinuti Matlab u izvršenju neke naredbe (naprimjer zbog beskonačne petlje u pogrešno napisanom m-file-u) to radite istovremenim pritiskom na ctrl+c. Ovaj način nije preporučljiv, ali je u nekim situacijama neophodan. Matlab nam omogućava jednostavno (ponovno) pozivanje jednom unešenih naredbi. Opetovanim korištenjem tipki (odnosno ) prikazivat će nam se prethodno unošene naredbe i ukoliko neku od njih želimo ponovo izvršiti (po potrebi je možemo i izmijeniti) samo pritisnemo tipku enter. Unošenjem npr. naredbe p, ponovo će biti pozvana naredba koja počinje slovom p a posljednja je izvršena. 5

2. Matrice, unos matrica, operacije s matricama, determinante Osnovni objekt u Matlabu je matrica, kao što i samo ime kaže (MATrix LABoratory). Matrica m n je pravokutna tabela brojeva koje se sastoji od m redaka i n stupaca. U matematici matrice obično prikazujemo u okruglim ili uglatim zagradama. Matlab čak i skalare tretira kao matrice (tipa 1 1). Da bi u Matlab unijeli matricu, potrebno je: - koristiti uglate zagrade [] - elemente retka razvojiti zarezima, ili praznim mjestom - retke razdvojiti točka zarezom ; ili preći u novi red (tipka enter) Matrice Na primjer za m = 2; n = 3 imamo matricu tipa 2 3 kao što je naredna A =[5 7 9 1-3 -7] Da bismo unijeli tu matricu u Matlab, tipkamo red po red. >> A = [5 7 9 1-3 -7] A = 5 7 9 1-3 -7 Redovi mogu biti odvojeni i točka zarezom a elemente možemo razdvojiti i zarezom: >> B = [-1 2 5; 9 0 5] B = -1 2 5 9 0 5 >> C = [0, 1; 3, -2; 4, 2] C = 0 1 3-2 4 2 Dvotočka : (engl. colon) vrlo je koristan znak u MATLAB-u. Evo samo nekih primjera njenog korištenja: Ako npr. drugi redak prije definirane matrice A želimo pospremiti u matricu D, koristimo naredbu D=A(2,:) >> D=A(2,:) D = 2 4 6 6

Slično, treći stupac matrice A dat će nam naredba E=A(:,3) >>E=A(:,3) E = -1 6 Pogledajte što dobijemo idućom naredbom: >> E=A(2,2:3) E = -3-7 Vektori Vektor (redak i stupac) su poseban slučaj matrice, kod njih je jedna od dimenzija jednaka 1. Broj članova vektora još se naziva duljina (length) vektora a članovi se još nazivaju elementi ili komponente vektora. Razmotrimo prvo rad s vektorom retkom: To je lista brojeva odvojenih ili zarezima ili praznim mjestom. Elementi moraju biti prikazani u uglatim zagradama: >> v = [ 1 3, sqrt(5)] v = 1.0000 3.0000 2.2361 >> length(v) 3 Pravilno korištenje praznog mjesta je od presudne važnosti. Pogledajmo idući primjer: >> v2 = [3+ 4 5] v2 = 7 5 >> v3 = [3 +4 5] v3 = 3 4 5 S vektorima jednake duljine možemo izvoditi neke aritmetičke operacije. Takvi su naprimjer prethodno spomenuti vektori v i v3.. >> v + v3 4.0000 7.0000 7.2361 7

>> v4 = 3*v v4 = 3.0000 9.0000 6.7082 >> v5 = 2*v -3*v3 v5 = -7.0000-6.0000-10.5279 >> v + v2??? Error using ==> + Matrix dimensions must agree. Ova poruka upozorava nas da matrice nisu jednakih dimenzija. Vektor stupac konstruiramo na sličan način. Elemente razdvajamo znakom ; ili prelaskom u novi red. >> c = [ 1; 3; sqrt(5)] c = 1.0000 3.0000 2.2361 Postoji brzi način za generiranje nekih retčanih vektora: >> 1:4 1 2 3 4 >> 3:7 3 4 5 6 7 Općenita sintaks je a : b : c i time je generiran vektor čiji prvi element ima vrijednost a, a ostali elementi se dobiju uvećavanjem a za vrijednost b sve dok je ta suma manja od c. >> 0.32:0.1:0.6 0.3200 0.4200 0.5200 >> H=10:2:3 H = Empty matrix: 1-by-0 Prethodna naredba kao rezultat daje praznu matricu jer je početni element veći od završnog, a korak uvećavanja pozitivan. 8

Matrične funkcije ugrađene u Matlab Funkcija Argumenti Što radi zeros(m,n) m, n su prirodni brojevi Generira nul-matricu od m redaka i n stupaca. eye(n) n je prirodni broj Generira jediničnu matricu reda n. diag(x) X je jednoredna ili jednostupčana matrica Generira dijagonalnu matricu čiji su elementi redom elementi od X. rank(a) A je proizvoljna matrica Računa rang matrice A. size(a) A je proizvoljna matrica Ispisuje broj redaka i stupaca matrice A. size(a,1) A je proizvoljna matrica Ispisuje broj redaka matrice A. size(a,2) A je proizvoljna matrica Ispisuje broj stupaca matrice A. sum(a) A je proizvoljna matrica Ako je A jednoredna ili jednostupčana, zbraja sve elemente od A, a ako nije, zbraja ih po stupcima. prod(a) A je proizvoljna matrica Ako je A jednoredna ili jednostupčana, množi sve elemente od A, a ako nije, množi ih po stupcima. det(a) A je kvadratna matrica Računa determinantu matrice A. inv(a) A je kvadratna matrica Računa inverznu matricu matrice A. Pogledajmo primjere korištenja nekih od navedenih funkcija: >> A = [5 7 9; 1-3 -7]; >> size(a) 2 3 >> A' 5 1 7-3 9-7 Dijagonalnu matricu umjesto unošenja svih elemenata možemo generirati i na idući način: >> d = [-3 4 2]; D = diag(d) D = -3 0 0 0 4 0 0 0 2 U slučaju da funkciju diag primjenimo na matricu, dobit ćemo njene dijagonalne elemente: >> diag(a) 5-3 9

Funkcija sum zbraja elemente po stupcima >> sum(a) 6 4 2 U idućem slučaju, dvostrukom primjenom funkcije sum dobivamo sumu svih elemenata matrice (pogledajte još jednom definiciju funkcije sum): >> sum(sum(a)) 12 Aritmetičke operacije s matricama Operacija Znak Napomena Zbrajanje matrica + Matrice moraju biti istih dimenzija. Oduzimanje matrica - Matrice moraju biti istih dimenzija. Množenje matrice brojem * Množenje matrice matricom * Matrice moraju biti ulančene. Desno dijeljenje matrica / Matricu ne možemo dijeliti matricom! Lijevo dijeljenje matrica \ Potenciranje matrice ^ Matrica mora biti kvadratna. Transponiranje matrice Množenje elemenata dviju matrica član po član.* Matrice moraju biti istih dimenzija. S lijeve ili desne strane znaka može Desno dijeljenje elemenata dviju matrica član po član Lijevo dijeljenje elemenata dviju matrica član po član Potenciranje elemenata dviju matrica član po član biti i broj../ Matrice moraju biti istih dimenzija. S lijeve ili desne strane znaka može biti i broj..\ Matrice moraju biti istih dimenzija. S lijeve ili desne strane znaka može biti i broj..^ Matrice moraju biti istih dimenzija. S lijeve ili desne strane znaka može biti i broj. Posebno obratite pažnju na operacije koje počinju točkom. Zovemo ih operacije po pozicijama. One uglavnom nemaju matematički ekvivalent osim u nekim posebnim slučajevima. Pojasnit ćemo pobliže neke od navedenih operacija, odnosno ukoliko je moguće, naći ćemo njihove matematičke ekvivalente: 10

1. množenje, dijeljene i potenciranje vektora Uzmimo dva vektora u i v jednake duljine n. Neka je u retčani a v stupčani vektor. Skalarni produkt vektora definira se kao skalar dobiven na sljedeći način: n uv = i= 1 u i v i 4 Neka je u=[1 2 3] a v= 5. Pogledajmo čemu je jednako uv: 6 uv = 1 4 + 2 5 + 3 6 = 4 + 10 + 18 = 32 U Matlabu to možemo izračunati ovako: >> x=[1 2 3]; y=[4; 5; 6]; >> x*y 32 Gore definirane vektore mogli bismo pomnožiti i ovako: [ u v u v u v ] u v = 1 1 2 2 3 3 u n v n Rezultat je vektor jednake duljine kao i vektori u i v, i dobiven je množenjem odgovarajućih elemenata dvaju vektora. Odgovarajući operator u Matlabu je.* a za vektore iz prethodnog izračuna, odgovarajući umnožak dobili bi transponirajući jedan od vektora, kako bi dobili vektore istog tipa (za dimenzije znamo da su jednake): >> x.*y' 4 10 18 >> x'.*y 4 10 18 Što se tiče dijeljenja dvaju vektora, ne postoji matematički ekvivalent te operacije. Međutim, u Matlabu je za vektore iste duljine i istog tipa operacijom./ definirano dijeljenje odgovarajućih elemenata. Pobliže: [ u / v u / v ] u./ v = 1 1 2 2 u n / v n 11

Odnosno za vektore x i y: >> x./y' 0.2500 0.4000 0.5000 Ukoliko želimo kvadrirati elemente vektora u, to možemo napraviti na dva načina, ili kao u.*u ili jednostavnije u.^2 >> x.*x 1 4 9 >> x.^2 1 4 9 U kombinaciji s drugim operandima potenciranje, naravno ima prednost: >> z=y'; >> z.*x.^2 4 20 54 2. množenje matrica Da bi dvije matrice mogli pomnožiti, one moraju biti ulančane, odnosno ako je matrica A tipa m n onda matrica B mora biti tipa n p (broj stupaca matrice A mora odgovarati broju redaka matrice B). Na taj način, operand * vrši standardno množenje matrica. >> A=[1 2 3; 4 5 6]; >> B=[1 2; 3 4; 5 6]; >> A*B 22 28 49 64 >> B*A 9 12 15 19 26 33 29 40 51 U ovom slučaju bilo je moguće izvršiti i operaciju B*A jer su matrice B i A ulančane. Primjetite da je A*B B*A. Operandom.* definirano je množenje po pozicijama i matrice moraju biti istog tipa. 12

>> C=B'; >> size(a) 2 3 >> size(c) 2 3 Vidimo da su matrice A i C istog tipa, stoga: >> A.*C 1 6 15 8 20 36 Pogledajmo naredni primjer: >>a=rand(3) >>a = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 Naredbom rand(3) generirana je matrica tipa 3 3 sastavljena od slučajnih brojeva. >> m=max(a) m = 0.9501 0.8913 0.8214 Naredbom max dobili smo vektor koji sadrži maksimalne vrijednosti stupaca matrice a. Ukoliko na vektor m primijenimo narebu max, dobit ćemo maksimalni element vektora. >>max(m) 0.9501 Ukoliko nas interesira pozicija maksimalnog elementa, to dobivamo sa: >> [v,ind]=max(m) v = 0.9501 ind = 1 13

Ponekad je praktično veliku matricu generirati uz pomoć prethodno definiranih manjih matrica: >> D=[1 2; 3 4; 5 6]; X=[7; 8; 9]; >> E=[D X] E = 1 2 7 3 4 8 5 6 9 Na ovaj način matrica X dodana je pored matrice D, a u idućem primjeru matrice su postavljene jedna iznad druge : >> Y=[10 11]; >> F=[D; Y] F = 1 2 3 4 5 6 10 11 Sada ćemo pokazati kako generirati tablicu koja će nam služiti za usporedbu vrijednosti dviju funkcija za određeni raspon vrijednosti argumenta: >>x = (0:0.1:0.5)'; [x 4*sin(3*x) 3*sin(4*x)] 0 0 0 0.1000 1.1821 1.1683 0.2000 2.2586 2.1521 0.3000 3.1333 2.7961 0.4000 3.7282 2.9987 0.5000 3.9900 2.7279 3. Definirane funkcije, funkcijski m-file Zajedničko obilježje svih funkcija je da se argument uvijek piše u zagradi. Tabela nekih matematičkih funkcija definiranih u Matlabu: Ime Značenje Poziv Rezultat Sin Sinus sin(3*pi) 3.6738e-016 Cos Kosinus cos(2*pi/3) -0.5000 14

Tan Tangens tan(pi/4) 1.0000 Asin arkus sinus asin(1) 1.5708 Acos arkus kosinus acos(1) 0 Atan arkus tangens atan(1) 0.7854 Sinh hiperbolni sinus sinh(0) 0 Cosh hiperbolni kosinus cosh(0) 1 Tanh hiperbolni tangens tanh(-3) -0.9951 asinh area sinus hiperbolni asinh(1) 0.8814 acosh area kosinus hiperbolni acosh(1) 0 atanh area tangens hiperbolni atanh(-0.9951) -3.0046 Sqrt kvadratni (drugi) korijen sqrt(2) 1.4142 Exp eksponencijalna funkcija (baza e) exp(1) 2.7183 Log logaritamska funkcija (baza e) log(1) log10 logaritamska funkcija (baza 10) log10(0) Abs apsolutna vrijednost (modul) abs(3-4*i) 5 Real realni dio kompleksnog broja real(-3+2*i) -3 0 Warning: Log of zero -Inf Imag imaginarni dio kompleksnog broja imag(-3+2*i) 2 Conj kompleksno konjugiranje conj(-3+2*i) -3.0000-2.0000i Round zaokruživanje broja na najbliži cijeli broj round(2.3) 2 round(3.5) 4 15

Trigonometrijske funkcije One poznate Matlab-u su sin,cos, tan i njihov argument mora biti u radijanima. >> x = 5*cos(pi/6), y = 5*sin(pi/6) x = 4.3301 y = 2.5000 U idućem primjeru pogledajte pogrešnu a zatim i ispravnu upotrebu funkcije sinus: >> sin 1-0.9538 >> sin(1) 0.8415 Matlab nam na upit sin 1 vraća odgovor -0.9538 i ne upozorava nas na pogrešan unos. Funkcije inverzne trigonometrijskim funkcijama su asin, acos, atan i njihov rezultat je izražen u radijanima. >> acos(x/5), asin(y/5) 0.5236 0.5236 >> pi/6 0.5236 Ostale elementarne funkcije ( sqrt, exp, log, log10) >> x = 9; >> sqrt(x),exp(x),log(sqrt(x)),log10(x^2+6) 3 8.1031e+03 1.0986 1.9395 16

exp(x) označava eksponencijalnu funkciju exp(x) = e x i njen inverz je logaritamska funkcija log. >> format long e, exp(log(9)), log(exp(9)) 9.000000000000002e+00 9 >> format short Ovdje vidimo malu grešku zaokruživanja u prvom izračunu. Funkcija log(x) je oznaka za matematičku funkciju ln x, dok log10 izračunava logaritam po bazi 10. Postoji još i funkcija log2 koja označava logaritam po bazi 2. Polinomi U Matlabu polinome prikazujemo pomoću vektora čiji su elementi koeficijenti polinoma 4 3 zapisani u odgovarajućem slijedu, npr. polinom 5x x + 7x + 5 bit će prikazan vektorom [5-1 0 7 5]. Vrijednost polinoma izračunava se koristeći funkciju polyval(). Tako npr. ako želimo izračunati vrijednost prije spomenutog polinoma u x=3, to radimo ovako: >>p=[5-1 0 7 5]; >>val=polyval(p,3) val = 404 Nul-točke, odnosno korijeni polinoma nalaze se korištenjem funkcije roots: >> roots(p) 0.8053 + 1.0129i 0.8053-1.0129i -0.7053 + 0.3160i -0.7053-0.3160i Prethodni polinom očito je imao dva para konjugirano kompleksnih nul-točaka. Ukoliko polinome želite zbrojiti ili oduzeti, morate voditi računa da matrice koje ih reprezentiraju moraju biti istog tipa. U protivnom, zbrajanje, odnosno oduzimanje nije moguće izvršiti i Matlab će vas upozoriti na pogrešku. Recimo da prethodnom polinomu želimo dodati polinom q=2x-3. 17

>>q=[2-3]; >>p+q??? Error using ==> + Matrix dimensions must agree. Međutim, ako polinom q lažno prikažemo polinomom četvrtog stupnja, riješit ćemo problem: >>q1=[0 0 0 2-3] >>p+q1 5-1 0 9 2 Za množenje dva polinoma, koristimo funkciju conv: >>conv(p,q) 10-17 3 14-11 -15 A za dijeljenje, funkciju deconv koja osim rezultata dijeljenja vraća i ostatak: >> [d, R] = deconv(p,q) d = 2.5000 3.2500 4.8750 10.8125 R = 0 0 0 0 37.4375 Petlje/Naredbe kontrole toka Ponekad želimo neku naredbu ili niz naredbi ponoviti određeni broj puta. Ovisno o tome da li unaprijed znamo koliko ćemo puta ponoviti naredbu ili se ponavljanje nastavlja dok god je ispunjen određeni uvjet, koristimo neku od dolje navedenih naredbi: Naredba for Naredba for služi za ponavljanje određene naredbe ili niza naredbi unaprijed zadani broj puta. Sintaksa for petlje: for varijabla=izraz1:izraz2:izraz3 naredbe end varijabla (brojač petlje) poprima vrijednosti od izraz1 do izraz3 s korakom izraz2. (Ako je korak 1, ne moramo ga pisati) 18

Iduća petlja računa vrijednosti funkcije >> for n = 1:6 sin(n*pi/6) end sin nπ za n=1,2,3,4,5,6 : 6 0.5000 0.8660 1 0.8660 0.5000 1.2246e-016 Primjetite da smo iste vrijednosti mogli dobiti i bez korištenja petlje: >> sin([1:6]*pi/6) 0.5000 0.8660 1.0000 0.8660 0.5000 0.0000 Posljednja izračunata vrijednost ( sin π = 0. 0000 ) razlikuje se od one dobivene korištenjem for petlje (1.2246e-016) međutim to je rezultat finesa IEEE aritmetike. Brojač petlje također može biti eksplicitno zadan vektor, npr: >> for counter = [23 11 19 5.4 6]... end Naredba while Ponekad želimo ponavljati niz naredbi dok god je vrijednost nekog logičkog izraza ispunjena, ali ne možemo unaprijed znati koliko će to biti puta. U tom slučaju koristimo while petlju. Naredba while ponavlja određenu naredbu ili niz naredbi dok je ispunjen uvjet iz izraza. Sintaksa while-petlje: while izraz naredbe end Za izlaz iz petlje (for i while) često se koristi naredba break. 19

Primjer: koja je najveća vrijednost n-a za koju je suma 1+2+3+...+n < 100? >> S = 1; n = 1; >> while S+(n+1)<100 n=n+1; S=S+n; end >> [S, n] 91 13 Naredba if...then...else...end Omogućava nam izvršavanje različitih komandi ovisno o istinitosti logičkog testa. if izraz naredbe end osnovni oblik naredbe if prošireni oblik naredbe if if izraz naredbe else naredbe end Funkcijski m-file Da bismo pojednostavnili pisanje nizova naredbi koji se ponavljaju i kreirali nove funkcije, koristimo m fileove. Kreiranje m-file-a: U Matlabovom glavnom izborniku biramo File New M-file ili kliknemo na ikonu New M- File na alatnoj traci. Otvorit će se editor u kojem unosimo naredbe našeg file-a. Kada smo gotovi, file treba spremiti. U editoru kliknemo na ikonicu Save, ili u izborniku File biramo opciju Save/Save As. 1. Promijenimo direktorij u C:\WORK (provjeriti u dokumentaciji koji direktorij Matlab automatski pronalazi). 2. Dodijelimo ime pod kojim će se file (datoteka) pohraniti u memoriju. Novije verzije Matlaba automatski dodaju ekstenziju.m, dok je u starijim verzijama potrebno eksplicitno navesti ekstenziju kada datoteci dodjeljujemo ime. 3. Kliknemo na Save. File pokrećemo/izvršavamo tako da u komandnoj liniji napišemo njegovo ime i znak Enter. Funkcijskim m fileom kreiramo novu funkciju. Ovako kreirana funkcija ravnopravna je funkcijama ugrađenim u MATLAB-u (kao što su npr. sin, log, det, itd.) Na taj način možemo prema našoj volji i potrebama proširiti biblioteku postojećih funkcija. Sintaksa je: 20

function varijabla=ime funkcije(ulazne varijable) naredbe U prvom retku mora biti ime funkcije i varijable kojima operira. Ime funkcijskog m-filea mora biti isto kao i ime funkcije koja se njima definira. Samu funkciju pozivamo kao i svaku drugu funkciju, koristeći njeno ime, zagrade, ulazne i izlazne varijable. Varijable mogu biti i brojevi i matrice. Jasno je da broj i tip varijabli u definiciji i pozivu funkcije moraju biti isti. function [izlazne varijable]=ime funkcije(ulazne varijable) naredbe Funkcija može imati i više izlaznih varijabli. Budite sigurni da ime funkcije nije u sukobu s nekom funkcijom koja već postoji u Matlabu. Primjer: funkcija koja računa površinu trokuta kojem znamo duljine stranica. function [P] = povrsina(a,b,c) % Računa površinu trokuta kom znamo duljine stranica % Ulazni podaci: % a,b,c: Duljine stranica % Rezultat: % P: površina trokuta % Upotreba: % Povrsina = povrsina(2,3,4); % Written by dfg, Oct 14, 1996. s = (a+b+c)/2; P = sqrt(s*(s-a)*(s-b)*(s-c)); %%%%%%%%% end %%%%%%%%%%% Ukoliko u Matlabovom prozoru napišemo >> help povrsina Bit će prikazani komentari iz m-file-a: Računa površinu trokuta kom znamo duljine stranica Ulazni podaci: a,b,c: Duljine stranica Rezultat: P: površina trokuta Upotreba: Povrsina = povrsina(2,3,4); Written by dfg, Oct 14, 1996. Da bi izračunali površinu trokuta kom su duljine stranica 10, 15, 20: >> Povrsina = povrsina(10,15,20) Povrsina = 72.6184 Vidimo da je rezultat izračuna pridružen varijabli Povrsina. 21

4. Graf funkcije Graf elementarnih funkcija Osnovni alat korišten za crtanje u Matlabu je funkcija plot(). Da bi shvatili kako ta funkcija radi, zamislimo da želimo nacrtati liniju koja prolazi kroz točke (1, 4) i (3, 6). Prvo definiramo x vrijednosti kao vektor x=(1,3) (vektor apscisa) i y vrijednosti kao vektor y=(4,6) (vektor ordinata). Zatim nacrtamo točke definirane tim vektorima (to su (1,4) i (3,6) ) i povežemo ih linijom. Odgovarajuće naredbe u Matlabu bile bi: >>x=[1 3] x = 1 3 >>y=[4 6] y = 4 6 >>plot(x,y) Na ekranu se pojavio grafički prozor naziva Figure no.1 sa sljedećim sadržajem: Krenimo sada na složeniji primjer: Pretpostavimo da želimo nacrtati graf funkcije y=sin 3x na intervalu od 0 do 1. To ćemo napraviti na sljedeći način: funkciju ćemo opisati proizvoljnim brojem točaka i onda ćemo te točke povezati ravnim linijama. Prepostavimo da uzmemo N+1 točaka koje su udaljene za h: >> N = 10; h = 1/N; x = 0:h:1; 22

Na taj način dobivamo niz x = 0; h; 2h; ; 1-h; 1. Isto tako smo mogli koristiti naredbu linspace: općeniti oblik naredbe je linspace (a,b,n) koja generira n+1 jednako udaljenih točaka između a i b, uključujući rubove (a,b). Tako smo mogli koristiti komandu: >> x = linspace (0,1,11); Zatim računamo njima odgovarajuće vrijednosti y: >> y = sin(3*pi*x); I konačno, to crtamo sa: >> plot(x,y) Rezultat je vidljiv na gornjoj slici i očito je da je uzeti N premalen. Ako N povećamo na 100, rezultat je puno bolji: >> x = linspace (0,1,100); >> y = sin(3*pi*x); >> plot(x,y) 23

Punu crvenu liniju dobijemo sa: >> plot(x,y,'r-') Treći argument u funkciji plot je string u kojem prvo slovo specificira boju, a drugo stil linije. Opcije za boje i stilove su: Boja Oznaka točaka Oznaka linije y yellow. point : dotted m magenta o circle -. dashdot c cyan x x-mark -- dashed r red + plus - solid g green * star b blue s square w white d diamond k black v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram Jednostavniji način za crtanje grafa funkcije bio bi koristeći naredbu ezplot. ezplot(f) crta izraz f = f(x) na domeni: -2П < x < 2П. ezplot(f,[min,max]) crta f = f(x) na domeni: min < x < max. Ukoliko želimo uvećati neki dio grafa, u izborniku grafičkog prozora biramo Tools/Zoom In. Koristeći miša označimo dio krivulje ili samo kliknemo na dio koji želimo povećati i Matlab će automatski regenerirati crtež povećavajući prethodno mjerilo (raspon vrijednosti na koordinatnim osima će biti promijenjen koristeći faktor 2). Postupak možemo ponoviti željeni broj puta. Isto možemo postići biranjem ikone Zoom In na alatnoj traci grafičkog prozora. Naredba/ikona Zoom Out vraća povećani dio na prethodnu dimenziju. Treći način za uvećavanje prikaza bio bi unošenjem naredbe zoom odnosno zoom off u komandnom prozoru. Ako želimo da graf bude nacrtan u novom prozoru, prije pozivanja plot naredbe, unesemo naredbu figure. Pozivanje naredbe npr. figure (2) otvorit će prozor s oznakom 'Figure 2'. Ukoliko je prozor s tom oznakom već postojao u pozadini, postat će aktivan i u njemu će biti prikazan rezultat iduće plot naredbe. Naredba clf briše sadržaj grafičkog prozora. 24

Dodavanje naslova i oznaka na graf Ukoliko na graf želimo dodati naslov, te oznake osi, koristimo: >> title('graf funkcije sinus') >>xlabel('x-os') >>ylabel('y-os') Ako na graf zelimo dodati mrežu, dodajemo je i isto tako brišemo naredbom grid. Recimo da na istom crtežu želimo usporediti grafove funkcija sljedeći način: sin 4πx i cos 4πx. To radimo na >> x = linspace (0,1,100); >> plot(x, sin(4*pi*x),'r-',x,cos(4*pi*x),'g--'); >> legend('sin krivulja','cos krivulja'); >> title('multi-plot'); >> xlabel('x'), ylabel('y') >> grid Pozivanjem naredbe plot, briše se sadržaj grafičkog prozora prije prikazivanja novog grafa. Ukoliko želimo zadržati sadržaj grafičkog prozora, to postižemo naredbom hold, odnosno hold on. Naredba hold off prekida takvo ponašanje. Komanda subplot(m,n,p) dijeli sadržaj grafičkog prozora na m n područja (m redaka, n stupaca) i bira p-to područje za prikaz grafa. Područja se broje s lijeva na desno, od gore prema dolje, kao kod čitanja teksta. Pogledajmo primjer: >>x = 0 : 0.1 : 2*pi; subplot(2,2,1); plot(x,sin(x)), axis auto subplot(2,2,2); plot(x,sin(x)), axis tight subplot(2,2,3); plot(x,sin(x)), axis tight, axis off subplot(2,2,4); plot(x,sin(x)), axis([0 7-1 1]), grid on 25

(Pogledajte detaljnije naredbu axis koristeći help axis.) 5. Dodatak Čuvanje zapisa Korištenje naredbe diary >>diary mojrad će uzrokovati da sav tekst koji se pojavi nakon toga bude spremljen u datoteku mojrad, kreiran u direktoriju u kojem Matlab radi. Ime datoteke može biti bilo što osim on i off. Zapisivanje se može zaustavit sa diary off Ukoliko želite zatvoriti Matlab te poslije nastaviti s radom: >>save zadnjakalkulacija i Matlab će spremiti sve varijable sa njihovim trenutnim vrijednostima u datoteku zadnjakalkulacija.mat. Kada idući put pokrenemo Matlab, naredbom: >> load zadnjakalkulacija sve varijable korištene u trenutku zatvaranje će dobiti svoje tadašnje vrijednosti. 26

Literatura: 1. David F. Griffiths: An Introduction to Matlab, Version 2.3 The University Dundee, September 2005 http://www.maths.dundee.ac.uk/~ftp/na-reports/matlabnotes.pdf 2. Ivo Baras: Radni materijali za laboratorijske vježbe iz PiNM, Studijski Sveučilišni Centar u Splitu 3. Edward Neuman: Getting started with Matlab, Southern Illinois University at Carbondale http://www.math.siu.edu/matlab/tutorial1.pdf 4. Quick introduction to matlab, PartI and PartII, Department of Mathematics, University of Colorado at Colorado Springs, http://www.uccs.edu/~math/docs/quickintromatlabparti.pdf http://www.uccs.edu/~math/docs/quickintromatlabpartii.pdf 5. Milan Vrdoljak: Uvod u MATLAB, Fakultet strojarstva i brodogradnje, Zagreb http://titan.fsb.hr/~mvrdolja/matlab/ 27