Sunteți pe pagina 1din 13

F INANCIJSKI K LUB

Osnove MATLAB-a

I STRAIVACKI RAD

Autor: Ivana PAVLEK

e-mail: anavi006@gmail.com

Zagreb, travanj 2012. godine

Sadraj
1 MATLAB za po etnike c 1.1 to je MATLAB? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cilj ovog rada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Uvod u MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Naredbe MATLAB-a 2.1 Uvod u naredbe . . . . . . . . . . . . . . . . . 2.2 Osnovne naredbe . . . . . . . . . . . . . . . . 2.2.1 Koritenje MATLAB-a kao kalkulatora 2.2.2 Osnovne MATLAB-ove funkcije . . . . 2.2.3 Korisne naredbe varijabli . . . . . . . . 2.3 Rad sa simboli kim varijablama . . . . . . . . c 2.4 Funkcije i izrazi . . . . . . . . . . . . . . . . . 2.4.1 M-le . . . . . . . . . . . . . . . . . . 2.5 Rad s vektorima i matricama . . . . . . . . . . 2.6 Uvod u crtanje grafova . . . . . . . . . . . . . 2.7 Rjeavanje jednadbi . . . . . . . . . . . . . . Zaklju ak c 1 1 1 1 1 1 3 3 3 4 4 5 6 7 8 9 10

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

1
1.1

MATLAB za po etnike c
to je MATLAB?

MATLAB je napredni programski jezik rme MathWorks koji se koristi kao razvojno-istraiva ki alat u c industriji, obrazovanju, znanosti, te u ekonomiji. U ekonomiji se koristi kod teorija nancijskog inenjerstva, kao to su teorija rizika ili portfelja. Ime MATLAB dolazi od engleskog "MATrix LABoratory", to bi se moglo prevesti kao "matri ni1 laboratorij". Osim za osnovne ra une koje obi no rjeavamo digitronom, c c c MATLAB slui za napredne ra une, crtanje grafova, te mnoge druge stvari. Dobro je naglasiti da se radi o c profesionalnom alatu, te je stoga potrebno nau iti sluiti se njime, to zna i da treba nau iti MATLAB jezik c c c ili M-Code. Vie od 400 000 tehni kih profesionalaca u svjetski poznatim poduze ima oslanja se na ovaj c c program, pa bi moglo biti korisno provjeriti zato je on toliko neophodan.

1.2

Cilj ovog rada

Cilj ovog rada je po etna podloga zainteresiranima za daljnje koritenje. Ovaj rad takoder moe sluiti c i kao kratki preglednik naredbi iskusnijim korisnicima.

1.3

Uvod u MATLAB

Ulaskom u MATLAB otvara se prozor kao na slici 1 . Nakon ulaska u program2 u podru ju 1 (eng. c Command window), koje je rezervirano za pisanje naredbi, pojavljuje se , to zna i da MATLAB nakon c tog znaka o ekuje unos nove naredbe. Svaka naredba mora zavriti s Enter . c Ukoliko se neka naredba predugo izvrava mogu e ju je prekinuti sa Ctrl + C . Ako treba ponovo c izvriti naredbu koja je prethodno navedena, koristi se 3 kako bi se do nje dolo i zatim pretisne ponovo Enter . Alternativno, pronade se u kodu naredba koja se eli ponoviti, ozna i i pretisne F9 . c U podru ju 2 (eng. Workspace) nalazi se popis varijabli4 koje su se koristile, kao i osnovne informacije c o njima. U podru ju 3 (eng. Command history) se nalazi povijest svih naredbi. c

2
2.1

Naredbe MATLAB-a
Uvod u naredbe

