matlab - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/mpaii/matlab(dva dijela).pdf · uvod...

55
Uvod Matrice Skripte i funkcije MATLAB 28. oˇ zujka 2012. MATLAB

Upload: others

Post on 29-Nov-2019

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

MATLAB

28. ozujka 2012.

MATLAB

Page 2: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Table of contents

1 Uvod

2 MatriceVarijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

3 Skripte i funkcijeSkripteNaredbe grananjaFunkcije

MATLAB

Page 3: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

MATLAB

Matlab (MATrix LABoratory) je programsko okruzenje za tehnickoi znanstveno racunanje.Omogucava:

izvodenje kompleksnih proracuna

vizualizaciju rezultata

izvodenje simulacija

programiranje

MATLAB ima vlastiti (interpretirani) programski jezik visokognivoa koji je jednostavan za koristenje i upotrebljavastandardiziranu matematicku sintaksu. Podrzava iobjektno-orijentirani pristup.

MATLAB

Page 4: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Korisnicko sucenje

Dijelovi korisnickog sucelja:

Command Window (interaktivna konzola) - interaktivnakonzola u koju utipkavamo naredbe i vidimo njihov rezultat

Workspace (radni prostor) - popis svih varijabli i njihovaosnovna svojstva

Command History - popis ranije izvrsenih naredbi

Current Folder (trenutni direktorij) - direktorij u kojem senalaze programi dostupni za izvrsavanje

MATLAB

Page 5: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Help

MATLAB dolazi sa vrlo iscrpnim sustavom pomoci, pod menijem

Help -> Product Help

Osim toga, pomoc je dostupna u interaktivnoj konzoli:

help eig

MATLAB

Page 6: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Znacenje

U MATLAB okruzenju, matrica je pravokutno polje brojeva.1× 1 matrice zovemo skalarima.Matrice sa jednim stupcem ili retkom zovemo vektori.Unosimo ih na vise razlicitih nacina:

eksplicitan unos niza elemenata

punjenje matrice koristeci vanjsku podatkovnu datoteku (eng.external data files)

generiranje matrice koristenjem ugradenih funkcija (eng.built-in functions)

kreiranje matrica koristenjem datoteka sa vlastitim funkcijama

MATLAB

Page 7: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Operacije sa matricama

Upisemo u command window

A = [ 16 2 5 7; 5 11 3 23; 1 2 1 5; 7 1 15 17 ]

i stisnemo Enter. S time smo kreirali matricu A reda 4× 4. Akozelimo provjeriti sto nam predstavlja A, samo upisemo A i stisnemoEnter.Pogledajmo koje funkcije su nam dane za rad sa matricama(build-in functions).sum(A), A’, A.’, diag(A), size(A), length(A),

min(A), max(A)

nam redom daju: retcani vektor koji je suma pojedinih stupacamatrice A, matricu koja je adjungirana matrica matrice A,

MATLAB

Page 8: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Operacije sa matricama - nastavak

matricu koja je transponirana matrica matrice A, stupcani vektorkoju cine elementi na glavnoj dijagonali matrice A, . . .Ako zelimo dohvatiti elemente matrice u i-tom retku i j-tomstupcu, izraz je A(i, j).Ako zelimo dohvatiti cijeli k-ti stupac, izraz je A(1:4;k).Ako zelimo dohvatiti cijeli k-ti redak, izraz je A(k, 1:4)Pokusajmo unijeti izraz A(4, 6). Normalno, javlja nam se graska,jer matrica nema toliko stupaca (sto i pise u objasnjenju greske).Ako zelimo promijeniti vrijednost pojedinog elementa matrice (navrijednost k), koristimo izraz A(i, j) = k.

MATLAB

Page 9: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Generiranje matrica

zeros(i, j) nam daje matricu i × j sa svim elementima 0.ones(i, j) nam daje matricu i × j sa svim elementima 1.Konkatenacija je spajanje vise manjih matrica u jednu veliku.Npr. A=[1 2; 3 4];

