agf matlab skripta 21032013

Upload: stefan-jovanovic

Post on 14-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 AGF Matlab Skripta 21032013

    1/92

    Strana 1

    1. Uvod u MATLAB

    1.1. Uvod

    Postoje dvije klase softverskih paketa za rjeavanje matematikih problema:

    - programi zasnovani na simbolikom rjeavanju i- programi zasnovani na numerikom rjeavanju problema.Tipian predstavnik prve klase programa je Mathematica, a druge MATLAB.MATLAB (MATrix LABoratory) je interpreter i oslanja se na matrini raun kaoosnovu svog rada.

    MATLAB je dostupan u vie verzija, koje su prilagoene razliitim raunarskimplatformamaod PC i Macintosh raunara, preko UNIX radnih stanica do Convex iCray raunara. Predstavlja najee korien paket u svojoj oblasti. VerzijeMATLAB-a za razliite raunarske sisteme se razlikuju donekle samo po korisnikominterfejsusve komande se jednako izvravaju na svim platformama.Ovdje e biti ukratko prikazan MATLAB u verziji za Windows operativne sisteme.

    MATLAB predstavlja moderan i multifunkcionalan programski sistem koji je,

    prvenstveno, namijenjen rjeavanju problema u tehnici. Korisniku se pruamogunost numerike i logike obrade podataka, vizuelnog prikazivanja podataka,kao i kreiranja i izvravanja sopstvenih programa.MATLAB je koncipiran kao proiriv programski paket pored osnovnog paketamogue je nabaviti i dodatne module specijalizovane za rad u oblastima kao to suautomatsko upravljanje (Control System Toolbox), obrada signala (Signal Processing

    Toolbox) ili simulacija neuronskih mrea (Neural Network Toolbox).

    Osnovno okruenje MATLAB-a predstavlja tekstualni prozor u kome se zadajuMATLAB komande. Komande se izvravaju neposredno nakon unosa. Posebansimbol () predstavlja MATLAB prompt. Pored toga, mogue je pisati i programe u

    programskom jeziku koji nudi MATLAB. Sam MATLAB programski jezik je nalik

    drugim proceduralnim jezicima, izuzimajui njegovu prilagoenost radu samatricama.

    Pored osnovnog prozora za unos komandi (MATLAB Command Window), mogueje otvoriti jo neke prozore (npr. za grafiki prikaz podataka).Mogunosti MATLAB-a su predstavljene MATLAB programom koji se pokree

    komandom demo.

    1.2. Osnovni MATLAB

    Osnovna karakteristika MATLAB-a je da nalazi numerika rjeenja razliitih vrstamatematikih problema, od onih najjednostavnijih do izrazito sloenih. Druga bitnakarakteristika MATLAB-a je irok spektar mogunosti za grafiko prikazivanje.MATLAB generie grafike specifine po boji, osvijetljenosti, vrsti linija i tekstualnomsadraju.

  • 7/30/2019 AGF Matlab Skripta 21032013

    2/92

    Strana 2

    1.2.1. Komandni prozor MATLAB-a

    Nakon pokretanja MATLAB-a, pojavljuje se komandni prozor (sl. 1), koji je sada

    aktivni prozor. U njemu je omoguena komunikacija sa MATLAB programskimprevodiocem (engl. interpreter). Program daje znak , kojim oznaava da je spreman

    da prihvati komande od korisnika.

    Sl. 1. Komandni prozor MATLAB-a

    1.3. Uvod u radOsnovni element kojim manipulie MATLAB je pravougaona numerika matrica ijielementi mogu biti i kompleksni brojevi. Specijalni sluajevi pravougaone matrice sumatrice tipa 1x1 koje predstavljaju skalare, dok su vektori matrice sa samo jednom

    vrstom ili kolonom.

    1.3.1. Unoenje podatakaMatrice se u MATLAB mogu unositi na nekoliko naina:

    direktnim unoenjem elemenata, generisanjem pomou funkcija ili izraza ugraenih u MATLAB,

    definisanjem u M datoteci, prenoenjem iz spoljne datoteke sa podacima.

    Kada su u pitanju matrice malih dimenzija, najpogodniji je prvi nain. Elementi jednevrste se upisuju jedan za drugim, meusobno razdvojeni preznim mjestom ilizapetom. Kraj svake vrste matrice oznaava se znakom ; (taka zapeta). Matrica semora ograniiti uglastim zagradama [ ].

    Korienjem strelica i kontrolnih znakova omogueno je korisniku da ponovo

    aktivira, promijeni ili pozove komande koje je prethodno otkucao.

  • 7/30/2019 AGF Matlab Skripta 21032013

    3/92

    Strana 3

    Opisi funkcija tastera ili kombinacija tastera koji omoguavaju ureivanje komandnelinije prikazani su u Tabeli1.

    Tabela 1. Opisi funkcija tastera ili kombinacija tastera koji omoguavaju ureivanjekomandne linije

    Taster, Alternativa Funkcija

    , Ctrl+P Pozivanje prethodne linije, Ctrl+N Pozivanje naredne linije, Ctrl+B Pomjeranje kursora ulijevo za jedan znak, Ctrl+F Pomjeranje kursora udesno za jedan znakCtrl+, Ctrl+L Pomjeranje kursora ulijevo za jednu rijeCtrl+, Ctrl+R Pomjeranje kursora udesno za jednu rijeHome, Ctrl+A Pomjeranje kursora na poetak komandne linijeEnd, Ctrl+E Pomjeranje kursora na kraj komandne linije

    Esc, Ctrl+U Brisanje komandne linijeDel, Ctrl+D Brisanje znaka na mjestu kursora

    Backspace Brisanje znaka lijevo od kursora

    Ctrl+K Brisanje sadraja komandne linije do kraja

    1.3.2. Brisanje sadraja u komandnom prozoruAko je potrebno izbrisati sadraj komandnog prozora, koristi se komanda clc. Tako jeispranjen komandni prostor, a ne radna povrina. Ako se npr. upotrijebi taster ,bievidljiva prethodna komanda.

    1.3.3. Prekid programa

    Pritiskom na kombinaciju tastera Ctrl+C rad programa se prekida.

    1.4. Komanda formatOvom komandom se definie numeriki format za vrijednosti koje se prikazuju naekranu, ali to nema uticaja na registrovanje u memoriji.

    Da bi se pojasnila ova komanda, potrebno je u komandnom prozoru (Command

    Window) otkucati:

    >> a=[2/5 1.22333e-6] i pritisnutiEnter.

    U komandnom prozoru e biti vidljivo:>> a=[2/5 1.22333e-6]

    a =

    0.4000 0.0000

    >>

    Na ovaj nain smo definisali vektor a sa dva elementa. Prikazani format je kratkiformat (short), standardne forme (etiri cifre iza decimalne take).Ako elimo da se prikau brojevi sa mantisom i eksponentom, to postiemokomandom format short e (zadran je kratki format, ali su brojevi prikazani samantisom i eksponentom), a nakon toga pritisnemo tasterEnter:

    >> format short e>> a

  • 7/30/2019 AGF Matlab Skripta 21032013

    4/92

    Strana 4

    a =

    4.0000e-001 1.2233e-006

    >>

    Prikazaemo i ostale numerike formatekoristei funkcijuformat.

    >> format short g>> a

    a =

    0.4 1.2233e-006

    >> format long

    >> a

    a =

    0.40000000000000 0.00000122333000

    (dugaki format 14 cifara)

    >> format long e>> a

    a =

    4.000000000000000e-001 1.223330000000000e-006

    (brojevi se daju mantisom i eksponentom)

    >> format long g

    >> a

    a =

    0.4 1.22333e-006

    >> format bank

    >> a

    a =

    0.40 0.00

    (prikaz brojeva sa dva decimalna mjesta)

    >> format +

    >> a

    a =

    ++

    (prikazuje se samo znak)>> format rat

    >> a

    a =

    2/5 1/817441

    (prikazuje se razlomak, drugi broj je zaokruen broj)

    >> format compact

    >> a

    a =

    2/5 1/817441

    (izmeu redova sa nekim sadrajem nee biti praznih redova)

  • 7/30/2019 AGF Matlab Skripta 21032013

    5/92

    Strana 5

    >> format loose

    >> a

    a =

    2/5 1/817441(prikazuju se prazni redovi izmeu redova sa odreenim sadrajem).

    Izborom File Preferences Command Window Command Window

    Preferences vri se izbor eljenog numerikog formata.

    Sl. 2. Izbor eljenog numerikog formata za vrijednosti koje se prikazuju na ekranu

    Ako nije definisan neki drugi format, automatski se koristi format short, tj.standardni format sa 5 znaajnih cifara.

    PRIMJER:

    Broj prikazati korienjem razliitih oblika naredbe format.

    >> format short, pi

    ans =

    3.1416

    >> format long, pi

    ans =

    3.141592653589793>> format long e, pi

    ans =3.141592653589793e+000

    >> format short e, pi

    ans =

    3.1416e+000

    >> format rat, pi

    ans =

    355/113

  • 7/30/2019 AGF Matlab Skripta 21032013

    6/92

    Strana 6

    Napomena: Sljedei broj sa kojim budemo radili bie automatski u formatu kojismo posljednji koristili. Da bismo se vratili u uobiajeni, format short, dovoljno jeotkucati samo naredbu format.

    1.5. Prikaz rezultataPritiskom na tasterEnterna ekranu se automatski prikazuju rezultati. Ako je potrebno

    da se rezultati ne prikazuju na ekranu, neophodno je da se red zavri znakom ;To omoguava izvrenje prorauna, ali se rezultat ne prikazuje na ekranu.

    1.5.1. Prikaz komandi u vie redovaDa bi se komande prikazale u vie redova, neophodno je na kraju svakog redaotkucati tri uzastopne take.Primjer:

    >> a=2-1/2+1/3-1/4+1/5 ...

    - 1/6 + 1/7;

    >> a

    a =1.7595

    >>

    Napomena: prije kucanja tri uzastopne take, potrebno je unijeti jedan prazan znak.

    1.6. Korienje komandi savei loadFormiraemo niz sa dva elementa: a i b (element a je ve formiran, a element b jereciprona vrijednost elementa a):a =

    1.7595>> b=1/a

    b =

    0.5683

    >> c=[a b]

    c =

    1.7595 0.5683

    Formirali smo niz c sa dva elementa

    >> save rp Sauvali smo sadraj radnog podruja u zapisu rp.mat>> clear Brisanje sadraja radnog podruja>> load rp Unoenje podataka iz zapisa rp.mat>> c Prikazivanje niza c na ekranuc =

    1.7595 0.5683

    >> clear Brisanje sadraja radnog podruja>> d=[2/3 .23]; Formirali smo niz dsa dva elementa>> save rp.dat -ascii Radno podruje kopirali smo u tekstualni zapis>> clear Brisanje sadraja radnog podruja>> load rp.dat Unoenje podataka iz zapisa rp.dat (formiran je niz rp)>> rp

    rp =

    0.6667 0.2300

    Prikazivanje niza rpna ekranu

  • 7/30/2019 AGF Matlab Skripta 21032013

    7/92

    Strana 7

    >> e=rp

    e =

    0.6667 0.2300

    Formirali smo niz esa dva elementa (jednak nizu rp) iprikazali ga na ekranu

    >> clear Brisanje sadraja radnog podruja>> f=[2 3];g=4.5; Formirali smo niz fsa dva elementa i promjenljivu g

    >> save rp1 Sauvali smo kopiju radnog podruja u zapisu rp1.mat>> clear Brisanje sadraja radnog podruja>> load rp1 Unoenje sadraja zapisa rp1.dat>> rp1 Pokuaj prikaza niza??? Undefined function or variable 'rp1'.

    >>

    MATLAB javlja greku

    1.7. Funkcije za pomo

    Komanda helpAko zadamo komadnu

    >> help

    MATLAB prikazuje listu svih direktorija sa opisom kategorije funkcija koje se nalaze

    u pojedinom direktoriju.

    Ako zadamo zajedno sa komandom help i ime neke od funkcija (ime funkcije sezadaje malim slovima), MATLAB kao odgovor daje informacije o navedenoj funkciji

    u komandnom prozoru.

    Lista imena svih funkcija, npr. iz oblasti linearne algebre, nalazi se u direktorijumu

    matfun, i ako elimo vidjeti listu imena svih ovih funkcija (sa opisom svake od njih)zadaemo komandu: help matfun.

    Ako otkucamo:

    >> help sqrt

    SQRT Square root.

    SQRT(X) is the square root of the elements of X. Complex

    results are produced if X is not positive.

    See also sqrtm, realsqrt, hypot.

    Overloaded methods:

    codistributed/sqrt

    Reference page in Help browser

    doc sqrt

    Ako kliknemo na doc sqrt, omogieno je korienje Help-a uz pomo Internet-a.

    Ako otkucamo:

    >> sqrt (-2:2)

    ans =

    0 + 1.4142i 0 + 1.0000i 0 1.0000 1.4142

    Komanda helpwin

  • 7/30/2019 AGF Matlab Skripta 21032013

    8/92

    Strana 8

    Ovom komandom se, takoe, omoguuje pristup informacijama do kojih se dolazi ipomou naredbe help.

    Komanda lookfor

    Ovom komandom se omoguava dobijanje informacija o nekoj funkciji na osnovuzadate kljune rijei.Ako otkucamo:

    >> lookfor poly

    dobija se mnogo odgovora, npr.:

    CONV Convolution and polynomial multiplication.

    DECONV Deconvolution and polynomial division.

    2. Definisanje promjenljivih, unoenje podataka i aritmetiki izrazi u Matlab-u

    Promjenljive se definiu tako to im se dodijeli vrijednost. Naziv promenljive je nizslova i cifara koji mora poeti slovom, pri emu se velika i mala slova razlikuju.

    Slijedi primjer definicije matrice dimenzije 3 x 3:

    A = [1 2 3; 4 5 6; 7 8 9]

    A =

    1 2 3

    4 5 6

    7 8 9

    Matricu A je mogue definisati i na drugi nain: A = [1 2 3

    4 5 67 8 9]

    A =

    1 2 3

    4 5 6

    7 8 9

    Vektor-vrsta se definie kao u sljedeem primjeru:

    x = [-1.3 sqrt(3.1) (1+2)/4*5]

    x =

    -1.300 1.7607 3.7500

    Slino kao u prethodnom primjeru s matricom definie se i vektor-kolona.Elemente matrice je neophodno odvojiti bar jednim white space karakterom.

    Prilikom dodjeljivanja vrijednosti promjenljivim, MATLAB e ispisati upravododijeljenu vrijednost. Stavljanje znaka taka-zapeta (;) na kraj reda prilikom dodjelevrijednosti promenljivoj e sprijeiti ispis vrijednosti na ekran.

    Slijedi primjer:

    y = [1.25e-2 sin(5)];

    Imaginarna jedinica i moe se eksplicitno definisati na sljedei nain:

  • 7/30/2019 AGF Matlab Skripta 21032013

    9/92

    Strana 9

    i = sqrt(-1)

    i =

    0+1.0000i

    Ovako definisan skalar se potom moe koristiti u formiranju MATLAB izraza, kao usljedeem primjeru:

    C = [1+5*i 2+6*i; 3+7*i 8];

    Napomena: Znak * se moe izostaviti.

    2.1. Selekcija elemenata matrice

    Elementima matrice pristupa se preko njihovog indeksa. Osim pojedinanih

    elemenata matrice, mogue je izdvojiti vrstu, kolonu ili bilo koju podmatricu.Za matricu definisanu izrazom:

    A = [1 2 3; 4 5 6; 7 8 9];

    element A(2,2) bi bio:

    A(2,2)

    ans =

    5

    Izdvajanje tree kolone matrice A vri se izrazom:

    A(:, 3)

    ans =

    3

    6

    9

    Podmatrica koja predstavlja presjek prve i tree vrste i druge i tree kolone matrice Adobija se izrazom:

    A([1 3], [2 3])

    ans =

    2 3

    8 9

    Prethodni rezultat se moe dobiti i izrazom:

    A([1 3], 2:3)

    ili izrazom:

    A(1:2:3, 2:3)

  • 7/30/2019 AGF Matlab Skripta 21032013

    10/92

    Strana 10

    U izrazima za selekciju elemenata matrice mogue je koristiti i prethodno definisanevektorepromjenljive. U MATLAB-u je mogue promijeniti i dimenzije matrice.

    Na primjer, izraz

    A = [A; 10 11 12]

    A =

    1 2 3

    4 5 6

    7 8 9

    10 11 12

    e proiriti matricu A novom vrstom. Slino tome, sljedea komanda e uklonitidrugu kolonu iz matrice A.

    A = A(:, [1 3])

    A =

    1 3

    4 6

    7 9

    10 11

    Ukoliko se matrica proiruje novim elementima, a ne definiu se vrijednosti svihnovih elemenata, za njihove vrijednosti se uzima nula. Na primjer:

    x = 1 : 4;

    x(6) = 7x =

    1 2 3 4 0 7

    Prilikom definisanja vrijednosti promjenljivih posebno je koristan operator dvotaka(:). Ovaj operator je namijenjen za definisanje vektora iji se elementi dobijajuinkrementiranjem poetne vrijednosti za konstantan korak. Slijedi primjer: x = 1:4

    x =

    1 2 3 4

    Mogue je navesti i korak razliit od 1, kao u sljedeem primjeru: y = 1:0.5:3

    y =

    1.0000 1.5000 2.0000 2.5000 3.0000

    Operator dvotaka se moe koristiti i za dodjelu vrijednosti matrici, ali samo u sluajuda je matrica bila prethodno definisana (tj. poznate joj dimenzije).

    Sljedei primjer ilustruje ovu mogunost. A = [1 2 3; 4 5 6; 7 8 9];

    A(:) = 21:29

    A =

    21 24 2722 25 28

  • 7/30/2019 AGF Matlab Skripta 21032013

    11/92

    Strana 11

    23 26 29

    Ukoliko matrica A prethodno ne bi bila definisana, rezultat bi bio vektor kolona.

    MATLAB automatski dodjeljuje vrijednost posljednjeg izraunatog izraza

    promjenljivoj ans.Tako se moe dobiti i vrijednost izraza koji nisu dodijeljeni kao vrijednost nijednoj

    promjenljivoj.

    Slijedi primjer:

    sqrt (2)

    ans =

    1.4142

    Pod skalarom se podrazumijeva matrica tipa 1x1. Vektori predstavljaju matrice

    jedne vrste ili jedne kolone.MATLAB je jezik izraza i sainjen je od konstanti, promjenljivih, operatora,

    specijalnih znakova i funkcija.

    Operacije i izrazi u MATLABu se piu na uobiajannain, slino kao to sepie u matematici. Rezultat izvrenja izraza je matrica.

    MATLAB operie realnim i kompleksnim brojevima. Koristi se uobiajenadecimalna notacija sa znakom i decimalnom takom.

    MATLAB moe da se koristi za izraunavanje jednostavnih matematikihizraza. Tada on radi slino kalkulatoru.

    Napomena: MATLAB je veoma strog prema definisanoj sintaksi jezika.Izostavljena zagrada ili zapeta mogu da utiu tako da cijeli program ne funkcionie.Sa druge stane, velika olakica u radu je to se na ekranu ispisuje vrsta uinjenegreke i olakava se korisniku da se greke isprave.

    >> y=sin(x

    ??? y=sin(x

    |

    Error: Expression or statement isincorrect--possibly unbalanced (, {, or [.

    MATLAB-ove promjenjive mogu imati numerike ili znakovne vrijednosti(string).

    Mogunost manipulacije matematikim izrazima bez korienja brojeva moeda bude veoma korisna.

    Znakovni tip podataka sastoji se iz niza ASCII znakova koji se unose pod

    jednostrukim apostrofima 'x'.

  • 7/30/2019 AGF Matlab Skripta 21032013

    12/92

    Strana 12

    PRIMJER 1:

    Napisati rije student.

    >> rijec='student'

    rijec =

    student

    PRIMJER 2:

    U rijei student odrediti broj slova.

    >> size(rijec)

    ans =

    1 7

    U ovom PRIMJERU koriena je naredba size, koja izraunava dimenzijuunijete promjenljive.

    Napomena: (Odgovor 1 7 oznaava polje brojeva u jednom redu 7 elementa).

    Imena promjenljivih ili funkcijamoraju poeti slovom, iza koga moe slijeditiprizvoljan niz simbola, ali se samo prvih 63 karaktera iz imena pamti.

    MATLAB razlikuje velika i mala slova, tj. x i X su dvije razliitepromjenljive.

    Imena matricaobino se piu velikim slovima, dok imena skalara i vektora malimslovima.

    Imena funkcija moraju se pisati malim slovima.

    2.2. Aritmetiki operatori

    Aritmetiki izrazise prave korienjem uobiajenih aritmerikih operacija zakoje koristimo sljedee simbole:

    + sabiranje

    - oduzimanje

    * mnoenje

    / dijeljenje^ stepenovanje

    PRIMJER 3:

    Izraunati vrijednost izraza 2+4-6.

    >> 2+4-6

    ans =

    0

  • 7/30/2019 AGF Matlab Skripta 21032013

    13/92

    Strana 13

    Iz ovog PRIMJERA vidimo da MATLAB sam kreira veliinu pod imenom ans(answer odgovor), ukoliko korisnik sam ne dodijeli ime promjenljivoj ili vrijednosti

    izraza.

    PRIMJER 4:

    Izraunati

    1422x .

    >> x=2+(2*4-1/pi)

    x =

    9.6817

    Broj je definisan kao stalna veliina MATLAB-a i dovoljno je ukucati slovapi (a ne vrijednost 3.14).

    PRIMJER 5:Izraunati vrijednost izraza 3y x , ako je 23x .

    >> x=3^2;

    >> y=3*x

    y =

    27

    2.3. Relacijski operatori

    Relacijski operatori su binarni operatori i koriste se za poreenje izraza.Rezultat poreenja je tano ( true ) u oznaci 1 ili netano ( false ) u oznaci 0 .

    vee od

    vee ili jednako od

    = = jednako

    ~= nejednako

    PRIMJER 6: Ispitati istinitosnu vrijednost izraza 5 3 .

    >> 5

  • 7/30/2019 AGF Matlab Skripta 21032013

    14/92

    Strana 14

    PRIMJER 7:

    Izraunati vrijednost izraza:

    >> 5> 2+2==4

    ans

    1

    A = [1 2 3; 4 5 6; 7 8 9];

    B = A> 5 i=sqrt(-1)

    i =

    0 + 1.0000i

  • 7/30/2019 AGF Matlab Skripta 21032013

    15/92

    Strana 15

    Kompleksni brojevi se definu kao zbir z x iy , gdje je x realni, a y imaginarni dio kompleksnog broja.

    PRIMJER 8:

    Napisati broj 2 3z i .

    >> z=2+3*iz =

    2.0000 + 3.0000i

    Moduo, argument, realni i imaginarni dio i konjugovano kompleksni broj

    dobijaju se korienjem naredbi abs, angle, real, imag, conj.

    PRIMJER 9:

    Izraunati4

    sin

    .

    >> sin(pi/4)ans =

    0.7071

    PRIMJER 10:

    Za 5x i 59y izraunati vrijednost izraza lnz y x .

    > x=5;

    >> y=59;

    >> z=log(y)+sqrt(x)

    z=6.3136

    Primijetimo da vrijednosti promjenljivih x i y nisu prikazane na ekranu (jer se

    iza promjenljivih nalazio znak ;).

    PRIMJER 11:

    Izraunati vrijednost izraza logz x y , za vrijednosti x i y , zadate u

    prethodnom PRIMJERU.

    >> % Komentar: x i y su vrijednosti promjenljivih iz prethodnog PRIMJERA

    >> z=log10(x)+abs(y)

    z =

    59.6990

    Napomena: Treba imati u vidu da MATLAB pamti prethodno unijete veliine,pa ih nije potrebno ponovo definisati ako nam kasnije trebaju u radu.

    Napomena: Oznaka % koristi se za pisanje komentara.

  • 7/30/2019 AGF Matlab Skripta 21032013

    16/92

    Strana 16

    2.5. Osnovne konstante u Matlabu

    ans vrijednost izraza kada nije pridruen promjenljivoj

    i , j imaginarna jedinica 1

    pi =3.14159265...

    Inf , ili rezultat 1/0 (infinity)

    NaN Nije broj, ili rezultat 0/0(Not a Number)

    Napomena: Prednost rada u MATLAB-u je to dijeljenje nulom ne dovodi doprekida programa ili greke. Ispisuje se poruka upozorenja i specijalna veliina seponaa korektno u kasnijim izraunavanjima.

    PRIMJER 1:

    Unijeti matricu

    247586

    421

    A .

    >> A=[1 -2 4; -6 8 5; 7 -4 2]

    A =

    1 -2 4

    -6 8 5

    7 -4 2

    Druga mogunost upisa je da se razmak izmeu elemenata zamijeni zapetom.

    >> A=[1, -2, 4; -6, 8, 5; 7, -4, 2]

    A =

    1 -2 4

    -6 8 5

    7 -4 2

    Vektori su matrice vrste ili kolone i unose se na isti nain. Ako su vrijednostielemenata ekvidistantne (sa istim korakom), koristi se simbol : .

    PRIMJER 2:

    Unijeti vektor x=(1, 2, ... , 10).>> x=1:10; x

    x =

    1 2 3 4 5 6 7 8 9 10

    Naredba lengthizraunava duinu vektora.

    >> length(x)

    ans =

    10

  • 7/30/2019 AGF Matlab Skripta 21032013

    17/92

    Strana 17

    Ako elimo proizvoljan korak, a ne 1, kao u predhodnom PRIMJERU,koristimo naredbu h=a:k:b, gdje su a i bpoetna i krajnja vrijednost, a kje korak.

    Kod matrica sa kompleksnim elementima moemo da koristimo dva nainaunoenja podataka, tako to posebno unosimo realni i imaginarni dio ili broj kaocjelinu.

    PRIMJER 3:

    Unijeti matricu

    ii

    iiZ

    8473

    6251, tako to emo posebno unositi realne, a

    posebno imaginarne dijelove kompleksnih brojeva.

    >> a=[-1, 2; 3, 4] ; b=[5, -6; 7, 8] ; Z=a+b*i

    Z =

    -1.0000 + 5.0000i 2.0000 - 6.0000i

    3.0000 + 7.0000i 4.0000 + 8.0000i

    PRIMJER 4:Unijeti matricu Z iz prethodnog PRIMJERA tako to elemente odmah

    unosimo kao kompleksne brojeve.

    >> Z=[-1+5*i , 2-6*i ; 3+7*i , 4+8*i]

    Z =-1.0000 + 5.0000i 2.0000 - 6.0000i

    3.0000 + 7.0000i 4.0000 + 8.0000i

    Element matrice A koji se nalazi u presjeku i-te vrste i

    j-te kolone moe se dobiti primjenom naredbe A(i,j).

    PRIMJER 5:

    Iz matrice

    654

    132

    321

    A izdvojiti element u presjeku druge vrste i tree

    kolone.

    >> A=[1 2 3 ; 2 -3 1 ; -4 -5 -6] ;

    >> A(2 , 3)

    ans =

    1

  • 7/30/2019 AGF Matlab Skripta 21032013

    18/92

    Strana 18

    Ako elimo da izdvojimo vrstu koristimo komandu A(k,:) ili kolonukomanduA(:,k),gdje kpredstavlja traenu vrstu, odnosno kolonu.

    Dimenzije matriceodreuju se naredbama size(A) ili [m,n]=size(A).

    PRIMJER 6:Odrediti dimenzije date matrice A, korienjem naredbe size.

    >> size(A)

    ans =

    3 3

    PRIMJER 7:Odrediti dimenzije matrice A korienjem naredbe [m,n]=size(A).

    >> [m, n]=size(A)m =

    3

    n =

    3

  • 7/30/2019 AGF Matlab Skripta 21032013

    19/92

    Strana 19

    3. Osnovne operacije s matricama, vektorima i skalarima

    Transponovanje A = [1 2 3; 4 5 6; 7 8 9];

    B = A

    B =1 4 7

    2 5 8

    3 6 9

    Ve je reeno da matrice sa jednim stupcem ili jedim retkom zovemo vektori.

    Vektori se u MATLAB unose na sljedei nain:

    >>a=[2 5 6] (ili a=[2,5,6])

    a=

    2 5 6

    >>b=[5;2;1]

    b=

    5

    2

    1

    Uoiti ta dobijemo za a' i b'.

    >>a'

    ans= 2

    5

    6

    >>b'

    ans= 5 2 1

    Sabiranje

    C = A + B

    C =

    2 6 10

    6 10 14

    10 14 18

  • 7/30/2019 AGF Matlab Skripta 21032013

    20/92

    Strana 20

    Sabiranje matrice i skalara

    Prilikom sabiranja matrice sa skalarom, svaki element matrice se sabira sa datim

    skalarom. Sabiranje matrice sa skalarom je komutativno.

    C = C2

    C =0 4 8

    4 8 12

    8 12 16

    Sabiranje vektora sa skalarom:

    >>a+2

    ans=

    4 7 8

    >>b-1

    ans=

    4

    1

    0

    Mnoenje matrica

    Operator * obuhvata i mnoenje matrice i vektora, mnoenje dva vektora i mnoenjematrice ili vektora skalarom. Naredni primjeri ilustruju ove mogunosti MATLAB-a.

    D = A * B

    D =

    14 32 50

    32 77 122

    50 122 194

    x = [1 2 3];

    E = D*x

    E =228

    552

    876

    y = [4 5 6];

    x*y

    ans =

    4 5 6

    8 10 12

    12 15 18

  • 7/30/2019 AGF Matlab Skripta 21032013

    21/92

    Strana 21

    y*x

    ans =

    32

    y*2

    ans =

    8 10 12

    >>a*3

    ans=

    6 15 18

    >>b*-2

    ans=

    -10

    -4-2

    Osnovne operacije nad dva vektora su mogue samo ukoliko su istog oblika:

    >>a+b

    ??? Error using ==> plus

    Matrix dimensions must agree.

    >>a+b'

    ans =

    7 7 7

    >>a'+b

    ans =

    7

    7

    7

    Pored ovoga, MATLAB posjeduje operatore / i \ koji su namijenjeni za mnoenjematrice inverzijom druge matrice. Pri tome izraz A\B predstavlja mnoenje A-1*B, aizraz A/B predstavlja mnoenje A*B-1. Iz ovoga slijedi da se sistem linearnih

    jednaina Ax = b u MATLAB-u moe relativno jednostavno rijeiti, kao u sljedeemprimjeru:

    A = [10 2 6; 1 10 9; 2 -7 -10];

    b = [28 7 -17]; x = A\b

    x =

    1.0000

    -3.00004.0000

  • 7/30/2019 AGF Matlab Skripta 21032013

    22/92

    Strana 22

    U sluaju da je matrica sistema singularna, ili bliska singularnoj, MATLAB e ispisatiupozorenje:

    A = [1 2 3; 4 5 6; 7 8 9];

    b = [10 4 2]; x = A\b

    Warning: Matrix is close to singular or badly scaled.

    Results may be inaccurate. RCOND = 1.541976e-018

    x =

    1.0e+016 *

    -1.8014

    3.6029

    -1.8014

    Operacije sa elementima matrice ili vektora

    Elementi dvije matrice ili vektora se mogu pomnoiti po principu element saelementom, pomou operatora .* . Pri tome dimenzije matrica ili vektora koji semnoe moraju biti jednake.

    Slijedi primjer:

    x = [1 2 3];

    y = [4 5 6];

    x .* yans =

    4 10 18

    Analogno prethodnom, postoje i operatori ./ i .\ , koji predstavljaju dijeljenje zdesna,

    odnosno slijeva. Sljedei primjer ilustruje upotrebu ovih operatora:

    x ./ y

    ans =

    0.2500 0.4000 0.5000

    x .\ y

    ans =4.0000 2.5000 2.0000

    Stepenovanje

    Ako je A kvadratna matrica i x cio broj, tada izraz A^x predstavlja x-ti matrinistepen od A. Ukoliko je x realan broj, tada je A^x = V*D.^x/V, gdje operator .^

    predstavlja stepenovanje matrica element po element, V je matrica desnih sopstvenih

    vektora, a D dijagonalna matrica sopstvenih vrijednosti.

  • 7/30/2019 AGF Matlab Skripta 21032013

    23/92

    Strana 23

    Slijedi primjer:

    A = [1 2 3; 4 5 6; 7 8 9]

    A ^ 2

    ans =

    30 36 4266 81 96

    102 126 150

    A .^ 2

    ans =

    1 4 9

    16 25 36

    49 64 81

    Osnovne operacije s matricama

    >>A=[2 1;3 4]

    A =

    2 1

    3 4

    >>B=[ 2 3; 3 1/2]

    B =

    2.0000 3.0000

    3.0000 0.5000

    Sabiranje matrica + A+B

    ans=

    4.0000 4.0000

    6.0000 4.5000

    Oduzimanje matrica - A-B

    ans=

    0 -2.0000

    0 3.5000

    Mnoenje matrica * A*B

    ans=

    7.0000 6.5000

    18.0000 11.0000

    Desno dijeljenje

    matrica/ A/B

    ans=

    0.2500 0.5000

    1.3125 0.1250

    Lijevo dijeljenje

    matrica\ A\B

    ans=

    1.0000 2.3000

    0 -1.6000

    Potenciranje matrica ^ A^2

    ans=

    7 618 19

  • 7/30/2019 AGF Matlab Skripta 21032013

    24/92

    Strana 24

    Transponovanje

    matrica' A'

    ans=

    2 3

    1 4

    Mnoenje elemenata

    dviju matrica lan polan

    .* A.*B

    ans=

    4 3

    9 2

    Desno dijeljenje

    elemenata dviju matrica

    lan po lan./ A./B

    ans=

    1.0000 0.3333

    1.0000 8.0000

    Lijevo dijeljenje

    elemenata dviju matrica

    lan po lan.\ A.\B

    ans=

    1.0000 3.0000

    1.0000 0.1250

    Potenciranje elemenatadviju matrica lan po

    lan.^ A.^B

    ans=4 1

    27 2

    Posebne matrice

    Jedininu matricu stvaramo naredbom eye:

    >>eye(3)

    ans =

    1 0 00 1 0

    0 0 1

    Nul-matricu generiemo naredbom zeros:

    >>zeros(3)

    ans =

    0 0 0

    0 0 0

    0 0 0

    Matricu punu jedinica stvaramo naredbom ones:

    >>ones(3)

    ans =

    1 1 1

    1 1 1

    1 1 1

  • 7/30/2019 AGF Matlab Skripta 21032013

    25/92

    Strana 25

    Sluajnu matricu generiemo pomou funkcije rand:

    >>A=fix(rand(3)*10)

    A =

    6 0 7

    3 4 79 3 1

    Osnovne matrine funkcije

    diag(A)vraa vektor iji su elementi dijagonalni elementi matrice A

    >>diag(A)

    ans =

    6

    4

    1

    Provjeriti ta je diag(diag(A)).

    rank(A)rauna rang matrice A>>rank(A)

    ans =

    3

    sum(A)vraa vektor iji su elementi sume stubaca matrice A>>sum(A)

    ans =

    18 7 15

    prod(A) - vraa vektor iji su elementi umnoci elemenata stubaca matrice A

    >> prod(A)

    ans =

    162 0 49

    det(A)rauna determinatu matrice:

    >> det(A)

    ans =

    -291

  • 7/30/2019 AGF Matlab Skripta 21032013

    26/92

    Strana 26

    inv(A)rauna inverznu matricu matrice A

    >> inv(A)

    ans =

    0.0584 -0.0722 0.0962

    -0.2062 0.1959 0.07220.0928 0.0619 -0.0825

    Stapanje matrica

    esto je potrebno iz manjih matrica napraviti vee. Npr., iz matrica elimo dobitimatricu.

    >>A=[1 3;2 4]

    A =

    1 3

    2 4

    >>B=[0;5]B =

    0

    5

    >>C=[A B]

    C =

    1 3 0

    2 4 5

    U sljedeem PRIMJERU moemo uoiti razliku izmeu A./B i A.\B

    >> A=[1 2 3;4 5 6;7 8 9];

    >> B=A';

    >> A./B

    ans =

    1.0000 0.5000 0.4286

    2.0000 1.0000 0.7500

    2.3333 1.3333 1.0000

    >> A.\B

    ans =

    1.0000 2.0000 2.3333

    0.5000 1.0000 1.3333

    0.4286 0.7500 1.0000

    Napomena: Izraz X=A\B (X= 1A B) predstavlja rjeenje jednaine AX=B, aizraz X=A/B (X=B 1A ) predstavlja rjeenjejednaine XA=B.

    PRIMJER 25: Rijeiti matrinu jednainu AX=B, gdje su date matrice

    654

    132

    321

    A i

    2

    2

    1

    B .

  • 7/30/2019 AGF Matlab Skripta 21032013

    27/92

    Strana 27

    (Uputstvo: 1AX B X A B )

    >> A ; B ; X=inv(A)*B

    X =0.1852-0.37040.5185

    ili

    >> X=A\B

    X =

    0.1852

    -0.3704

    0.5185

    PRIMJER 26:

    Podijeliti matricu A skalarom 2, slijeva i zdesna.

    >> A\2

    ??? Error using ==> mldivide

    Matrix dimensions must agree.

    >> A/2ans =

    0.5000 1.0000 1.5000

    1.0000 -1.5000 0.5000-2.0000 -2.5000 -3.0000

    4. Logiki operatori

    Logiki operatori u MATLAB-u su sljedei simboli:~ (negacija)

    | (disjunkcija)

    & (konjunkcija)

    Tablica vrijednosti za logike operacije

    p q ~p p&q p|q

    0 0 1 0 0

    0 1 1 0 1

    1 0 0 0 1

    1 1 0 1 1

    Napomena:MATLABtretira svaki ne nulti broj kao taan i nulu kao netaan.

  • 7/30/2019 AGF Matlab Skripta 21032013

    28/92

    Strana 28

    >> ~4

    ans =

    0

    >>

    Logiki i relacioni operatori su namijenjeni za formiranje logikih izraza. MATLABne posjeduje logiki tip podataka kao poseban tip, ve se kao vrijednost logikihizraza uzima 1 (ako je izraz taan), odnosno 0 (ako je izraz netaan). Prilikomizraunavanja vrijednosti logikih izraza vrijednosti razliite od nule se tretiraju kaotani izrazi, a nula kao netaan izraz.

    Slijede primjeri korienja logikih operatora:

    ~B

    ans =

    0 0 0

    0 1 1

    1 1 1

    X = ((B(:, 1) | ~B(:, 2)) & B(:, 3))'

    X =

    0 0 1

    4.1. Upotreba dvotakeJednostavan nain izrade aritmetikih nizova:

    >>1:5

    ans=

    1 2 3 4 5

    >>4:-1:-4

    ans =

    4 3 2 1 0 -1 -2 -3 -4

    >>x=0:pi/3:2*pi

    x =

    0 1.0472 2.0944 3.1416 4.1888 5.2360 6.2832

    >>y=sin(x)

    y =

    0 0.8660 0.8660 0.0000 -0.8660 -0.8660 -0.0000

  • 7/30/2019 AGF Matlab Skripta 21032013

    29/92

    Strana 29

    Ispis n do m-tog lana vektora dobijamo na slijedei nain:

    >>x(2:4)

    ans =

    1.0472 2.0944 3.1416

    Ukoliko elimo vektor generisati po broju elemenata, a ne prema razmaku izmeususjednih elemenata, koristimo funkciju linspace:

    >>s=linspace(0,10,3)

    s =

    0 5 10

    Funkcije zaokruivanja

    MATLABposjeduje 4 funkcije za zaokruivanje realnih brojeva (round, fix, floor,ceil).

    round - zaokruuje broj prema najbliem cjelobrojnom

    fix - zaokruuje broj prema nuli

    floor - zaokruuje broj prema -

    ceil - zaokruuje broj prema +

    >>x=-pi:pi/4:pi

    x =

    Columns 1 through 7

    -3.1416 -2.3562 -1.5708 -0.7854 0 0.7854 1.5708

    Columns 8 through 9

    2.3562 3.1416

    >>round(x)

    ans =

    -3 -2 -2 -1 0 1 2 2 3

    >>fix(x)

    ans =

    -3 -2 -1 0 0 0 1 2 3

  • 7/30/2019 AGF Matlab Skripta 21032013

    30/92

    Strana 30

    >>floor(x)

    ans =

    -4 -3 -2 -1 0 0 1 2 3

    >>ceil(x)

    ans =

    -3 -2 -1 0 0 1 2 3 4

    Funkcija signvraa predznak argumenta:

    >>sign(x)

    ans =

    -1 -1 -1 -1 0 1 1 1 1

    Zadatak za vjebu

    Na osnovu gornjih primjera:

    Pomou naredbe "linspace" formirajte niz od 100 vrijednosti ravnomjernorasporeenih izmeu brojeva 250 i 380.

    Na zadani niz vrijednosti primijenite nauene funkcije za zaokruivanje

    5. Ugraene funkcije

    f-ja objanjenje

    sin sinus

    cos kosinus

    tan tangens

    asin arkus sinus

    acos arkus kosinus

    atan arkus tangens

    sinh hiperbolni sinus

    cosh hipebolni kosinus

    tanh hiperbolni tangens

    asinh area sinus hiperbolni

    acosh area kosinus hiperbolni

    atanh area tangens hiperbolni

    abs apsolutna vrijednost

    sqrt kvadratni korijen

    real realni dio kompleksnog broja

  • 7/30/2019 AGF Matlab Skripta 21032013

    31/92

    Strana 31

    imag imaginarni dio kompleksnog broja

    conj kompleksno konjugiranje

    exp exponencijalna funkcija (baza e)

    log logaritamska funkcija (baza e)

    log10 dekadski logaritam

    U ovom dijelu bie prikazane neke od najee korienih ugraenih funkcijaMATLAB-a. Za svaku od funkcija koje su na raspolaganju u MATLAB-u mogue jedobiti kratak opis komandom:

    help ime_funkcije

    all(X)Rezultat funkcije all je jednak 1, ako su svi elementi vektora X razliiti od nule; usuprotnom, rezultat je 0. Ako je X matrica, rezultat je vektor vrsta iji su elementi

    rezultati funkcije za svaku kolonu matrice posebno. X= [1 2 -3 0; 4 0 -8 0];

    all(X)

    ans =

    1 0 1 0

    any(X)

    Rezultat funkcije any je jednak 1 ako postoji bar jedan element vektora X koji je

    razliit od nule; u suprotnom, rezultat je 0. Ukoliko je X matrica, rezultat je vektorvrsta iji elementi su rezultati funkcije za svaku kolonu matrice posebno.

    any(X)ans =

    1 1 1 0

    sin(X)Vraa matricu iji su elementi vrijednosti sinusa odgovarajuih elemenata matrice X.Funkcija oekuje vrijednosti za veliinu ugla u radijanima.

    exp(X)

    Vraa matricu iji su elementi vrijednosti funkcije exp za odgovarajue elementematrice X.

    x = (0:0.2:1); y = sin(x) .* exp(-x);

    [x y]

    ans =

    0 0

    0.2000 0.1627

    0.4000 0.2610

    0.6000 0.3099

    0.8000 0.3223

    1.0000 0.3096

  • 7/30/2019 AGF Matlab Skripta 21032013

    32/92

    Strana 32

    max(X)

    Vraa vektor koji sadri maksimalne elemente po kolonama matrice X.

    mean(X)Vraa vektor koji sadri aritmetike sredine elemenata u odgovarajuim kolonama.

    size(X)

    Vraa dimenzije argumenta u obliku vektora.

    A = [1 2 3; 4 5 6; 7 8 9];

    max(A)

    ans =

    7 8 9

    mean(A)

    ans =

    4 5 6

    size(A)

    ans =

    3 3

    ones(m,n)

    Vraamatricu dimenzije m x n iji su elementi jedinice.

    zeros(m,n)

    Vraa matricu dimenzije mxn iji su elementi nule.

    sort(X)Rezultat je matrica dobijena sortiranjem kolona matrice X u rastuem redoslijedu.

    inv(X)

    Vraa inverznu matricu kvadratne matrice X.

    det(X)

    Vraa determinantu matrice X.

    rank(X)Rezultat funkcije je rang matrice X.

    cond(X)Vraa kondicioni broj matrice X.

    norm(X)

    Vraa normu matrice X.

    eig(X)Izraz eig(X) predstavlja vektor iji su elementi karakteristine vrijednosti matrice X.

    Ukoliko se funkcija pozove sljedeim izrazom: [V, D] = eig(X);

  • 7/30/2019 AGF Matlab Skripta 21032013

    33/92

    Strana 33

    tada je D dijagonalna matrica sa karakteristinim vrijednostima matrice X, a V jematrica ije su kolone odgovarajui desni karakteristini vektori.

    poly(X)Ako je X kvadratna matrica dimenzije n, tada je poly(X) vektor sa n+1 elementom

    koji predstavljaju koeficijente karakteristinog polinoma matrice X. Ukoliko je Xvektor, tada je poly(X) vektor iji su elementi koeficijenti polinoma koji za svojekorijene ima elemente vektora X.

    roots(X)

    Rezultat funkcije je vektor iji su elementi korijeni polinoma datog koeficijentima uvektoru X.

  • 7/30/2019 AGF Matlab Skripta 21032013

    34/92

    Strana 34

    6. Grafika

    6.1. 2D grafika

    Osnovna naredba dvodimenzionalne grafike uMATLAB-u je plot.

    Ukoliko elimo nacrtati graf funkcije f(x)=2sin(pi*x)cos(pi/2+pi*x) na intervalu[1,1] koristei ukupno 100 taaka, radimo na sljedei nain:

    1. Odaberemo uzorke na x - osi>>x=linspace(-1,1,100);

    2. za svaki uzorak sa x osi izraunamo vrijednost funkcije y>>y=2*sin(pi*x).*cos(pi/2+pi*x);

    3. pozivom naredbe plot kreiramo graf koji se iscrtava na nain da se sparujutake iz x i y matrica, te se iscrtavaju u koordinantnom sistemu>>plot(x,y)

    Ime grafa, te oznake x i y osi dodaju se na sljedei nain:>>title('Graf')

    >>xlabel('x os')

    >>ylabel('y os')

    Dodavanje mree na sliku izvodi fja grid.

    >>grid

  • 7/30/2019 AGF Matlab Skripta 21032013

    35/92

    Strana 35

    Mreu uklanjamo sa grid ili grid off.

    Mijenjanje boje linije kojom je graf nacrtan izvodimo treim parametrom funkcijeplot.

    >>plot(x,y,'r+')

  • 7/30/2019 AGF Matlab Skripta 21032013

    36/92

    Strana 36

    gdje trei parametar moe imati sljedee vrijednosti:

    BOJE LINIJE

    y yellow .

    m magenta oc cyan x

    r red +

    g green -

    b blue :

    w white -.

    k black --

    Na isti crte moe se prikazati i vie grafikona. Npr.:

    >>plot(x,y,'k', x,y/2,'g');

    Ukljuimo jo prikaz legende:

    >>legend('Funkcija','Pola funkcije');

    Poziv funkcije plot prebrie sadraj postojeeg crtea.

    Naredba holdomoguava da svi daljnji pozivi funkciji plot crtaju grafikone na istom

    crteu. Iskljuuje se sa hold off.

  • 7/30/2019 AGF Matlab Skripta 21032013

    37/92

    Strana 37

    Za brisanje crtea koristimo clg (ili clf).

    Za poveavanje prikaza koristimo naredbu zoom.Klikom na sliku poveavamo eljeni dio. Zoom out vraa prikaz na standardnuveliinu.

    Mijenjanje podruja x i y ose vri f-ja axis u obliku axis([xmin xmax ymin ymax]).

    Npr:

    >>axis ([-2 2 -1 1])

    PRIMJER 1:

    Nacrtati vektor (1, 2,4,8,16)x .

    >> x=[1,2,4,8,16];plot(x)

    1 1.5 2 2.5 3 3.5 4 4.5 50

    2

    4

    6

    8

    10

    12

    14

    16

  • 7/30/2019 AGF Matlab Skripta 21032013

    38/92

    Strana 38

    Iz ovog PRIMJERA moemo vidjeti da je MATLAB za vrijednosti nezavisnopromjenljive x uzeo redni broj elementa, a njihove slike su vrijednosti vektora x , tj.

    take nacrtanog grafika imaju koordinate 1,1 , 2,2 , 3,4 , 4,6 .... U optem sluaju naredba plot(x) crta grafik spajajui take (i, x(i)), i=1, 2,

    3,, N, gde je N duina vektora.Nezavisno promjenljiva moe biti zadata posebno. U tom sluaju se koristi

    naredba plot(x,y).

    PRIMJER 2:

    Nacrtati vektor zadat koordinatama (1, 2,4,8,16)x i ( 1, 2, 4,8,16)y .

    >> x=[1,2,4,8,16]; y=[-1,2,-4,8,16]; plot(x,y)

    0 2 4 6 8 10 12 14 16-4

    -2

    0

    2

    4

    6

    8

    10

    12

    14

    16

    Naredba plot se koristi i za crtanje funkcija jedne promjenljive.

    PRIMJER 3:

    Nacrtati funkciju 2 xy e u domenu 1,1x sa korakom 0.1 .

    >> x=-1:0.1:1; y=2*exp(x); plot(x,y)

    -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10.5

    1

    1.5

    2

    2.5

    3

    3.5

    4

    4.5

    5

    5.5

    PRIMJER 4:

  • 7/30/2019 AGF Matlab Skripta 21032013

    39/92

    Strana 39

    U istom koordinatnom sistemu nacrtati funkcije xy 2 i 2 xy e , u domenu

    1,1x sa korakom 0.1

    >> x=-1:0.1:1; y1=2*x ;y2=2*exp(x); plot(x,y1,x,y2)

    -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-2

    -1

    0

    1

    2

    3

    4

    5

    6

    PRIMJER 5:

    U prethodnom PRIMJERU uvedimo oznake za vrstu i boju linije.

    >> x=-1:0.1:1;y1=2*x; y2=2*exp(x);

    >> plot(x,y2,'g',x,y1,'m+')

    -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-2

    -1

    0

    1

    2

    3

    4

    5

    6

    Za crtanje grafika funkcija moemo da koristimo naredbu fplot(f,xmin,xmax).

    Funkcija koju crtamo ima oblik f x , gde je x vektor iji je prvi elementxmin, a poslednji element xmax.

    U naredbi fplot funkcija se pie pod navodnicima ' f '.

  • 7/30/2019 AGF Matlab Skripta 21032013

    40/92

    Strana 40

    PRIMJER 6:

    Nacrtati funkciju 92 xy u domenu 3,3x .

    >> y='x^2-9'; fplot(y,[-3,3])

    -3 -2 -1 0 1 2 3-9

    -8

    -7

    -6

    -5

    -4

    -3

    -2

    -1

    0

    6.2. Oznaavanje grafika i osaMATLAB nudi mogunosti oznaavanja osa, pisanja razliitog teksta i razne

    druge mogunosti.

    Oznaka Opis

    title naziv grafika

    xlabel naziv x oseylabel naziv y ose

    text naziv teksta na grafiku

    gtext tekst na poziciji oznaenoj miemgrid crtanje linija mree

    Tekst u prethodnim naredbama pie se u zagradi pod navodnicima. Naredbahold onzadrava sliku na ekranu. Suprotna njoj je naredba hold off. U naredbi gtextkorisnik naknadno sam odreuje miem mjesto na koje eli da smjesti tekst.

    PRIMJER 9:Nacrtati funkciju siny x na domenu 2 , 2x i korienjem naredbi iz

    tabele obiljeiti sliku.

    >> y='sin(x)';fplot(y,[-2*pi,2*pi])

    >> hold on

    >> grid

    >> title('sinusna funkcija')

    >> xlabel('x osa')

    >> ylabel('y osa')

    >> gtext('max')

  • 7/30/2019 AGF Matlab Skripta 21032013

    41/92

    Strana 41

    -6 -4 -2 0 2 4 6-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1sinusna funkcija

    x osa

    y

    osa

    max

    Naredba subplot(m, n, p) formira vie grafika na ekranu. Ekran se dijeli nam n dijelova, a grafik se crta u p -tom dijelu ekrana.

    PRIMJER 11:

    Korienjem naredbe subplot, nacrtati funkcije: 1,1y x x ,

    0,1xy xe x , 2 2,2y x x , cos ,y x x .

    >> x1=-1:1:1; y1=x1;

    >> x2=0:0.5:1; y2=x2.*exp(x2);

    >> x3=-2:.1:2; y3=x3.^2;

    >> x4=-pi:pi/16:pi; y4=cos(x4);

    >> subplot(2,2,1),plot(x1,y1)

    >> subplot(2,2,2),plot(x2,y2)>> subplot(2,2,3),plot(x3,y3)

    >> subplot(2,2,4),plot(x4,y4)

    -4 -2 0 2 4-1

    -0.5

    0

    0.5

    1

    -1 -0.5 0 0.5 1-1

    -0.5

    0

    0.5

    1

    0 0.5 10

    1

    2

    3

    -2 -1 0 1 20

    1

    2

    3

    4

  • 7/30/2019 AGF Matlab Skripta 21032013

    42/92

    Strana 42

    Skaliranje osa

    Ose x i y automatski se postavljaju na osnovu minimalne i maksimalne

    vrijednosti koordinata.

    Oznaka Opis

    axis('equal') Provjerava se da li je prirataj po osama isti

    axis(xmin,xmax,ymin,ymax) Zadaju se granice u kojima e biti nacrtan grafik

    axis('normal') Vraanje na prvobitne dimenzije grafika

    axis('axis') Vraanje na prvobitno skaliranje

    axis Dobija se informacija o trenutnim dimenzijama

    PRIMJER 12:

    Nacrtati funkciju siny x za -2 2x , a zatim postaviti da opseg po x

    osi bude - x , a po y osi bude 2, 2 .

    >> x=-2*pi:pi/16:2*pi; y=sin(x);plot(x,y),grid

    -8 -6 -4 -2 0 2 4 6 8-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    >> axis([-pi,pi,-2,2])

    -3 -2 -1 0 1 2 3-2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

  • 7/30/2019 AGF Matlab Skripta 21032013

    43/92

    Strana 43

    VJEBA:

    1. Nacrtati funkcije siny x i cosy x u opsegu od 0,2 .2. Nacrtati krug sa centrom u taki (2,2) i poluprenikom 4.3. Nacrtati funkciju 2 5 6y x x u proizvoljnom opsegu i opisati je tekstom.4. Korienjem naredbe subplot, nacrtati funkcije , 1, 6ny x n .

    6.3. Specijalni oblici 2D grafikih prikaza

    Prikazaemo i dvije specijalne grafike naredbe za 2D prikaz.Prvi primjer prikazuje funkcije dvije varijable kao konturni dijagram (naredba

    contour), to je zapravo prikaz izo-linija matrice Z.Funkcija dvije varijable Z u ovom primjeru generisana je demo naredbom peaks.[X,Y,Z] = peaks;

    contour(X,Y,Z,25)

    axis([-2 2 -2 2])

    Na narednoj slici je prikazankonturni dijagram funkcije dvije varijable.

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2-2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    Sl. Konturni dijagram funkcije dvije varijable

  • 7/30/2019 AGF Matlab Skripta 21032013

    44/92

    Strana 44

    Drugi primjer prikazuje vektor u takama 2D prostora.Naredbom quiver(X,Y,U,V) u svakoj x-y koordinati (matrice X i Y) definisan je vektorsa svojim x i y koordinatama (matrice U i V).

    [U,V] = gradient(Z,.25);

    hold on

    quiver(X,Y,U,V)

    Na narednoj slici prikazan je istovremeno konturni dijagram funkcije s dvije varijable

    s vektorskim prikazom gradijenta funkcije.

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2-2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    6.4. 3D grafika

    Osnovna naredba kojukoristimo za prikaz 3D

    grafike je plot3.

    >>t = 0:pi/50:10*pi;

    >>plot3(sin(t),cos(t),t)

    >>grid on

    >>axis square

    Slika Konturni dijagram funkcije s dvije varijable s vektorskim

    prikazom gradijenta funkcije

  • 7/30/2019 AGF Matlab Skripta 21032013

    45/92

    Strana 45

    Druga naredba koja se koristi za prikaz 3D slike je naredba " mesh(x,y,z)". Pri tom, x i

    y su vektori dimenzija n, odnosno m, a z je matrica dimenzija nxm. Ako izostavimo x

    i y, u tom e sluaju odgovarajuim vrijednostima na x, odnosno y osi biti pridruenaodgovarajua vrijednost matrice z.

    Konkretno:

    >>a=1:10;

    >>b=11:20;

    >>c=21:30;

    >>d=linspace(25,30,10);

    >>e=linspace(35,40,10);

    >>m=[a;b;c;d;e;e;d;c;b;a];

    >>mesh(m)

    rezultira prikazom

    Takoe je mogue oblike prikazati s ispunjenim povrinama >>surf(m), to rezultiraprikazom:

  • 7/30/2019 AGF Matlab Skripta 21032013

    46/92

    Strana 46

    Zadatak za vjebu

    Napisati naredbu u MATLAB-u koja rauna traenu funkciju, a zatim nacrtati graffunkcije za zadane intervale varijable x sa korakom 0.01.

    1. f(x)=(x+1).^(0.5) , x=[1,100]

    2. f(x)=(x+1).^(1/3) , x=[1,100]

    3. f(x)=sqrt(1./(4+x.^2)) , x=[1,10]

    4. f(x)=sqrt(x.^2-2) , x=[1.5,10]

    5. f(x)=(-(cos(x))./(3*((sin(x)).^3))+4/3*1./tan(x) , x=[1,3], x=[6,7], x=[10,20],

    x=[1,100]

  • 7/30/2019 AGF Matlab Skripta 21032013

    47/92

    Strana 47

    7. Polinomi

    MATLAB-omje vrlo jednostavno pronai nultake polinoma, skicirati njegov graf iliodrediti vrijednost za proizvoljan argument.

    Ako elimo nai nultake polinoma f(x)=3x4-2x3+x2-5x-7, skicirati njegov graf na

    podruju 10f=[3 -2 1 -5 -7]

    f =

    3 -2 1 -5 -7

    Funkcija rootstrai nultake polinoma:

    >>roots(f)

    ans =

    1.6293

    -0.0781 + 1.3303i

    -0.0781 - 1.3303i

    -0.8064

    f(3+2i) lako izraunamo koristei f-ju polyval:

    >>polyval(f,3+2*i)

    ans =

    -3.5600e+002 +2.7000e+002i

    Skiciranje polinoma u rasponu10x=-10:0.1:10;

    >>plot(x,polyval(f,x))

  • 7/30/2019 AGF Matlab Skripta 21032013

    48/92

    Strana 48

    7.1. Numeriko rjeavanje sistema linearnih jednaina

    MATLAB znaajno olakava rjeavanje sistema linearnih jednaina.Npr.potrebno je rijeiti ovakav sistem linearnih jednaina:

    4x1+9x2+2x3+4x4+6x5=63x1+9x2+6x3+7x4+2x5=3

    8x1+7x2+3x3+2x4+8x5=8

    4x2+9x3+4x4+6x5=8

    7x1+4x2+7x3+9x4+1x5=5

    Koeficijente uz nepoznate unesemo u matricu A, dok lanove s desne strane unesemou vektor B. Raun se svodi na AX=B, to se formalno rjeava jednostavnimdijeljenjem X=A\B.

    >>A=[4 9 2 4 6

    3 9 6 7 28 7 3 2 8

    0 4 9 4 6

    7 4 7 9 1];

    >>B=[6 3 8 8 5]'

    B =

    6

    3

    8

    8

    5

    >>X=A\B

    X =

    -0.0000

    -0.40000

    0.6000

    1.2000

    Dakle, vrijednosti nepoznatih su:

    x1=0

    x2=-0.4

    x3=0

    x4=0.6

    x5=1.2

  • 7/30/2019 AGF Matlab Skripta 21032013

    49/92

    Strana 49

    PRIMJER 1:

    Odrediti nule polinoma 2 5 6 0x x .

    >> p=[1 -5 6];

    >> r=roots(p)

    r =

    3.0000

    2.0000

    Sa druge strane, kada su poznata rjeenja polinoma, pomou naredbe polymoguse odrediti koeficijenti polinoma, odnosno napisati polinom.

    Naredba ima oblik

    p=poly (r), gdje je r vektor koji sadri rjeenja polinoma, a p vektor kojisadri koeficijente polinoma.

    PRIMJER 2:

    Odrediti polinom ija su rjeenja 2x i 3x .

    >> r=[2 3];

    >> p=poly(r)

    p =

    1 -5 6

    Dakle, traeni polinom je 2 5 6x x .

    7.1.1. Operacije sa polinomimaPolinomi se sabiraju i oduzimaju tako to se saberu, odnosno oduzmu

    koeficijenti polinoma (odgovarajuih monoma).

    PRIMJER 3:

    Sabrati polinome 3 21 3 2 4 6p x x x x i 4 3 2

    2 2 7 3 1p x x x x x .

    >> p1=[3 -2 -4 6];

    >> p2=[1 2 -7 -3 1];

    >> p=[0 p1]+p2

    p =

    1 5 -9 -7 7

    Kako polinomi nisu istog stepena, krai vektor se mora dopuniti nulama da bibio iste veliine kao dui vektor.

  • 7/30/2019 AGF Matlab Skripta 21032013

    50/92

    Strana 50

    Polinomi se mnoepomou naredbe conv.

    Naredba ima oblik:

    c=conv (a,b), gdje je c vektor koeficijenata polinoma rezultata, a a i b su

    vektori koeficijenta polinoma koji se mnoe.

    PRIMJER4: Pomnoiti polinome1

    p i2

    p .

    >> c=conv(p1,p2)

    c =

    3 4 -29 3 49 -32 -22 6

    Dakle, rjeenje je polinom 7 6 5 4 3 23 4 29 3 49 32 22 6x x x x x x x

    Polinomi se dijelepomou naredbe deconv.

    Naredba ima oblik

    [q,r]=deconv (a,b), gdje je q vektor koeficijenata polinoma kolinika, r vektor

    koeficijenata polinoma ostatka, a je vektor koeficijenta polinoma brojioca, bje

    vektor koeficijenta polinoma imenioca.

    PRIMJER 5: Podijeliti polinome 3 21 2 9 7 6p x x x x i 2 3p x x .

    >> p1=[2 9 7 -6];

    >> p2=[1 3];>> [q r]=deconv(p1,p2)

    q =

    2 3 -2

    r =

    0 0 0 0

    Dobijamo da je kolinik polinom 22 3 2x x , bez ostatka.

    7.1.2. Rjeavanje jednaina sa jednom promjenljivomJednaina sa jednom promjenljivom ima oblik 0f x .Za izraunavanje nula funkcije koristi se naredba fzero.

    Naredba ima oblik

    x=fzero('funkcija',x0)

    x je skalarna vrijednost

    Funkcija se unosi u obliku znakovnog niza ( string ). Funkcija se prethodno

    moe definisati u funkcijskom fajlu, a ime funkcije se zadaje u obliku znakovnogniza.

  • 7/30/2019 AGF Matlab Skripta 21032013

    51/92

    Strana 51

    0x je vrijednost promjenjive x u blizini mjesta gde funkcija presijeca x osu.

    0x moe biti skalar ija je vrijednost bliska taki preseka funkcije sa x osom ili

    vektor sa dva elementa ije su vrijednosti take na suprotnim stranama rjeenja. Akoima vie rjeenja, svako se izraunava za sebe.

    Poetno rjeenje 0x se moe odrediti grafikim putem.Funkcija fzeropronalazi samo rjeenja u kojima funkcija presijeca x osu.

    PRIMJER 6:

    Nai rjeenja jednaine 0.2xxe

    Priblina rjeenja odreujemo grafiki.

    >> fplot('x*exp(-x)-0.2',[0 8]);grid

    Sa slike vidimo da su priblina rjeenja 0,7 i 2,8 .

    >> x1=fzero('x*exp(-x)-0.2',0.7)

    x1 =

    0.2592

    >> x1=fzero('x*exp(-x)-0.2',2.8)

    x1 =

    2.5426

  • 7/30/2019 AGF Matlab Skripta 21032013

    52/92

    Strana 52

    7.1.3. Rjeavanje sistema linearnih jednainaAko je determinanta sistema od n linearnih algebarskih jednaina sa n

    promjenljivih razliita od nule, tada taj sistem ima jedinstveno rjeenje dato formulom

    , ( 0, 1, 2,..., )j

    j

    Dx D j n

    D

    ,

    gdje je D determinanta tog sistema, a jD determinanta dobijena tako to su u

    D koeficijenti uz jx zamijenjeni, redom, slobodnim lanovima jb .

    Navedene formule su poznate Kramerove formule.

    PRIMJER 7:

    Kreirati fajl Cramer za rjeavanje sistema linearnih algebarskih jednainakoristei Kramerovo pravilo.

    % Novi fajl pod imenom Cramer

    %Rjesavanje sistema AX=B Cramerovim pravilom

    function X=Cramer(A,B)

    [m,n]=size(A);

    if m ~= n,

    error('Matrica nije kvadratna'),

    end

    if det(A)==0,

    error('Matrica je singularna'),

    endfor j=1:n,

    C=A; C(:,j)=B; X(j)=det(C)/det(A);

    end

    X=X';

    PRIMJER 8:

    Koristei kreirani fajl Cramer, rijeiti sistem jednaina

    2 4 0

    2 2 6

    3 6 6

    x y z

    x y z

    x y

    >> A=[2 4 1 ;1 2 2 ; 3 6 0];>> B=[0 ; 6 ; 6];

    >> Cramer(A , B)

    ans =

    2

    0

    4

  • 7/30/2019 AGF Matlab Skripta 21032013

    53/92

    Strana 53

    PRIMJER 9:

    Koristei kreirani fajl Cramerrijeiti sistem jednaina

    2 3 1

    3 2 1

    6 3

    x y z

    x y z

    x y z

    .

    >> A1=[2 3 1;1 32;16 1]A1 =

    -2 3 1

    1 3 -2

    1 -6 1

    >> B1=[1;1;3]

    B1 =

    11

    3

    Cramer(A1,B1)

    ??? Error using ==> cramer

    Matrica je singularna

    PRIMJER 10:Rjeiti sistem jednaina matrinom metodom

    2 3 1

    3 2 16 3

    x y z

    x y zx y z

    .

    >> A=[-2 3 1;1 3 -2;1 -6 -1]

    A =

    -2 3 1

    1 3 -2

    1 -6 -1

    >> B=[1;1;3]

    B =

    1

    1

    3

    >> X=inv(A)*B

    X =

    -2.5000

    -0.5000

    -2.5000

  • 7/30/2019 AGF Matlab Skripta 21032013

    54/92

    Strana 54

    PRIMJER 11:

    Rijeiti sistem jednaina matrinom metodom i koristei kreirani fajl Cramer.

    Uporediti ovako dobijena rjeenja.

    2 3 113 5 2 19

    2 3 14

    x y zx y z

    x y z

    >> M=[2, 3, 1 ; 3, 5, 2 ; 1, 2, 3]

    M =

    2 3 1

    3 5 2

    1 2 3

    >> N=[11 ; 19 ; 14]

    N =

    11

    19

    14

    >> X1=inv(M)*N

    X1 =

    1.0000

    2.0000

    3.0000

    >> X2=Cramer(M,N)

    X2 =

    1

    2

    3

    Zadaci

    1) Nai nultakepolinoma, izraunati vrijednost za traeni x i skicirati polinom nazadanom intervalu:

    a. f(x)=2x2-4x-5, f(4+4i), [0,5]

    b. f(x)=3x

    3

    +2x

    2

    -x, f(-5), [-1000,1000]c. f(x)=5x4+x2+x+2, f(-1-i), [-1,1]

  • 7/30/2019 AGF Matlab Skripta 21032013

    55/92

    Strana 55

    2) Rijeiti sljedee sisteme linearnih jednaina:

    Sistem 1: Sistem 2:

    3x1+2x2+8x3=5 8x1-3x3+5x4=2

    x1+9x2+6x3=1 x2+7x4=3

    x1-x2+3x3=2 4x1+12x2-2x3+2x4=-5

    2x1-3x2+4x3=5

    3) Odrediti koeficijente polinoma 1 2 3y x x x .

    4) Rijeiti jednainu 4 22 1 0x x .

    5) Rijeitijednainu2

    5 2 0ax bx .

    6) Rijeiti sistem jednaina 22 2 1 0x x y i 2 1 0y x .

    7) Rijeiti sistem jednaina matrinom metodom i koristei kreirani fajl Cramer.

    Uporediti ovako dobijena rjeenja.

    2 3 9

    3 2 4 11

    2

    x y z

    x y z

    x y z

    .

  • 7/30/2019 AGF Matlab Skripta 21032013

    56/92

    Strana 56

    8. Programiranje u MATLAB-u

    Iako je osnovni nain rada MATLAB-a interaktivan rad, za rjeavanje sloenijihproblema potrebno je napisati odgovarajue MATLAB programe. MATLABprogrami se smjetaju u tekstualne ili binarne datoteke. Tekstualne datoteke (sa

    ekstenzijom .m) su zapravo ASCII datoteke sa tekstom programa. Binarne datoteke(sa ekstenzijom .mat) su datoteke zapisane u posebnom MATLAB-ovom formatu koji

    omoguuje razmjenu datoteka izmeu razliitih raunarskih platformi.

    8.1. MATLAB kao programski jezikSlino kao u FORTRAN-u i drugim programskim jezicima, MATLAB naredbe seizvravaju onim redoslijedom kojim su napisane.Redoslijed izvravanja naredbi se moe promijeniti, ukoliko to zahtijeva algoritamrjeenja nekog zadatka, korienjem funkcija za kontrolu toka programa.Kombinacijom ovih funkcija formiraju se programske konstrukcije poznate kao

    ciklusi.MATLAB karakteriu tri tipa ciklusa: if, for i while.Funkcija if u kombinaciji sa else i elseif omoguava konstruisanje vie razliitihformi if ciklusa.

    Tabela 2: Kontrola toka programa

    Funkcija Opis

    break zaustavljanje izvrenja (for, while)else koristi se sa funkcijom if

    elseif koristi se sa funkcijom ifend kraj petlje (for, while)

    error pokazivanje poruke o grecifor ponavljanje bloka naredbi definisani broj puta

    if oznaavanje uslovnog izvrenja naredbireturn povratak na pozivnu funkciju

    while ponavljanje izvravanja naredbi neodreen broj puta (sve dok...)

    8.2. Kontrola toka MATLAB programa

    MATLAB ima vie naredbi koje omoguavaju korisniku da upravlja tokom programa.

    To su: if, for, while, else, break, error, while...

    Posebno e se prikazati tri uobiajene strukture za kontrolu toka programa: for, ifiwhile.

    Naredba forima sljedei opti oblik:

    for brojac = vektor

    naredbe

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    57/92

    Strana 57

    pri emu vektor moe biti bilo koji vektor definisan u MATLAB-u. Promjenljivabrojac e u svakoj iteraciji petlje kao vrijednost primati odgovarajui element vektora.

    Naredba ifima sljedei opti oblik:

    Naredba ifse koristi za uslovnoizvravanje programa.

    Oblik if naredbe je:

    if izraznaredbe

    endili

    if izraznaredba 1

    elsenaredba 2

    endiliif izraz 1

    naredba 1

    elseif izraz 2naredba 2

    elsenaredba 3

    end

    gdje su izraz 1,izraz 2,... logiki izrazi.

    Ako uslovni izraz u iskazu ima vrijednost tano - true (1), program izvravakomande koje neposredno slede sve do komande end.Ako je uslovni izraz netaan false (0 ) , program preskae grupukomandi izmeu if i endi nastavlja da izvravakomande iza end.

    Vrijednost nezavisno promjenljive moe da se unese i korienjem naredbeinput(tekst).

    x=input ('unesi promenljivu x=');

    y=input ('unesi promenljivu y=');

    Za ispisivanje izlaznih rezultata koristi se naredba disp(tekst).

    PRIMJER 1: Unijeti godine starosti, i ako je broj godina manji od 21, na izlazu

    ispisati 'zabranjen alkohol', a u suprotnom izai iz programa.

  • 7/30/2019 AGF Matlab Skripta 21032013

    58/92

    Strana 58

    start

    Unesi godine

    Ako su

    godine

    manje od

    21

    Nema alkohola

    Formirati m-file: ab% primjer jednograne if naredbe

    function y=ab

    godine=input('god=');

    if godine

  • 7/30/2019 AGF Matlab Skripta 21032013

    59/92

    Strana 59

    PRIMJER 3: Za unaprijed zadatu vrijednost promjenljive x izraunati vrijednostizraza y , tako da, ako je 2x , slijedi da je 2y x , za 2x je 2y , inae je

    2y x .

    x=input('x=')

    if x=broj2) disp(broj2);

    else disp(broj2);

    end

    PRIMJER 5: Za unijeta tri broja ispisati najvei:broj1=input('prvi broj ');

    broj2=input('drugi broj ');

    broj3=input('trei broj ');

    if(broj1>=broj2)

    if(broj1>=broj3) disp(broj1);

    end

    else if (broj2>=broj3) disp(broj2);

    else disp(broj3);

    end

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    60/92

    Strana 60

    PRIMJER 6: Za unijeti broj n ispisati da li je on paran ili neparan.

    a=input('unesi a:');

    if rem(a,2)==0

    disp(broj je paran)

    else

    disp('broj je neparan)

    end

    PRIMJER 7: Formirati script u kome su dva vektora-vrste X i Y, sa po pet

    elemenata. Odrediti skalarni proizvod tih vektora: S = XY' i u zavisnosti od

    vrijednosti S definisati promjenljivu P prema formulama: P= 1 za S>0 ; P= 0 za S=0

    ;P=-1 za S0

    P=1

    else if S==0

    P=0

    else

    P=-l

    end

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    61/92

    Strana 61

    PRIMJER 8: Formirati MATLAB skript u kome e biti obavljene sljedee operacije:(l) Unoenje preko tastature: rednog broja mjeseca i indikatora 1 ako je godina

    prestupna ili indikatora 0 ako nije.

    (2) Odreivanje broja dana u datom mjesecu.(3) Prikazati rezultat na ekranu.

    Predvidjeti prikaz teksta 'podaci su neispravni, ako su podaci koji su zadati pogreni(tj. ako je redni broj mjeseca pogreno zadat).mjesec=input('unesi mjesec:);

    godina=input('unesi indikator za prestupnu godinu:');

    switch mjesec

    case{l,3,5,7,8,10,12}

    dani=31

    case{4,6,9,11}

    dani=30

    case 2

    if godina

    dani=29

    else

    dani=28

    end

    otherwise

    disp(podaci su neispravni)

    disp (mjesec)

    disp (godina)

    end

    For petlja omoguava ponavljanje dijela programa zadati broj puta. Zavrava se

    komandom end.Oblik petlje:

    for promjenljiva=izraznaredbe

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    62/92

    Strana 62

    PRIMJER 9: Za sve vrijednosti promjenljive 1,2,3,4,5x izraunati vrijednostfunkcije sin2y x .

    poetak

    x=1

    y(x)=sin(x)x=x+1

    for x=1:5

    y (x)=sin(2*x);

    end

    PRIMJER 10: Napisatiprogram koji rauna matricu A iji se elementi izraunavaju

    po zakonu 1,2 2

    a i ji j

    , a koja ima 4 vrste i 3 kolone.

    for i=1:4

    for j=1:3

    A(i,j)=1/(2*i+j-2);

    end

    end

    A

    U ovom PRIMJERU koriena je dupla for petlja.

    PRIMJER 11:Napisati program koji rauna sumu svih brojeva do unijetog broja?function y=unos

    x=input(Unesi broj );s=0;

    for i=1:x

    s=s+i;

    end

    disp ('Suma do unesenog broja =');

    disp(s);NAPOMENA: Ako se iza izraza s=s+i izostavi znak ; bie vidljiva promjena sume s.

  • 7/30/2019 AGF Matlab Skripta 21032013

    63/92

    Strana 63

    PRIMJER 12:Napisati program koji rauna 20. lan fibonaijevog niza.

    function fibo=niz(pr1)

    pr=0;

    pr1=1;

    for i=1:18

    s=pr+pr1;

    pr=pr1;

    pr1=s;

    end

    disp ('20-ti clan fibonaci-jevog niza je:')disp(s);

    PRIMJER 13: Ako je potrebno ispisati sve neparne brojeve Fibonai-jevog niza

    manje od 300:

    function fibo=niz(pr1)

    pr=0;

    pr1=1;

    for i=1:18

    s=pr+pr1;pr=pr1;

    pr1=s;

    if (s

  • 7/30/2019 AGF Matlab Skripta 21032013

    64/92

    Strana 64

    x=2*x;

    end

    disp(x);

    Dio programa izmeu while i endizvrava se sve dok je izraz koji slijedi posle whileistinit.

    PRIMJER 2: Izraunati zbir reda

    21

    1 1 1 11

    4 9 16

    n

    n

    sn

    sa tanou

    410 .

    s=0;

    n=1;

    while abs((-1) n/n^2)>10^(-4)

    s=s+(-1)^n/n^2;

    n=n+1;

    end

    disp(s);

    PRIMJER 3: Napisati kd koji za unijeti broj n ispisuje da li je on prost ili nije?

    n=input('Unesi broj n= ');

    brojac=0;

    for i=2:n-1

    if(rem(n,i)==0)brojac=brojac+1;

    end

    end

    if(brojac==0)disp('Broj je prost ');

    else disp('Broj nije prost ');

    end

    PRIMJER 4: Napisati kd koji za unijeti broj n ispisuje sve brojeve do n koji su

    djeljivi sa 2 ili sa 3?

    n=input('broj n= ');

    for i=1:n;

    if(rem(i,2)==0 | rem(i,3)==0) disp(i);

    end

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    65/92

    Strana 65

    PRIMJER 5: Napisati kd koji za unijeti broj n ispisuje proste inioce tog broja.Primjer broj 36 ima proste inioce 2,2,3,3.

    function zaok=yy

    n=input('broj n= ');

    i=2;

    while n>1if rem(n,i)==0

    n=fix(n/i);

    disp(i);

    else

    i=i+1;

    end

    end

    PRIMJER 6: Napisati kd koji unosi niz brojeva a(n) i zatim ga sortirati u opadajui.function niz=zzz

    n=input('broj n= ');

    for i=1:n

    a(i)=input(' ');

    end

    for i=1:n-1

    for j=i+1:n

    if(a(j)>a(i))

    c=a(i);

    a(i)=a(j);

    a(j)=c;

    end

    end

    end

    disp(a);

    PRIMJER 7: Napisati kd koji unosi niz brojeva a(n) i izdvaja one koji su parni i

    smjeta u novi niz b.function par=parni

    n=input('broj n= ');

    for i=1:n

    a(i)=input(' ');

    end

    c=1;

    for i=1:n

    {Omoguuje unos element po element(nakon unosa prvog elementa pritisne se

    Enter, pa se unosi drugi element, ...)}

  • 7/30/2019 AGF Matlab Skripta 21032013

    66/92

    Strana 66

    if rem(a(i),2)==0

    b(c)=a(i);

    c=c+1;

    end

    end

    disp(b);

    PRIMJER 8: Dati su realni brojevi a i , kao i broj x u dvostrukoj tanosti (|x| < l).

    Priblino odrediti vrijednost f koja je data sljedeom formulom:

    ...!3!2!1

    1 33221 xa

    xa

    xa

    f gdje su:

    ),...21

    )(11

    (1

    ),11

    (1

    ,1

    321

    aaa Vrijednost f odrediti u dvostrukojtanosti. Proraun prekinuti kada posljednji lan reda bude po apsolutnoj vrijednosti

    manji od broja . Na izlazu prikazati date podatke i dobivenu vrijednost f. Program

    izvriti sa sljedeim podacima: =3., x=0.2, =1.10-5

    alfa=input('alfa=');

    x=input('x=');

    eps=input('epsilon:');

    c=l.;

    f=l.;

    a=l/alfa;

    i=1.;

    fk=1.;

    while abs(c)>=eps

    fk=fk*i;

    c=a*x^i/fk;f=f+c;

    a=a*(l/alfa-i);

    i=i+1;

    end

    alfa

    eps

    x

    f

    i

  • 7/30/2019 AGF Matlab Skripta 21032013

    67/92

    Strana 67

    9. Vrste MATLAB datotekaMATLAB aplikacija se sastoji od M i MAT datoteka.

    MAT datoteke sadre binarne podatke i u imenu imaju nastavakmat.M datoteke su ASCII datoteke koje sadre obian tekst i u imenu imaju nastavakm.Oba tipa datoteka se mogu prenositi izmeu razliitih raunarskih sistema i

    arhitektura.M datoteke se mogu prenositi izmeu razliitih raunara zato to sadre mainskusignaturu u zaglavlju datoteke. Kada se datoteka pozove, MATLAB provjerava

    signaturu, i ako ona oznaava da se radi o stranoj datoteci, izvodi neophodnukonverziju. Prenoenje datoteka izmeu razliitih mainskih arhitektura omoguavajukomunikacijski programi.

    MAT datoteke omoguuju prenoenje podataka izmeu razliitih platformi, kao iprebacivanje MATLAB podataka u druge aplikacije i obrnuto. Direktorijum

    matlab\extern sadri funkcije koje omoguavaju uitavanje i ispisivanje MATdatoteka korienjem programa napisanih u FORTRAN-u ili C-u, ime se

    pojednostavljuje korienje MAT datoteka u drugim aplikacijama.

    Trea vrsta datoteka koja je posebno znaajna sa stanovita proirenja opsegamogunosti MATLAB-a su MEX datoteke pod kojima se podrazumijevaju C iFORTRAN programi koji se mogu pozvati iz MATLAB-a. Ponaaju se isto kao Mdatoteke ili ugraene funkcije, tako da ih MATLAB moe automatski pozvati iizvriti.MEX datoteke su zapravo dinamiki povezani potprogrami napisani u C iliFORTRAN izvornom kodu. MATLAB za Windows podrava dva formata MEXdatoteka: REX i DLL format. MEX datoteke imaju nastavak .mex za REX format i

    .dllza DLL format. Ukoliko u jednom direktoriju postoje datoteke sa istim imenom

    koje imaju nastavke .m, .mex i .dll, prednost imaju .mex nad .dll, odnosno .dllnad .m.

    M-datotekeM-datoteka se formira tekst-editorom i smjeta u odgovarajui direktorijum. Programkoji se nalazi u M-datoteci poziva se navoenjem imena datoteke u komandnoj linijiMATLAB-a. MATLAB e datoteku potraiti u svom tekuem direktorijumu i udirektorijumima koji su navedeni kao matlabpath u okviru konfiguracione datoteke

    matlabrc.m. Podrazumijevani tekui direktorijum MATLAB-a je direktorijum u komese nalazi datoteka matlab.exe (najee je to \matlab\bin). Tekui direktorijum semoe promijeniti komandom cd, koja ima sintaksu identinu odgovarajuoj DOSkomandi.

    Postoje dvije vrste M-datoteka: komandne (skript) i funkcijske. Komandna datoteka

    sadri niz MATLAB izraza i komandi. U toku izvravanja skripta sve prethodnodefinisane promjenljive su vidljive i imaju odgovarajue vrijednosti. Promjenljivekoje su definisane u okviru skripta vidljive su i nakon izvravanja skripta.Funkcijske datoteke su namijenjene za definisanje novih funkcija od strane korisnika.

    Nakon formiranja, funkcije definisane u odgovarajuim funkcijskim datotekamakoriste se jednako kao i ugraene funkcije MATLAB-a.

    Funkcijska M-datoteka mora da u prvoj liniji sadri izraz sljedeeg oblika:

    function [y1, y2, ] = ime_funkcije (x1, x2, )

    gdje y1,y2, predstavljaju rezultate izvravanja funkcije, ime_funkcije je nazivMATLAB funkcije koja se definie, a x1, x2, su ulazni parametri funkcije.

  • 7/30/2019 AGF Matlab Skripta 21032013

    68/92

    Strana 68

    Promjenljive koje su definisane prije poziva funkcije nisu vidljive unutar same

    funkcije. Slino tome, promjenljive koje se definiu unutar funkcije nisu vidljiveizvan nje. Ukoliko je potrebno da neke promjenljive budu vidljive i unutar funkcije,

    one moraju biti proglaene globalnim pomou naredbe global. Naziv funkcije morabiti jednak nazivu datoteke u kojoj je smjetena funkcija.

    Korisnike funkcije je mogue definisati i u okviru REX ili DLL datoteka (u verzijiMATLAB-a za Windows operativne sisteme).

    Dodatni skupovi funkcija organizovani u toolbox-ove se, nakon instaliranja, nalaze u

    nekom od poddirektorijuma \matlab\toolbox direktorijuma. Da bi stalno bila vidljiva,

    promjenljivu matlabpath definisanu u matlabrc.m datoteci treba dopuniti

    odgovarajuim vrijednostima. Tu se nalaze primjeri M, MAT, REX, i DLLfunkcijskih datoteka.

    MATLAB posjeduje i skup komandi namijenjen debagiranju komandnih i funkcijskih

    datoteka.

    Dosadanju komunikaciju s MATLAB-om izvodili smo u prozoru programa gdje biMATLAB odmah po upisivanju naredbi vraao rezultat. Ovaj nain zgodan je kadaradimo neto kratko i neto to nije potrebno ponavljati, odnosno raunati vie puta.Osim ovakvog naina rada, MATLAB omoguava da mu se slijed naredbi zada uobliku tekstualne datoteke (tzv. m-file zbog ekstenzije .m). Pozivanje imena te

    datoteke u komandnom prozoru MATLAB-a pokree izvravanje slijeda naredbipohranjenih u njoj.

    Npr., u nekom tekst editoru (Notepad ili MATLAB editor) napiemo sljedee:

    clear

    A=fix(rand(3)*10)

    B=fix(rand(3)*10)

    Whos

    Datoteku snimimo pod imenom test.m. Ukoliko sada u MATLAB-u napiemo:

    >>test

    MATLAB e potraiti m-file sa navedenim imenom i izvriti naredbe zapisane unjemu, to e rezultirati brisanjem svih postojeih varijabli (clear), stvaranjem dviju

    sluajnih matrica A i B, te ispisivanjem trenutnih varijabli sa prikazom potronjememorije svake varijable (whos). Imena m-datoteka ne smiju biti ista kao i imenastandardnih naredbi ili funkcija, te se one moraju snimiti u neki od foldera koji

    MATLAB pregledava prilikom izvoenja (path).

    A =

    3 7 0

    6 0 0

    1 2 8

    B =

    6 0 7

    3 4 79 3 1

  • 7/30/2019 AGF Matlab Skripta 21032013

    69/92

    Strana 69

    Name Size Bytes Class Attributes

    A 3x3 72 double

    B 3x3 72 double

    Funkcijski M-file, osim obinog izvoenja slijeda naredbi m-datoteke, mogu se

    programirati tako da izvravaju neke funkcije.

    Npr., sljedei m-file rauna povrinu trougla stranica a, b, c, po formuli:P=(s*(s-a)*(s-b)*(s-c))^0.5, s=(a+b+c)/2.

    function P=povrsina(a,b,c)

    s=(a+b+c)/2;

    P=sqrt(s*(s-a)*(s-b)*(s-c));

    Ukoliko ovaj m-file snimimo pod imenom povrsina.m, pozivamo ga u MATLAB-u na

    sljedei nain:

    >> povrsina(3,4,5)

    ans =

    6

    ili ukoliko rezultat elimo pridruiti nekoj varijabli:

    S=povrsina(3,4,5)

    S =

    6

    Naredbe input i disp

    % m- file izbor.m

    r=input('izaberite \n a \n b ili \n c \n');

    if r=='a'disp('izabrali ste a');

    elseif r=='b'

    disp('izabrali ste b');

    elseif r=='c'

    disp('izabrali ste c');

    else

    disp('pogresan izbor');

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    70/92

    Strana 70

    >> izbor

    izaberite

    a

    b ili

    c

    'b'izabrali ste b

    >>

    PRIMJER 1:

    Odrediti zbir kvadrata prvih deset prirodnih brojeva i sauvati fajl pod imenomzbir.

    s=0;

    for i=1:10

    s=s+i^2;

    end

    disp(s);

    Svaki put kada nam je potreban ovaj rezultat, dovoljno je samo otkucati rijezbir, pod kojom smo upamtili ovaj fajl.

    Ovako sauvani fajl je otvoren prema podacima koje smo unosili tokom rada,tako da moe da se dogodi greka. Zato je bolje formirati funkcijskefajlove koji suzatvoreni sistemi i zatieni od nepoeljnih podataka.

    Funkcijski fajl omoguava korisniku MATLAB-a da stvara nove funkcije.

    Funkcijski fajlovi moraju u prvoj liniji da sadre naredbu oblika:

    function [y1, y2,] =ime funkcije (x1, x2,)

    function ime funkcije (x1, x2,)

    function [y1, y2,] = ime funkcije

    Ulazni argumenti su 1 2, ,x x , izlazni argumenti 1 2, ,y y su funkcije, koje

    se dobijaju kada se funkcija pozove.

    Poslije ovoga izraza slijedi niz MATLAB komandi i izraza.

    PRIMJER 2:

    Formirati funkcijski fajl u kome se definie nova funkcija sinxf x e x pod imenom fi.

    % funkcijski fajl

    % ime nove funkcije je fi

    function y=fi(x)

    y=exp(x)+sin(x);

  • 7/30/2019 AGF Matlab Skripta 21032013

    71/92

    Strana 71

    Ako elimo da izraunamo vrijednost ove funkcije, dovoljno je da pozovemo

    funkciju fi i definiemo vrijednost promjenljive, na PRIMJER2

    x

    .

    >> fi(pi/2)

    PRIMJER 3:

    Formirati funkcijski fajl u kome se definie nova funkcija sinxf x e x pod imenom fa, a da se vrijednost nezavisno promjenljive unese korienjem naredbeinput (tekst).

    % ime nove funkcije je fa

    function y=fa

    x=input('unesi promjenljivu x=')

    y=exp(x)+sin(x);

    Pozivanjem funkcije fa i odgovorom na postavljeno pitanje dobiemo odgovor:>> faunesi promjenljivu x=3

    x = 3

    ans = 20.2267

    PRIMJER 4: Formirati funkcijski fajl pod imenom ime, kojim se odreuje brojslova u nekom imenu.

    % funkcijski fajl ime kojim se odredjuje broj slova u imenu

    function n=br(x)

    x=input('unesi svoje ime:','s');

    % oznaka s u naredbi oznacava da se unose stringovi

    n=length(x);

    disp(['broj slova u imenu je',num2str(n)];

    U naredbi disp, tekst je definisan kao dvodimenzioni vektor, ija je prvakomponenta znak (string), a druga koja je kao rezultat programa broj koji mora da se

    naredbom num2str prebaci u znak (string).

    PRIMJER 5:Napisati program za raunanje faktorijel broja.function f=fakt(x);

    if(x==0)f=0;

    else

    f=1;

    for i=1:x

    f=f*i;

    end

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    72/92

    Strana 72

    PRIMJER 6: Napisati program koji ispisuje trocifrene brojeve kojima je zbir

    faktorijela cifara jedanak tom broju. Zadatak uraditi pomo'u potprograma iz

    prethodnog zadatka.

    for i=100:999

    c1=fix(i/100);

    c2=fix((rem(i,100))/10);c3=rem(i,10);

    suma=fakt(c1)+fakt(c2)+fakt(c3);

    if(suma==i)disp(i);

    end

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    73/92

    Strana 73

    10. Rjeavanje integrala

    Pod numerikom integracijom (koristi se i termin kvadratura) podrazumijeva seaproksimacija odreenog integrala:

    b

    a

    dxxf )(

    U MATLAB-u postoje dvije glavne funkcije za kvadraturu: quad i quad8, kojerade za konane vrijednosti a i b i za sluaj da podintegralna funkcija f(x) nemasingularitet u [a,b].

    Funkcija quadse aktivira na sljedei nain:

    q=quad(fun,a,b,tol)

    gdje su:

    fun tekstualni niz kojim se zadaje ime funkcijskog potprograma u kome seodreuje podintegralna funkcijaa,bgranice intervalatol apsolutna tolerancija greke, koja slui za definisanje eljene tanosti

    rezultata. Ako se ne zadaprogram uzima vrijednost 0.001

    Funkcija trapz

    Koristi se za izraunavanje integrala pomou trapeznog pravila.

    z=trapz(x,y)

    x, y su vektori iste duine

    Odreuje se trapeznim pravilom integral y s obzirom na x.

    Mogue je zadati samo jedan argument, tj. vektor y:

    z=trapz(y)

    gdje se ordinate funkcije uzimaju na jedininom odstojanju.

    PRIMJER 1:

    Trapeznim pravilom za grubu podjelu intervala [0,2] odreen je integral

    2

    02

    2

    cos1

    sindx

    x

    x

    Dobijena vrijednost u ovom sluaju ima greku reda veliine 10-7.

    x=linspace(0,2*pi,100);

    y=sin(x).^2./sqrt(1+cos(x).^2);

    trapz(x,y)

    ans

    2.84783411343745

  • 7/30/2019 AGF Matlab Skripta 21032013

    74/92

    Strana 74

    Funkcija dblquad

    Slui za proraun dvostrukog integrala, naredbom

    r=dblquad(dfun,umin,umax,smin,smax)

    Odreujemo dvostruki integral funkcije fun(u,s), gdje je u tzv. unutranjapromjenljiva koja se mijenja od umin do umax, a s je spoljanja promjenljiva koja semijenja od smin do smax.

    Prvi argument je tekstualni niz ili inline objekat kojim se zadaje podintegralna

    funkcija. Ta funkcija mora da bude funkcija od dvije promjenljive oblika: f=fun(u,s),

    gdje je u vektor, a s je skalar, dok je rezultat f vektor koji sadri vrijednosti funkcijeza dato s i za svaku od vrijednosti u vektoru u.

    Naredba r=dblquad(dfun,umin,umax,smin,smax) znai:

    dsdusufunr

    s

    s

    u

    u

    max

    min

    max

    min

    ),(

    Funkciju dblquad je mogue aktivirati i sa vie argumenata:

    r=dblquad(dfun,umin,umax,smin,smax, tol)

    r=dblquad(dfun,umin,umax,smin,smax,tol,metod)

    tol -pokazatelj grekemetod ime funkcije koja se koristi za izraunavanje jednostrukog integrala

    /quad ili quad8/

    PRIMJER 2:

    Odreivanje numerikim putem integrala:

    dydxyxey x

    6

    4

    1

    0

    2 cos

    Formira se funkcijski potprogram za proraun podintegralne funkcije:

    function izlaz=fxy(x,y)

    izlaz=y^2*exp(x)+cos(y)*x;

    Zatim se aktivira funkcija dblquad:

    dblquad(fxy,0,1,4,6)

    ans =

    87.2983

  • 7/30/2019 AGF Matlab Skripta 21032013

    75/92

    Strana 75

    11. Diferencijalne jednaine

    U MATLAB-u postoje funkcije kojima se rjeavaju problemi poetnihvrijednosti i granini problemi. Problem poetnih vrijednosti koji je n-tog redadefinie se diferencijalnom jednainom:

    ),...)(),(),(,(*)( ...)(

    tytytytfdt

    tdy n

    i poetnim uslovima:

    ,...)(,)()(..

    00

    ..

    0

    .

    0

    .

    ,00 ytyytyyty

    Granini problem moe da bude linearan i nelinearan. Npr. ako je datadiferencijalna jednaina:

    0)()()(2

    2

    xryxqdx

    dy

    xpdx

    yd

    zajedno sa uslovima na krajevima intervala [a,b]:

    y(a) = i y(b) = ,

    onda je rije o linearnom graninom problemu, tj. u diferencijalnoj jednaini sviizvodi stepena su 1.

    Za rjeavanje poetnih problema 1. reda u MATLAB-u postoji na raspolaganjunekoliko funkcija.

    Obradiemo dvije: ode23 i ode45.Funkcija ode potie od: ordinary differential eqations ode23 koristi metode

    Runge-Kutta 2. i 3. reda.

    Kako su metode vieg reda tanije, ovdje se metod 3. reda koristi da bi serazlika po rjeenjima dvije metode upotrijebila kao pokazatelj greke metode 2. reda

    Funkcija ode45 je analogna po svemu sa funkcijom ode23, osim po tome to seu njoj primjenjuju metodi Runge-Kutta 4. i 5. reda.

    Ako je pokazatelj greke izvan zadatih granica u potprogramu, onda se mijenjaveliina koraka integracije i proraun se ponavlja.

    Redukovanje koraka i ponavljanje prorauna bie prekinuto ako budeprekoraen u programu prethodno definisani broj ponavljanja, s tim to e biti dataporuka o moguem postojanju singulariteta.

    PRIMJER 1Korienje funkcije ode45Rijeiti poetni problem:

    ,1 tydt

    dy

    1)0( y

    za koji postoji egzaktno rjeenje

    tetty )(

  • 7/30/2019 AGF Matlab Skripta 21032013

    76/92

    Strana 76

    koje emo upotrijebiti radi analize dobijenog numerikog rjeenja. Rjeenjetraimo za vrijeme t koje ispunjava uslove 0 t 1.

    NAPOMENA:

    Nain definisanja funkcije ode45.[t,y]=ode45(izvod,interval, y0), gdje su:izvod tekstualni niz u kome stoji ime funkcije u kojoj se odreuje izvod

    traene funkcije

    Funkcija izvod(t,y) t je vrijeme, a drugi argument je vrijednost funkcije y,odreuje izvod za dato t

    Interval - [t,y]poetno i krajnje vrijeme za odreivanje funkcije y

    y0 je poetna vrijednost funkcije za t=tp

    Da bismo dobili rjeenja u eljenim trenucima vremena (za pojedinanetrenutke vremena), drugi argument se zadaje na sljedei nain:

    interval = [tp t1 t2 ... tk],gdje lanovi niza moraju da ine rastui, odnosno opadajui niz vrijednosti.

    Kod rjeavanja navedenog problemaprvo se formira funkcijski potprogram radiprorauna izvoda:

    function dydt=izv(t,y)

    dydt=-y+t+1;

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 11

    1.05

    1.1

    1.15

    1.2

    1.25

    1.3

    1.35

    1.4

    vrijeme u sec

    y(t)

    pocetni problem 1. reda

    ans=

    41 1

    ystv=t+exp(-t);

    greska=abs(y-zstv);

    greskaans=

    1.0e-008 *

    ....

    ans=41 1

    y0=1;

    [t,y]=ode45(izv, [0,1],y0);plot(t,y)xlabel(vrijeme u sec)ylabel(y(t))title(pocetni problem 1. reda)size(t)

  • 7/30/2019 AGF Matlab Skripta 21032013

    77/92

    Strana 77

    12. Razni zadaci

    U nastavku je dat primjer jedne komandne M-datoteke:

    sistem.m

    A = [10 2 6; 1 10 9; 2 -7 -10];b = [28 7 -17];x = A\b

    Datoteka sistem.m se iz MATLAB okruenja poziva na sljedei nain:

    sistem

    Tokom izvravanja skripta e se u komandnom prozoru MATLAB-a ispisati:

    x =

    1.0000

    -3.00004.0000

    Zadatak br. 1:

    Nacrtajte graf funkcija sin(n*pi*x) na intervalu1 x=-1:0.05:1

    >>for n=1:8

    subplot (4,2,n), plot(x, sin(n*pi*x))

    end

  • 7/30/2019 AGF Matlab Skripta 21032013

    78/92

    Strana 78

    Objanjenje: Funkcija subplot(m,n,p) slui nam za "dijeljenje" ekrana na mxndijelova, s tim da parametar "p" naznaava trenutno aktivni dio u kojem se crtanaznaeni graf. Zadatak se moe rijeiti i koritenjem funkcije "hold on", tako dadobijemo 8 grafova na jednom koordinatnom sistemu preko itavog ekrana

    >> x=-1:0.05:1>>for n=1:8

    plot(x, sin(n*pi*x)), hold on

    end

    Zadatak br. 2:

    Generisanje matrice iji su svi dijagonalni elementi jednaki 2, svi ostali elementi uprvoj vrsti jednaki 1, svi ostali elementi jednaki nuli.

    >> n=5;

    for i=1:n

    for j=1:n

    if i==j

    a(i,j)=2;elseif abs(i)==1

    a(i,j)=1;

    else

    a(i,j)=0;

    end

    end

    end

    >> a

    a =

    2 1 1 1 10 2 0 0 0

  • 7/30/2019 AGF Matlab Skripta 21032013

    79/92

    Strana 79

    0 0 2 0 0

    0 0 0 2 0

    0 0 0 0 2

    Zadatak br. 3:Korienje funkcijske M datoteke koja slui za izraunavanje sljedeeg izraza,odnosno funkcije:

    ))5.1(5.1sin()5.1(1

    2)(

    2tarctgtty

    Iz menija File komandnog prozora bira se komanda New, a zatim opcija M-file. Pri

    tome se otvara prozor programa za ureivanje teksta koji e posluiti za formiranjekomandne ili funkcijske M datoteke.

    U novootvorenom prozoru definie se prethodna funkcija pomou MATLABpromjenljivih i funkcija na sljedei nain:

    function y=dfun(t)

    y=2./sqrt(1+(t*1.5).^3).*sin(1.5*t+atan(-1.5*t));

    Po definisanju funkcije, da bi se datoteka snimila, iz menija File prozora programa za

    ureivanje teksta bira se funkcija Save As. Otvara se dijalog koji omoguava uvanjedatoteke pod eljenim nazivom (u primjeru je: dfun.m) u odabranom direktorijumu.Kada se u radnom prostoru promjenljivoj t dodijeli neka vrijednost i zatim pozove

    funkcija dfun, dobie se odgovarajua vrijednost funkcije.

    >>fplot('dfun', [0 30])

    >>ylabel('dfun')>>xlabel('t')

  • 7/30/2019 AGF Matlab Skripta 21032013

    80/92

    Strana 80

    Zadatak br. 4:

    Nacrtati funkciju:1

    1

    23 xxx

    >> x=0.1:0.1:10;>> y=1./(x.^3+x.^2+x+1);

    >> loglog(x,y)

    >> grid

    Zadatak br. 5:

    Za vektor x=[2 5 9] izraunati funkcije:a) xexy )1(

    b) 1)122( xexz

    Zadatak br. 6:

    Formiran je .m file: dfun1 od f-je:

    dxxxz )2( 33

    1

    2

    function z=dfun1(x)

    z=x.^2-2*x.^3;

    U komandnom prozoru:

    >> s=quad('dfun1',1,3)

    s =-31.3333

  • 7/30/2019 AGF Matlab Skripta 21032013

    81/92

    Strana 81

    Zadatak br. 7:

    Formiran je .m file: dfun1 od f-je:

    dxxxz ))cos(2(

    3

    1

    2

    U komandnom prozoru:

    s=quad('dfun2',1,3)

    s =

    10.0674

  • 7/30/2019 AGF Matlab Skripta 21032013

    82/92

    Strana 82

    13. Kreiranje grafikog interfejsa

    Savremeni grafiki korisniki interfejs (Graphical User Interface - GUI) omoguujukorisnicima izbor naredbi pomou razliitih kontrola poput dugmadi (buttons), poljaza unos teksta (text fields), klizaa (sliders), i izbornika (menus). Kontrole je potrebno

    dizajnirati na nain da je korisniku jasno koja e akcija slijediti iz njegovog odabira.Osnovna uloga korisnikog interfejsa (engl. user interface) jeste olakavanjekomunikacije ovjeka i raunara.Korienje grafikog interfejsa omoguuje:

    Intuitivnost (korisnikpokree aktivnosti u skladu sa poslovnim zahtjevima) Interaktivnost (program korisniku omoguuje dovoljno informacija i

    kontrole za pravovremene reakcije)

    Estetika (dizajn korisnikog interfejsa omoguava oputeniji i prirodnijidugotrajni rad u programu)

    Kreiranje grafikog interfejsa u Matlab-u odvija se u tri koraka:1. dizajniranje grafikog interfejsa dodavanjem i razmjetanjem kontrola2. programiranje aktivnosti d