Za po etak, ako se upie naredba k=2, dobiva se: c >> k=2 k = 2 >> Sada je u podru ju 2 vidljivo da je denirana nova varijabla k koja ima vrijednost 2. Uz jo neke inc formacije5 o toj varijabli moe se primijetiti da joj je veli ina 1x1. To je upravo zbog toga to je glavni c element u MATLAB-u matrica, te on i obi an broj tretira kao tabelu brojeva (koja se u ovom slu aju sastoji c c
Po samom nazivu se vidi da je matrica (=matemati ki pojam koji se najjednostavnije opisuje kao tabela brojeva) od izri itog c c zna aja za ovaj programski jezik, to ce se kasnije detaljnije prou iti. c c 2 kao i nakon svake izvedene naredbe 3 UP-ARRAY KEY 4 pojam koji se u kontekstu programiranja opisuje kao ime kojem je pridruena vrijednost; npr. ako iza zadamo naredbu k=2, tada ce se k nazivati varijabla (koja ima trenutnu vrijednost 2) 5 koje su sve informacije vidljive ovisi o verziji MATLAB-a
1

Slika 1: MATLAB-ov prozor od jednog retka i jednog stupca). Ako se sada upie varijabla k MATLAB prepoznaje koja joj je pridruena vrijednost. >> k k = 2 Kada bi se napisalo neto to je nedenirano, program bi javio greku. >> b ??? Undefined function or variable b. Medutim, ako se uz naredbe ele pisati i komentari kako bi se kasnije lake snalazilo u kodu to se moe stavljanjem znaka % ispred komentara. Dulji komenari se mogu raditi pomo u %{...%}.6 c >> k=5 %k je varijabla za temeljni kapital od 5mlrd kn k = 5 >>%{definirana varijabla moe poprimiti drugu vrijednost nakon ega joj se prijanja vrijednost brie%} c Za nabrajanje vie naredbi koristi se zarez, a ako se ne eli vidjeti ispis naredbe koristi se to ka-zarez. c >> a=12, B=4; C=(a-B)+40-a/B*10 a = 12 C = 18 >>
6

pri pisanju MATLAB odmah prepoznaje komentar i ozna ava ga zelenom bojom c

2.2
2.2.1

Osnovne naredbe
Koritenje MATLAB-a kao kalkulatora Radi lakeg snalaenja od sada ce primjedbe biti ve inom zapisane u obliku MATLAB komentara. c

>> 7+8/2 %Prvo se izvrava 8/2 ans = 11 >> 5^3/2 %Prvo se izvrilo 5^3, a zatim /2 ans = 62.5000 >> 285/9 %Ako se eli vie ili manje decimala u ispisu, ispred ove naredbe se stavlja odgovarajua naredbaa c ans = 31.6667 >> 0.7854-(0.7854)^3/(1*2*3)+0.785^5/(1*2*3*4*5)-(0.785)^7... /(1*2*3*4*5*6*7) %{ako se utipka ... i pretisne <ENTER> to je znak za nastavak pisanja naredbe; korisno kod dugih naredbi%} ans = 0.7071 2.2.2 Osnovne MATLAB-ove funkcije

>> sqrt(81) %argument funkcije korijen je broj ans = 9 >> sqrt(50+14*sqrt(169)) %argument je izraz ans = 15.2315 >> nthroot(80,5) %nthroot(x,n) n-ti korijen realnog broja x ans = 2.4022 >>exp(5) %exp(x) eksponencijalna funkcija s argumentom x ans = 148.4132 >>abs(-25) %apsolutna vrijednost ans = 25 >>factorial(4) %za n pozitivan integera faktorijel je n!b
format long (daje 15 decimala), format bank (za 2 decimale), format short (za 4 decimale; on je i po defaultu, pa ako se eli da se ispis vrati na ono prije promjene upie se to) a U MATLAB-u postoje razli ite vrste numeri kih varijabli: integer - cijeli broj, oat (eng. single (32-bit) precision oatingc c point values) - realni brojevi u znanstvenoj notaciji to nosti do otprilike 7 znamenki, double (eng. double (64-bit) precision oatingc point values) - sli no kao oat, samo to nosti do otprilike 15 znamenki c c b po deniciji faktorijela: n!=n*(n-1)*...*3*2*1
a