B=[5 6; 7 8];

qverb—C=[A ; B]—Cijeli k-ti redak matrice brisemo sa A(k, :) = [].Determinantu matrice A dobijamo sa det(A).Pogledajmo gresku koju nam MATLAB javlja u slucaju:A = [2 4; 8 1]; inv(A).poly(A) daje koeficijente karakteristicnog polinoma matrice A.

MATLAB

Page 10: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Napomena - polinomi

Polinomi se u MATLABU predstavljaju sa retcanim vektorima kojisadrzavaju koeficijente uz pojedine potencije varijable x. Npr. akobi zeljeli raditi sa polinomom P(x) = 7x3 + 4x2 + 3, u MATLABUbi unijeli P =[7 4 0 3]Neke funkcije za rad sa polinomima su:roots(P), conv(P, Q), [R S] = deconv(P, Q), polyder(P)koji redom daju:korijene polinoma P, umnozak polinoma P i Q, dijeljenje polinomaP i Q (R je rezultat dijeljenja, S je ostatak), derivacija polinomaP.

MATLAB

Page 11: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Operatori

Bez matematickog znanja o matricama, one nam predstavljajudvo-dimenzionalna numericka polja. Lista operatora za rad sanjima je:

+ zbrajanje− oduzimanje.∗ mnozenje pripadnih elemenata./ dijeljenje pripadnih elemenata.\ dijeljenje slijeva pripadnih elemenata.^ potenciranje pripadnih elemenata.’ transponiranje

MATLAB

Page 12: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer - matrice

Primjer

A =[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16];

B=[1 1 1 1; 2 2 2 2; 3 3 3 3; 4 4 4 4];

A + B

A - B

A.*B

A./B

A.\B

A.^B

A.’

A(~isprime(A))=0

MATLAB

Page 13: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Slaba tipiziranost

MATLAB je slabo tipiziran jezik. Nije potrebno deklarirativarijable, pojedine varijable mogu mijenjati svoj tip ”u let”:

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

a = ’neboder’

a.element = 123

Kada MATLAB naide na novu varijablu, automatski se kreira tavarijabla i alocira se spremnik prikladne velicine. Ako varijabla vecpostoji, MATLAB joj promijeni sadrzaj i, ukoliko je potrebno,alocira novi spremnik.Ime varijable mora poceti sa slovom. Ime varijable moze bitiproizvoljne duljine, ali MATLAB za raspoznavanje koristi prvihnamelength znakova.

MATLAB

Page 14: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Interne varijable

eps=2.2204e-16 tocnost realnih brojeva(razlika izmedu 1.0 i prvogveceg)

realmin=2.2250733858507202e-308 vrijednost najmanjeg realnogbroja

realmax=1.797697134862316e+308 vrijednost najveceg realnogbroja

pi=3.14154265358979 vrijednost broja

Inf dobija se dijeljenjem sa 0 ili ako dode do overflowa

Nan (not a number) se dobiva evaluacijom izraza tipa 00 ili

∞∞

i,j imaginarna jedinica kompleksnih brojeva

MATLAB

Page 15: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Eksterne varijable

Ime varijable:

potrebno je razlikovati uporabu velikih/malih slova

maksimalni broj znakova je 31

prvi znak mora biti slovo

specijalne varijable ciji su nazivi rezervirani: ans, pi, eps, flops,inf, nan, i, j, nargin, nargout, realmin, realmax

MATLAB

Page 16: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Napomena - save, load

Deklarirane varijable mozemo spremiti u binarnu mat datoteku ikasnije ih ponovno ucitati. Varijable x, yy, ZZZ spremamo udatoteku var.mat pomocusave(’var.mat’, ’x’, ’yy’, ’ZZZ )Sve deklarirane varijable spremamo u datoteku var.mat pomocusave( ’var.mat’)Varijable x, yy, ZZZ ucitavamo iz datoteke var.mat pomocuload( ’var.mat’, ’x’, ’yy’, ’ZZZ’ )Sve varijable koje postoje u datoteci var.mat ucitavamo saload( ’var.mat’ )

MATLAB

Page 17: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Brojevi

Neki zapisi brojeva su:

4, 57, 0.03004, 1.34e23, 2i, 5e2j

MATLAB interno sprema brojeve u long formatu koristeci IEEEstandard sa pomicnom tockom. Ti brojevi imaju preciznost odotprilike 16 znacajnih decimalnih brojeva.( od 10−308 do 10308).

Primjer

x=3333333333333333333333333333333333333331;

y=3333333333333333333333333333333333333332;

x==y

Zasto MATLAB javlja da su x i y jednaki?

MATLAB

Page 18: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer (kompleksni brojevi)

Primjer

Koristimo funkciju sort na dva kompleksna broja:

a = 2 + 5i;

b= 1 + 7i;

sort([a, b])

Zasto? Jer se sortira po fazama.

angle(a)

angle(b)

MATLAB

Page 19: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Operatori

+ zbrajanje- oduzimanje* mnozenje/ dijeljenje\ dijeljenje slijeva^ potencija’ adjungiranje

MATLAB

Page 20: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Logicki i relacijski operatori, funkcije

Svi logicki i relacijski operatori i navedene funkcije se izvrednjavajupo elementima.

~A (logicko NE), A&B (logicki I), AIB (logicki ILI)

A<B, A<=B, A>B, A>=B, A==B, A~=B

sin, cos, asin, acos, sinh, cosh, asinh, acosh, exp,

log, log10, sqrt, abs, round

MATLAB

Page 21: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Ugradene funkcije

MATLAB nam pruza veliki broj standardnih matematickih funkcija(npr. abs, sqrt, exp, sin). Listu mozemo dobiti naredbomhelp elfunSiru listu mozemo dobiti naredbamahelp specfun ili help matInf se dobija dijeljenjem sa 0 ili ako dode do overflowa. NaN (not anumber) se dobiva evaluacijom izraza tipa 0

0 ili ∞∞

MATLAB

Page 22: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Funkcija format

MATLAB moze ispisivati realne brojeve u 4 osnovna formata. Npr.kako se a = 31.4 ispisuje u razlicitim formatima?

a = 3.14

format short

a

format long

a

format short e

a

format long e

a

MATLAB

Page 23: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Visedimenzionalna polja

Visedimenzionalna polja u MATLAB okruzenju su polja sa 3 ili viseindeksa.

Primjer

A = ones(2, 3, 4);Asum(A, 1)sum(A, 2)

MATLAB

Page 24: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Cell-arrays

Cell-arrays u MATLABU su visedimenzionalna polja ciji elementi sukopije drugih polja. Najcesce ih kreiramo stavljanjem objekata uviticaste zagrade.

Primjer

A=[1 2 3; 4 5 6; 7 8 9];B={ A sum(A) prod(prod(A)) }B{1}B{2}B{3}A(1, 1)=10B{1}

Primijetimo, promijenili smo A, ali se sa B nije nista dogodilo.

MATLAB

Page 25: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer

Primjer

A = cell(5, 1);for n = 1:5A{n} = ones(n);endAA{1}A{2}

MATLAB

Page 26: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Znakovi i tekst

Tekst se unosi u MATLAB koristeci navodnike.z = ’Rezultat’Dobili smo polje od osam znakova. Interno se ti znakovi spremajukao brojevi.a= double(z)b = char(a)

MATLAB

Page 27: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer - znakovi

Primjer

a = [z, ’ u redu’]

b = [z; ’ u redu’]

c = [z; ’normalan’]

d = char(z, ’u redu’, ’jer char sam uredi’,

’(doda svakom redu tako da su redovi iste duljine)’)

e = { z; ’sa cell-array-ima nema problema’;

’Kako to?’ }