ans = 24 >>log(3) %prirodni logaritam (s bazom e)a ans = 1.0986 >>sin(pib /2 %funkcija sinus; slino za cos(x),tan(x),cot(x)c c ans = 1 >> sign(-5) %{vraa predznak (ako broj strogo pozitivan, vraa c c 1; ako strogo negativan, vraa -1, a ako jednak nula vraa 0)%} c c ans = -1 >> round(285/9) %zaokruuje na najblii integerd ans = 32 >> rem(13,5) %rem(x,y) vraa ostatak dijeljenja x sa y c ans = 3
a b

osim te imamo jo naredbe: log10(x) za logaritam baze 10 i log2(x) za logaritam baze 2 ; sli no, u MATLAB-u se simbol i koristi za 1, inf za , eps za malu razliku 2(52) c c Inverzne trigonometrijske: asin(x), acos(x), atan(x), acot(x); hiperbolne: sinh(x), cosh(x), tanh(x), i coth(x) d sli no x(x) zaokruuje prema nuli, ceil(x) prema beskona no, a oor(x) prema minus beskona no c c c

2.2.3

Korisne naredbe varijabli

>>clear %{brie sve do sada definirane varijable; korisno kada se poinje novi zadatak%} c >> x=2; y=3; >>clear x y %Brie samo variable x i y iz memorije >> z=5; >>who %ispisuje sve varijable koje su do sada definirane Your variables are: z >>whos %do sada definirane varijable uz dodatne informacije Name Size Bytes Class Attributes z 1x1 8 double

2.3

Rad sa simboli kim varijablama c

MATLAB po defaultu koristi double za prikaz realnih brojeva, to je vidljivo i iz sljede eg primjera. c >> cos(pi/2) ans = 6.1232e-17 Poto je rije o znanstvenoj notaciji, ovo je jednako kao da pie 6.1232 1017 . Medutim, poznato je c da zapravo vrijedi cos(/2) = 0. Do neto nosti dolazi zbog toga to kada se utipka pi u MATLAB-u je to c procjena do 15 znamenki to nosti, pa to nije egzaktna vrijednost od . Kako bi se dolo do to nog odgovora c c potrebno je uvesti simboli ke varijable. To se postie naredbom sym. c

>> cos(sym(pi/2)) ans = 0 Navodnici u pi/2 kod sym(pi/2) kreiraju string koji se sastoji od znakova pi/2, a sym pretvara string u simboli ku varijablu. c Naredbe sym i syms su ekvivalentne u smislu da je syms x isto kao da pie x = sym( x ). >> vpa(pi/2, 50) %naredba za vidjeti prvih 50 zamenki ans = 1.4142135623730950488016887242096980785696718753769

2.4

Funkcije i izrazi

U MATLAB-u je razlika izmedu izraza i funkcija veoma bitna. Striktno govore i, ako se denira c 3 1, tada je f funkcija, dok su f (x) i x3 1 izrazi koji koriste varijablu x. U MATLAB-u, f (x) = x izraz moe biti string ili simboli ka varijabla. c >> f = x^3 - 1; >> f(7) %umjesto 342 se dobije 1 ans = 1 Rezultat je kriv zbog toga to ovdje f nije funkcija nego string, pa f(7)vra a sedmi znak izraza x^3 c - 1, to je 1. Tako bi se za f(5) dobilo -, dok bi f(-1) javilo greku. U MATLAB-u postoje tri na ina c deniranja funkcije, koriste i @, inline ili M-le. c >> f1 = @(x) x^3 - 1 f 1= @(x) x^3 - 1 >> f2 = inline(x^3 - 1, x) f2 = Inline function: f2(x) = x^3 - 1 >> f1(7), f2(7) %sada se uistinu dobije toan rezultat c ans = 342 ans = 342 Vano je primijetiti da se uvijek mora navesti u odnosu na koju varijablu se funkcija odnosi. Primjerice, ako bi se zadala funkcija sa vie varijabli: >> g1 = @(x, y) x^2 + y^2; g1(1, 2) g2 = inline(x^2 + y^2, x, y); g2(1, 2) ans = 5 ans = 5 Funkcije jednako dobro rade kada se umjesto brojeva pozivaju vektori. >> g([1 2], [3 4]) %daje vrijednosti u tokama (1, 3) i (2, 4) c ans = 10 20

2.4.1

M-le

M-le dozvoljava da se odredene naredbe u MATLAB-u spreme i pokre u samo jednom naredbom. c Novi M-le se moe dobiti sa Ctrl + N ili F ile N ew Script. Tada se otvori prozor kao na slici 2. Ako se tu na primjer utipka

Slika 2: M-le format long x = [0.1, 0.01, 0.001]; y = sin(x)./x %stavlja se toka ispred / jer sin vraa vektor c c i spremi pod Zad na isto mjesto kao to je na slici 1 lokacija, to je u ovom slu aju: c C : \U sers\LittleLap\Documents\M AT LAB 7 . Sada ako se u po etnom prozoru (onom na slici 1) upie ime pod kojim je spremljen M-le dobiti ce se uz c jednu naredbu sve to je napisano u M-leu. >>Zad y = 0.998334166468282 0.999983333416666 0.999999833333342 Prednost ovog pristupa je da se isti kod moe pozivati vie puta, bez da se ponovo sve pie. Osim prethodnih obi nih script M-leova postoje i function M-leovi. Kod njih se mogu specicirati ulazne c i izlazne varijable. Tako bi se prethodni M-le mogao napisati: function y = limes_sinusa(c) %ime M-file funkcije je limes_sinusa format long x = linspace(0.1,0.5,c); y = sin(x)./x; %gdje linspace(a,b,n) vraa vektor redak koji se sastoji od n toaka c c (zajedno sa a i b) meusobno jednake udaljenosti d npr.linspace(1,5,5) daje 1 2 3 4 5
7

Koja je lokacija ovisi o ra unalu kojim se slui, a moe se promijeniti ako se pretisne . . . s desne strane c

Ako se taj M-le spremi pod nazivom limes_sinusa8 tada se funkcija moe pozvati s proizvoljnom varijablom c: >>limes_sinusa(3) ans = 0.998334166468282 0.985067355537799 0.958851077208406 Ukoliko bi se funkcija denirala za vie izlaznih varijabli, npr. function [y,x] = limes_sinusa(c) tada bi se pozivala s [y,x] = limes_sinusa(3)9

2.5

Rad s vektorima i matricama

>> A=[1 2 3;4 5 6;7 8 9] %Matricu uitavamo redak po redak tako c da ulazak u novi stupac odvojimo razmakom, a u redak s ; A = 1 2 3 4 5 6 7 8 9 >> A(1,1) %element matrice A na mjestu (1,1) ans = 1 >> A(:,1) %operator (:) se interpretira kao svi elementi te dimenzije - npr. A(:,:) bi oznaavalo cijelu matricu A c ans = 1 4 7 >> A %operator () slui za transponiranje matrice A ans = 1 4 7 2 5 8 3 6 9 >>length(A) %funkcija length vraa veu dimenziju, a poto su c c ovdje obje dimenzije 3, vraa 3- isto bi vratio i za length(A) c ans = 3 >>size(A) %funkcija size vraa dimenzije retka i stupca c ans = 3 3 >>A*A %operatorom (*) se standardno mnoe matrice ans = 14 32 50 32 77 122 50 122 194
8 9

MATLAB ce sam ponuditi ime funkcije kao prijedlog za spremanje pod tim nazivom sli no sa vie ulaznih varijabli c

>>A.*A %operator (.) se openito koristi za operacije po c elementima: A(i,j)*A(i,j);slino vrijedi i za (./),(.^),(.\) c ans = 1 8 21 8 25 48 21 48 81 >> sum(A) %funkcija suma vraa zbroj elemenata stupaca matrice c ans = 12 15 18
a

sli no rade funkcije min, kurtosis, std, var, skewness, mean dok sqrt, log, exp rade po elementima matrice c

2.6

Uvod u crtanje grafova


funkcije na [-2 2] za vektore iste duljine vie gafova na istoj

>> ezplot(x^2 + x + 1, [-2 2]) %crtanje >> X = -1:0.01:2; plot(X, X.^2)a %plot je >> ezplot(exp(-x), [0 10]) %{za crtanje slici koriste se hold on i hold off%} >> hold on >> ezplot(sin(x), [0 10]) >> hold off >> title exp(-x) i sin(x)b .%ovako se na
a b

graf dodaje njegov naslov

slike ovih dviju naredbi je mogu e vidjeti na slici 3 c slika ova dva grafa nalazi se na slici 4 lijevo

Slika 3: Prvi graf s ezplot i plot Crtanje nekoliko grafova na istoj slici je s plot puno jednostavnije. >> X = 0:0.01:10; plot(X, exp(-X), X, sin(X))a
a

slika ova dva grafa nalazi se na slici 4 desno

Slika 4: Dva grafa zajedno s ezplot i plot

2.7

Rjeavanje jednadbi

Jednadbe se mogu rjeavati sa solve ili fzero. >> solve(x^2 - 2*x - 4 = 0) ans = 1 - 5^(1/2) 5^(1/2) + 1 Dobiju se dva rjeenja 1 5 i 5 + 1. Ukoliko se eli dobiti numeri ko rjeenje moe se utipkati c double(ans) ili vpa(ans): >> double(ans) ans = -1.2361 3.2361 >> vpa(ans) %ako se ne specificira broj znamenki, on je 32 ans = -1.2360679774997898050514777423814 3.2360679774997898050514777423814 U solve se takoder mogu koristiti simboli ke varijable, ali tada se smatra da je druga strana jednakosti c 2 3x = 7 sve se treba prebaciti na jednu stranu kako bi na drugoj bila nula. nula. Na primjer, za x >> syms x >> solve(x^2 - 3*x + 7) ans = 3/2+1/2*i*19^(1/2) 3/2-1/2*i*19^(1/2) >> solve(2*x - log(y) =1, y) %{ako postoje 2 varijable mora se rei c po kojoj se rjeava%} ans = exp(2*x - 1) >> [x, y] = solve(x^2 - y = 2, y - 2*x = 5)%vie jedn. za rjeavanje x = 1+2*2^(1/2) 1-2*2^(1/2)

y = 7+4*2^(1/2) 7-4*2^(1/2) >> solve(exp(-x) = sin(x)) %nekad ima vie rjeenja i ne dobiju se sva ans = -2.0127756629315111633360706990971 +2.7030745115909622139316148044265*i Rjeenje je kompleksni broj. Iako je to to no rjeenje, postoje i realna rjeenja. To je vidljivo i na slici 4 c jer se grafovi sijeku u vie od jedne to ke. Rjeenje se moe na i pomo u fzero koja aproksimativno trai c c c rjeenje blizu zadane vrijednosti. Zbog toga bi bilo dobro nacrtati prije graf kako bi se vidjelo u blizini koje to ke se nalazi rjeenje. c Kako bi se nalo rjeenje blizu x = 0.5, napraviti ce se funkcija ciju nulto ku se trai i koristiti fzero. c >> h = @(x) exp(-x) - sin(x); >> fzero(h, 0.5) ans = 0.5885 Iz grafa je vidljivo da se drugo rjeenje moe dobiti s fzero(h, 3).

Zaklju ak c

Ovim radom se pokualo na relativno lagan na in prezentirati neke uvodne MATLAB-ove funkcije. Zbog c toga to je MATLAB veoma mo an program veoma je teko u nekoliko stranica obuhvatiti sve njegove c prednosti. Ipak se nadam da ce ovaj rad biti od koristi po etnicima, kao i iskusnim korisnicima, te da ce ih c potaknuti da jo dublje udu u njegovu strukturu.

10

Literatura
[1] K. Sheppard, MFE MATLAB Introduction, University of Oxford, 2007. [2] A. Gilat, MATLAB An Introduction with Applications, 4th ed., Wiley, 2011. [3] B. R. Hunt, R. L. Lipsman, J. M. Rosenberg, K. R. Coombes, J. E. Osborn, G. J. Stuck, A Guide to MATLAB for Beginners and Experienced Users, 2nd ed., Cambridge University Press, 2006. [4] S. Attaway, MATLAB: A Practical Introduction to Programming and Problem Solving, 2nd ed., College of Engineering, Boston University, 2009.

Popis slika
1 2 3 4 MATLAB-ov prozor . . . . . . M-le . . . . . . . . . . . . . . Prvi graf s ezplot i plot . . . . . Dva grafa zajedno s ezplot i plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 6 8 9

S-ar putea să vă placă și