length(c)

size(d)

MATLAB

Page 28: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Strukture

Strukture su visedimenzionalna polja u MATLABU, do cijihelemenata se dolazi preko njihovih imena (eng. field designators).Strukture mogu sadrzavati elemente raznih tipova:

Primjer

Kreirajmo strukturu s koja se sastoji od tri polja:

s.ime = Mirko;

s.ocjena = 5;

s.matrica = [1 2 3; 4 5 6];

s

k-ti element strukture dohvacamo preko s(k), a pojedino poljek-tog elementa sa s(k).imepolja

MATLAB

Page 29: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer - nastavak

Primjer

Moguce je doznati da je li nesto element strukture:

isfield( s, ’ime’)

isfield( s, ’prezime’)

Takoder, mozemo dodavati element po element:

s(2).ime = ’Petra’;

s(2).ocjena = 4;

s(2).matrica = [ 7 8 9; 10 11 12 ]

Pregled svih ocjena mozemo dobiti sa [s.ocjena], a varijable saimenima mozemo kreirati sa [A B] = s.imena

MATLAB

Page 30: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Simbolicke varijable

Varijable koje koristimo kod simbolickog izracuna je potrebnokreirati kao x=sym(’x’) ili syms x y .Ukoliko je potrebno kreirati kompleksnu simbolicku varijablukoristimo syms x y real; z = x + y*i.Simbolicku varijablu mozemo zamijeniti sa nekom vrijednostikoristeci subs(f,x,xvrijednost)

Primjer

S=sym(’sin(x)^2+cos(x)^2’);

S

simplify(S)

MATLAB

Page 31: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Kreiranje simbolickih izraza

Simbolicke izraze i varijable kreiramo na dva nacina: definiramosimbolicki izraz odjednom pomocu naredbe sym (kako smo vecpokazali) ili naredbom syms navedemo sve simbolicke varijable, azatim definiramo simbolicki izraz S (bez koristenja sym). U prvomslucaju u radnom prostoru bit ce samo S, dok ce u drugom slucajubiti S, a, x i y.

Primjer

syms a b c ;

A=[a b c;a b c;a b c];

A

sum(A(1,:))

MATLAB

Page 32: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer - deriviranje

Primjersyms x;

f = x^2*sin(x);

diff(f,2)

syms y z;

g = y^2*z+2*z^2*y;

diff(diff(g,y),z)

MATLAB

Page 33: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer - integriranje

Primjersyms x;

f = x*exp(-x);

F = int(f)

syms y a b;

g = y*exp(-y);

G = int(g, y, a, b)

subs(G, {a,b}, [0,10])

MATLAB

Page 34: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer - limes

Primjer

syms x a b;

f = x*(1+a/x)^x*sin(b/x);

limit(f,x,inf)

syms y;

limit(1/y, y, 0)

limit(1/y, y, 0, ’left’)

limit(1/y, y, 0, ’right’)

MATLAB

Page 35: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer - pojednostavljenje izraza

Primjersyms x y;

expand(cos(x + y))

factor(x^3 - y^3)

syms z;

f = (z^2 + 5*z + 6)/(z + 2);

simplify(f)

MATLAB

Page 36: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje

Primjer - jednadzbe

Primjer

S=solve(’x^2+y^2-1=0’,’y=4*sqrt(3)*x^3’)

S.x

S.y

dsolve(’Dy = y + sin(t)’)

dsolve(’Dy = y + sin(t)’,’y(0)=1’)

MATLAB

Page 37: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Skripte i funkcije

Naredbe se mogu unositi jedna po jedna u command windowu ilimozemo napisati niz naredbi u neku datoteku koje onda izvrsimokao i svaku drugu MATLAB funkciju. Za unos niza naredbikoristimo bilo koji editor (najbolje koristiti MATLAB Editor).Postoje dvije vrste programskih datoteka:

Skripte . . . ne primaju input argumente, ne vracaju outputargumente. Koriste se podacima iz radnog prostora

Funkcije . . . primaju input argumente, vracaju outputargumente. Interne varijable su lokalne samo za tu funkciju.

Sadrzaj neke programske datoteke imena nekoime mozemo vidjetinaredbomtype nekoime

MATLAB

Page 38: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Nacin rada

Niz naredbi kojeg zelimo kasnije ponovno pozvati mozemo napisatiu bilo kojem editoru teksta i spremiti u m-datoteku.MATLAB takodder ima svoj editor:Window->Editor

Ako niz naredbi spremimo u datoteku skripta.m, onda ih mozemoredom sve izvrsiti tako da u interaktivnoj konzoli napisemo naredbuskripta. Vazno je da datoteka skripta.m bude ili u trenutnomdirektoriju (Current Folder) ili u putanji (path). Bilo koji direktoriju putanju mozemo dodati preko File->Set Path ...

MATLAB

Page 39: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Primjer

U nekom tekst-editoru unesemoclear; A=fix(rand(3)*10);

B=fix(rand(3)*10);

whos

te spremimo pod imenom primjer.m.Ako sada u konzoli upisemo primjer, Matlab ce potraziti m-file sanavedenim imenom i izvrsiti naredbe zapisane u njemu, sto cerezultirati brisanjem svih postojecih varijabli (clear), stvaranjemdviju slucajnih matrica A i B, te ispisivanjem trenutnih varijabli saprikazom potrosnje memorije svake varijable (whos). Imenam-datoteka ne smiju biti ista kao i imena standardnih naredbi ilifunkcija, te se iste moraju snimiti u neki od foldera koji Matlabpregledava prilikom izvodenja (path).

MATLAB

Page 40: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Petlje1

Unutar skripti dostupne su nam standardne naredbe za grananje, tepetlje:

if uvjet_1

naredba_1;

naredba_2;

elseif uvjet_2

naredba_3;

else

naredba_4;

end

MATLAB

Page 41: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Petlje2

for brojac = vektor-redak

naredba_1;

naredba_2;

end

while uvjet

naredba_1;

naredba_2;

end

MATLAB

Page 42: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

If - then

Ako brojevi x i y nisu preblizu, napravite 1x−y .

Primjer

x = input(’Unesite prvi broj:’);

y = input(’Unesite drugi broj:’);

if abs( x - y ) < 1e-8

’Brojevi x i y su preblizu’

else

z = 1 / ( x - y );

end

z

MATLAB

Page 43: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

If - else if - else

Ispisite da li je unijeti broj pozitivan, negativan ili jednak nuli.

Primjer

broj = input(’Unesite broj: ’);

if broj < 0

disp(’Broj je negativan’)

elseif broj > 0

disp(’Broj je pozitivan’)

else

disp(’Broj je jednak nuli’)

end

MATLAB

Page 44: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Switch

Napisite koji broj od 1 do 5 je unijet. Ako nije od 1 do 5, napisite’Unijeti broj nije ispravan’.

broj = input(’Unesite broj od 1 do 5: ’);

switch broj

case 1

display(’Unijeti broj je 1’)

case 2

display(’Unijeti broj je 2’)

case 3

display(’Unijeti broj je 3’)

case 4

display(’Unijeti broj je 4’)

MATLAB

Page 45: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Switch - nastavak

case 5

display(’Unijeti broj je 5’)

otherwise

display(’Unijeti broj nije ispravan!’)

end

Napomena: naredbu switch koristimo samo ako uvjet kojiprovjerava postize konacan (mali) broj stanja. Ne mozemo gakoristiti ako je uvjet da je stanje vece ili manje od necega.

MATLAB

Page 46: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

For petlja

Primjer

data=[3 9 45 6; 7 16 -1 5];

for n = data

y = n(1) - n(2)

end

MATLAB

Page 47: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

While petlja

Primjer

S=1;

n=1;

while S+(n+1)^2 < 100

n = n + 1;

S = S + n^2;

end;

[n, S]

MATLAB

Page 48: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Napomena

Pogledati:continuebreakreturnerrortry - catch

MATLAB

Page 49: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Nacin rada

Funkcije takoder mozemo spremiti u m-datoteku. Unutar jednem-datoteke moze biti vise funkcija, ali samo prvu (koja mora imatiime kao i datoteka) ce biti moguce pozvati izvana. Ostale funkcijeunutar m-datoteke su pomocne.Unutar skripte nije moguce definirati funkcije.Definicija funkcije:function [x_1, x_2, ...] = ime_fje(p_1, p_2, ...)

x_1, x_2, ... su povratne vrijednosti, a p_1, p_2, ...

parametri funkcije.Funkciju treba spremiti u datoteku ime_fje.m

Funkcija se iz konzole poziva sa:[var_1, var_2, ...] = ime_fje( arg_1, arg_2, ... )

MATLAB

Page 50: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Primjer prvi

function s = sumakvadrata( v )

% Racuna sumu kvadrata svih elemenata vektor-retka v

if( size( v, 1 ) ~= 1 )

error( ’Funkciji nije poslan vektor-redak!’ );

end

s = 0;

for i = 1 : length( v )

s = s + kvadrat( v( i ) );

end

end

function k = kvadrat( x )

k = x .^ 2;

end

MATLAB

Page 51: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Primjer - nastavak

U editoru (Desktop -> Editor)smo prethodni primjer napisali ispremili pod imenom sumakvadrata.m.U interaktivnoj konzoli pokrenemo:v = [2 5 1];

x = sumakvadrata( v );

x

Funkcija kvadrat nije dostupna iz konzole (to je podfunkcija).Funkcija sumakvadrata je glavna funkcija.MATLAB prosljeduje parametre po vrijednosti - dakle, funkcija nemoze promijeniti varijablu koja joj je poslana (stvara se lokalnakopija unutar funkcije).Dio iza % (pa do kraja retka) unutar funkcije je komentar. Mogucega je vidjeti naredbom help sumakvadrata

MATLAB

Page 52: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Primjer drugi

Kreirajmo m-file koji racuna povrsinu trokuta sa stranicama a, b, cpo formuliP =

√(s ∗ (s − a) ∗ (s − b) ∗ (s − c)), 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 gau Matlabu na slijedeci nacin:povrsina(3,4,5)

MATLAB

Page 53: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Zadatak

Napisite skriptni M-file koji trazi od korisnika da upisuje brojevesve dok im je suma manja od 200. Ispisuju se svi unijeti brojevi ikoliko ih je.

suma=0;

br=0;

while suma < 200

br = br+1;

a(br) = input(’Upisi broj:’)

suma = suma + a(br);

end

a

br

MATLAB

Page 54: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Zadatak

Napisite skriptni m-file koji trazi od korisnika da upisuje broj svedok ne upise broj djeljiv sa 7, ispise taj broj i koliko je brojevaupisano.

brojac = 0;

a = 1;

while mod(a, 7) ~= 0

a = input(’Unesite broj: ’);

brojac = brojac + 1;

end

a

brojac

MATLAB

Page 55: MATLAB - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/MPAII/Matlab(dva dijela).pdf · Uvod Matrice Skripte i funkcije Varijable, brojevi, ugradene funkcije Strukture podataka

UvodMatrice

Skripte i funkcije

SkripteNaredbe grananjaFunkcije

Zadatak

Kreirajte funkcijski m-file koji kao ulaznu varijablu prima prirodnibroj i ispisuje taj broj te sve njegove djelitelje.

function [broj, dj]=djelitelji(br)

br2=br; d=2; i=1; dj=[];

while br2>1

if mod(br2, d)==0

br2=br2/d; dj=[dj d];

else

d=d+1;

end

end

br

dj

MATLAB