Matlab Manual

April 12, 2019 | Author: Mikela Ljermontova | Category: N/A
Share Embed Donate


Short Description

Download Matlab Manual...

Description

��������� ��������� ������ �� ����� ������� ����� �� ���������� � ������

���� � ������ ������� ���

Karmen Rivier, Arijana Burazin Mišura 1.11.2008

����

Matlab je interaktivni sistem namijenjen izvoenju numeričkih izračuna. Omogućava nam jednostavan rad s matricama, crtanje funkcija i podataka, implementaciju algoritama i povezivanje s programima pisanim u drugim jezicima. Prvu verziju razvio je 1970. godine Cleve Moler, šef katedre katedre za informatiku na University of New Mexico. Danas je Matlab komercijalni proizvod tvrtke Mathworks i ima više od milion korisnika.

Pokretanje Na Windows sistemima Matlab pokrećemo dvostrukim klikom na Matlab ikonu na desktopu ili biranjem Matlab-a u Start izborniku. Daljnje naredbe se ukucavaju u komandnoj liniji označenoj sa >>. Odabirom izbornika File/Preferences možete promijeniti default postavke Matlab-a (font, boju,...).

Help/Pomoć Ukoliko vam je potrebna pomoć tokom rada, pozivom help help dobit ćete detaljan opis help funkcije. Ako vam je potrebna pomoć za neko točno odreeno poglavlje, npr.general, unesete u komandnu liniju help general . S obzirom na veliki obim ispisanih informacija, ukoliko želite da one budu prikazane jedna po jedna, prvo morate unijeti naredbu more on, pa tek onda help  general . Nakon toga, biranjem bilo koje tipke, na ekranu dobivate idući slijed informacija. Naredbom helpwin ili helpdesk otvara se interaktivni help prozor. Drugi način pozivanja help prozora je biranjem izbornika Help/MATLAB Help.

�� ��������� ���������� ���������

Brojevi Matlab razlikuje nekoliko različitih vrsta brojeva: Cjelobrojni npr. 674, -674 Realni 1.234 Kompleksni 3+3i te „posebni“ ili „specijalni“ brojevi:  Inf   - beskonačno (npr. rezultat koji dobijemo kad broj dijelimo s 0)  NaN  –  – „Not a number“ (npr. rezultat kod 0/0)



eps – strojni epsilon, ocjena greške zaokruživanja  realmin - vrijednost najmanjeg realnog broja  realmax - vrijednost najvećeg realnog broja i – imaginarna jedinica (j takoer ima vrijedost imaginarne jedinice)  pi - π    ans - automatski poprima vrijednost izraza kad izraz nije pridružen varijabli ( o tome više

u poglavlju Varijable)

Formati Korisnik sam bira u kojem formatu će Matlab prikazati brojeve. To utječe isključivo na prikaz broja a ne i na način na koji su izračuni izvršeni i pohranjeni (sve kalkulacije Matlab izvodi koristeći dvostruku preciznost – double precision način zapisa). Npr. pogledajmo kvocijent 4/3 prikazan u različitim formatima: • • • • • •

 format short   format short e   format long   format long e   format rational    format bank 

1.3333 1.3333e+000 1.33333333333333 1.333333333333333e+000 4/3 1.33

Eksponencijalni zapis (formati koji koriste 'e' u zapisu) je uglavnom korišten za prikaz vrlo velikih, odnosno vrlo malih brojeva: -1.34567e+04=-13456.7 -1.34567e-01=-0.134567 Naredba format compact briše prazne linije, dozvoljavajući tako prikaz više informacija na ispisu. Ukoliko prazne linije želimo vratiti nazad, to radimo naredbom format loose.

Aritmeti čke operacije Pogledajmo kako Matlab koristimo kao kalkulator.

Aritmeti čka operacija Zbrajanje oduzimanje množenje dijeljenje potenciranje

Simbol + *  / ili \ ^



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

Matlabov zapis

Vrijednost

4 + 8 / 2 + 2

10

(4 + 8) / 2 + 2

8

(4 + 8) / (2 + 2 )

3 6

4 + 8 / (2 + 2)



Logički i relacijski operatori Operator  jednako nije jednako manje, manje ili jednako veće,veće ili jednako i ili ne

Simbol == ~= = & | ~

Primjer upotrebe: >> 5> 5>13 ans = 0 Unošenje izraza 5> x=7; >> x > 3 | x == -3 ans = 1

Varijable >> 3-2^4 ans = -13 >> ans*5 ans = -65 Rezultat prve kalkulacije Matlab označava kao ans i koristi ga u drugoj kalkulaciji gdje je njegova vrijednost promijenjena i sad iznosi -65. Prema tome, ans je redefinirana varijabla u koju Matlab smješta trenutnu vrijednost izračuna ukoliko korisnik ne specificira drukčije. Za pohranjivanje vrijednosti preporučljivo je definirati vlastite varijable. �

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



�� �������� ���� �������� ��������� � ���������� ������������

Osnovni objekt u Matlabu je matrica, kao što i samo ime kaže (MATrix LABoratory). Matrica m × n  je pravokutna tabela brojeva koje se sastoji od m redaka i n stupaca. U matematici matrice obično prikazujemo u okruglim ili uglatim zagradama. Matlab čak i skalare tretira kao matrice (tipa 1 × 1 ). Da bi u Matlab unijeli matricu, potrebno je: - koristiti uglate zagrade [] - elemente retka razvojiti zarezima , ili praznim mjestom - retke razdvojiti točka zarezom ; ili preći u novi red (tipka enter)

Matrice Na primjer za m = 2; n = 3 imamo matricu tipa 2 × 3  kao što je naredna A =[5 7 9 1 -3 -7] Da bismo unijeli tu matricu u Matlab, tipkamo red po red. >> A = [5 7 9 1 -3 -7] A= 579 1 -3 -7 Redovi mogu biti odvojeni i točka zarezom a elemente možemo razdvojiti i zarezom: >> B = [-1 2 5; 9 0 5] B= -1 2 5 905 >> C = [0, 1; 3, -2; 4, 2] C= 01 3 -2 42 Dvotočka : (engl. colon) vrlo je koristan znak u MATLAB-u. Evo samo nekih primjera njenog korištenja: Ako npr. drugi redak prije definirane matrice A želimo pospremiti u matricu D, koristimo naredbu D=A(2,:) >> D=A(2,:) D= 246 �

Slično, treći stupac matrice A dat će nam naredba E=A(:,3) >>E=A(:,3) E= -1 6 Pogledajte što dobijemo idućom naredbom: >> E=A(2,2:3) E= -3 -7

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



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



Matrične funkcije ugra ene u Matlab Funkcija zeros(m,n) eye(n) diag(X) rank(A) size(A) size(A,1) size(A,2) sum(A)

Argumenti m, n su prirodni brojevi n je prirodni broj X je jednoredna ili jednostupčana matrica A je proizvoljna matrica A je proizvoljna matrica A je proizvoljna matrica A je proizvoljna matrica A je proizvoljna matrica

prod(A)

A je proizvoljna matrica

det(A) inv(A)

A je kvadratna matrica A je kvadratna matrica

Što radi Generira nul-matricu od m redaka i n stupaca. Generira jediničnu matricu reda n. Generira dijagonalnu matricu čiji su elementi redom elementi od X. Računa rang matrice A. Ispisuje broj redaka i stupaca matrice A. Ispisuje broj redaka matrice A. Ispisuje broj stupaca matrice A. Ako je A jednoredna ili jednostupčana, zbraja sve elemente od A, a ako nije, zbraja ih po stupcima. Ako je A jednoredna ili jednostupčana, množi sve elemente od A, a ako nije, množi ih po stupcima. Računa determinantu matrice A. Računa inverznu matricu matrice A.

Pogledajmo primjere korištenja nekih od navedenih funkcija: >> A = [5 7 9; 1 -3 -7]; >> size(A) ans = 2 3 >> A' ans = 5 1 7 -3 9 -7 Dijagonalnu matricu umjesto unošenja svih elemenata možemo generirati i na idući način: >> d = [-3 4 2]; D = diag(d) D= -3 0 0 0 4 0 0 0 2 U slučaju da funkciju diag primjenimo na matricu, dobit ćemo njene dijagonalne elemente: >> diag(A) ans = 5 -3 �

Funkcija sum zbraja elemente po stupcima >> sum(A) ans = 6 4 2 U idućem slučaju, dvostrukom primjenom funkcije sum dobivamo sumu svih elemenata matrice (pogledajte još jednom definiciju funkcije sum): >> sum(sum(A)) ans = 12

Aritmeti čke operacije s matricama Operacija Zbrajanje matrica Oduzimanje matrica Množenje matrice brojem Množenje matrice matricom “Desno dijeljenje” matrica “Lijevo dijeljenje” matrica Potenciranje matrice Transponiranje matrice Množenje elemenata dviju matrica član po član

Znak + * * / \ ^ ‘ .*

“Desno” dijeljenje elemenata dviju matrica član po član

./

“Lijevo” dijeljenje elemenata dviju matrica član po član

.\

Potenciranje elemenata dviju matrica član po član

.^

Napomena Matrice moraju biti istih dimenzija. Matrice moraju biti istih dimenzija. Matrice moraju biti ulančene. Matricu ne možemo dijeliti matricom! Matrica mora biti kvadratna. Matrice moraju biti istih dimenzija. S lijeve ili desne strane znaka može biti i broj. Matrice moraju biti istih dimenzija. S lijeve ili desne strane znaka može biti i broj. Matrice moraju biti istih dimenzija. S lijeve ili desne strane znaka može biti i broj. Matrice moraju biti istih dimenzija. S lijeve ili desne strane znaka može biti i broj.

Posebno obratite pažnju na operacije koje počinju točkom. Zovemo ih „operacije po pozicijama“. One uglavnom nemaju matematički ekvivalent osim u nekim posebnim slučajevima. Pojasnit ćemo pobliže neke od navedenih operacija, odnosno ukoliko je moguće, naći ćemo njihove matematičke ekvivalente: ��

1. množenje, dijeljene i potenciranje vektora Uzmimo dva vektora u i v jednake duljine n. Neka je u retčani a v stupčani vektor. Skalarni produkt vektora definira se kao skalar dobiven na sljedeći način: uv =

n

∑1 u v i

i

i=

4 Neka je u=[1 2 3] a v= 5  . Pogledajmo čemu je jednako uv: 6 uv = 1 ⋅ 4 + 2 ⋅ 5 + 3 ⋅ 6 = 4 + 10 + 18 = 32

U Matlabu to možemo izra čunati ovako: >> x=[1 2 3]; y=[4; 5; 6]; >> x*y ans = 32 Gore definirane vektore mogli bismo pomnožiti i ovako: u ⋅ v = u1v1 u 2 v 2 u 3 v3

u n vn

Rezultat je vektor jednake duljine kao i vektori u i v, i dobiven je množenjem odgovaraju ćih elemenata dvaju vektora. Odgovaraju ći operator u Matlabu je  .* a za vektore iz prethodnog izra čuna, odgovarajući umnožak dobili bi transponiraju ći jedan od vektora, kako bi dobili vektore istog tipa (za dimenzije znamo da su jednake): >> x.*y' ans = 4 10 18 >> x'.*y ans = 4 10 18 Što se tiče dijeljenja dvaju vektora, ne postoji matemati čki ekvivalent te operacije. Me utim, u Matlabu je za vektore iste duljine i istog tipa operacijom ./  definirano dijeljenje odgovaraju ćih elemenata. Pobliže: u. / v = u1 / v1 u 2 / v 2

u n / vn

��

Odnosno za vektore x i y: >> x./y' ans = 0.2500 0.4000 0.5000 Ukoliko želimo kvadrirati elemente vektora u, to možemo napraviti na dva na čina, ili kao u.*u ili  jednostavnije u.^2 >> x.*x ans = 1 4

9

>> x.^2 ans = 1 4

9

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

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

��

Ponekad je prakti čno veliku matricu generirati uz pomo ć prethodno definiranih manjih matrica: >> D=[1 2; 3 4; 5 6]; X=[7; 8; 9]; >> E=[D X] E= 1 2 7 3 4 8 5 6 9 Na ovaj način matrica X dodana je „pored“ matrice D, a u idu ćem primjeru matrice su postavljene „jedna iznad druge“: >> Y=[10 11]; >> F=[D; Y] F= 1 2 3 4 5 6 10 11 Sada ćemo pokazati kako generirati tablicu koja će nam služiti za usporedbu vrijednosti dviju funkcija za odreeni raspon vrijednosti argumenta: >>x = (0:0.1:0.5)'; [x 4*sin(3*x) 3*sin(4*x)] ans = 0 0.1000 0.2000 0.3000 0.4000 0.5000

0 0 1.1821 1.1683 2.2586 2.1521 3.1333 2.7961 3.7282 2.9987 3.9900 2.7279

�� ���������� ��������� ���������� ������

Zajedni čko obilježje svih funkcija je da se argument uvijek piše u zagradi. Tabela nekih matemati čkih funkcija definiranih u Matlabu:

Ime Sin

Značenje Sinus

Poziv sin(3*pi)

Cos

Kosinus

cos(2*pi/3)

��

Rezultat ans = 3.6738e-016 ans = -0.5000

Tan

Tangens

tan(pi/4)

Asin

arkus sinus

asin(1)

Acos

arkus kosinus

acos(1)

Atan

arkus tangens

atan(1)

Sinh

hiperbolni sinus

sinh(0)

Cosh

hiperbolni kosinus

cosh(0)

Tanh

hiperbolni tangens

tanh(-3)

asinh

area sinus hiperbolni

asinh(1)

acosh

area kosinus hiperbolni

acosh(1)

atanh

area tangens hiperbolni

atanh(-0.9951)

Sqrt

kvadratni (drugi) korijen

sqrt(2)

Exp

eksponencijalna funkcija (baza e) logaritamska funkcija (baza e)

exp(1)

Log

log(1)

log10

logaritamska funkcija (baza 10)

log10(0)

Abs

apsolutna vrijednost (modul)

abs(3-4*i)

Real

realni dio kompleksnog broja

real(-3+2*i)

Imag

imaginarni dio kompleksnog broja kompleksno konjugiranje

imag(-3+2*i)

Conj Round

zaokruživanje broja na najbliži cijeli broj

conj(-3+2*i) round(2.3) round(3.5)

��

ans = 1.0000 ans = 1.5708 ans = 0 ans = 0.7854 ans = 0 ans = 1 ans = -0.9951 ans = 0.8814 ans = 0 ans = -3.0046 ans = 1.4142 ans = 2.7183 ans = 0 Warning: Log of zero ans = -Inf ans = 5 ans = -3 ans = 2 ans = -3.0000 - 2.0000i ans = 2 ans = 4

Trigonometrijske funkcije One poznate Matlab-u su  sin , cos , tan i njihov argument mora biti u radijanima. >> x = 5*cos(pi/6), y = 5*sin(pi/6) x= 4.3301 y= 2.5000 U idućem primjeru pogledajte pogrešnu a zatim i ispravnu upotrebu funkcije sinus: >> sin 1 ans = -0.9538 >> sin(1) ans = 0.8415 Matlab nam na upit sin 1 vra ća odgovor -0.9538 i ne upozorava nas na pogrešan unos. Funkcije inverzne trigonometrijskim funkcijama su  asin , acos , atan i njihov rezultat je izražen u radijanima. >> acos(x/5), asin(y/5) ans = 0.5236 ans = 0.5236 >> pi/6 ans = 0.5236

Ostale elementarne funkcije ( sqrt, exp, log, log10) >> x = 9; >> sqrt(x),exp(x),log(sqrt(x)),log10(x^2+6) ans = 3 ans = 8.1031e+03 ans = 1.0986 ans = 1.9395 ��

exp(x)  označava eksponencijalnu funkciju exp(x) = e

x

 i njen inverz je logaritamska funkcija log.

>> format long e, exp(log(9)), log(exp(9)) ans = 9.000000000000002e+00 ans = 9 >> format short Ovdje vidimo malu grešku zaokruživanja u prvom izra čunu. Funkcija log(x) je oznaka za matemati čku funkciju ln x, dok log10  izračunava logaritam po bazi 10. Postoji još i funkcija log2 koja označava logaritam po bazi 2.

Polinomi U Matlabu polinome prikazujemo pomo ću vektora čiji su elementi koeficijenti polinoma zapisani u odgovaraju ćem slijedu, npr. polinom 5 x 4 − x 3 + 7 x + 5  bit će prikazan vektorom [5 -1 0 7 5]. Vrijednost polinoma izra čunava se koriste ći funkciju polyval(). Tako npr. ako želimo izra čunati vrijednost prije spomenutog polinoma u x=3, to radimo ovako: >>p=[5 -1 0 7 5]; >>val=polyval(p,3) val = 404 Nul-točke, odnosno korijeni polinoma nalaze se korištenjem funkcije  roots: >> roots(p) ans = 0.8053 + 1.0129i 0.8053 - 1.0129i -0.7053 + 0.3160i -0.7053 - 0.3160i Prethodni polinom očito je imao dva para konjugirano kompleksnih nul-to čaka. Ukoliko polinome želite zbrojiti ili oduzeti, morate voditi ra čuna da matrice koje ih reprezentiraju moraju biti istog tipa. U protivnom, zbrajanje, odnosno oduzimanje nije mogu će izvršiti i Matlab će vas upozoriti na pogrešku. Recimo da prethodnom polinomu želimo dodati polinom q=2x-3.

��

>>q=[2 -3]; >>p+q ??? Error using ==> + Matrix dimensions must agree. Meutim, ako polinom q „lažno“ prikažemo polinomom četvrtog stupnja, riješit ćemo problem: >>q1=[0 0 0 2 -3] >>p+q1 ans = 5

-1

0

9

2

Za množenje dva polinoma, koristimo funkciju  conv: >>conv(p,q) ans = 10 -17

3 14 -11 -15

A za dijeljenje, funkciju  deconv koja osim rezultata dijeljenja vra ća i ostatak: >> [d, R] = deconv(p,q) d= 2.5000 3.2500 4.8750 10.8125 R= 0 0 0 0 37.4375

Petlje/Naredbe kontrole toka Ponekad želimo neku naredbu ili niz naredbi ponoviti odre eni broj puta. Ovisno o tome da li unaprijed znamo koliko ćemo puta ponoviti naredbu ili se ponavljanje nastavlja dok god je ispunjen odreeni uvjet, koristimo neku od dolje navedenih naredbi: Naredba for Naredba for služi za ponavljanje odre ene naredbe ili niza naredbi unaprijed zadani broj puta. Sintaksa for – petlje:  for   varijabla=izraz1:izraz2:izraz3

naredbe end

varijabla (brojač petlje) poprima vrijednosti od izraz1 do izraz3 s korakom izraz2. (Ako je korak 1, ne moramo ga pisati)

��

Iduća petlja računa vrijednosti funkcije sin >> for n = 1:6 sin(n*pi/6) end

nπ  

6

 za n=1,2,3,4,5,6 :

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

while izraz naredbe end

Za izlaz iz petlje ( for i while) često se koristi naredba  break. ��

Primjer: koja je najve ća vrijednost n-a za koju je suma 1+2+3+...+n < 100? >> S = 1; n = 1; >> while S+(n+1)> [S, n] ans = 91 13 Naredba if...then...else...end  Omogućava nam izvršavanje razli čitih komandi ovisno o istinitosti logi čkog testa. if  izraz

naredbe end

← osnovni oblik naredbe if 

prošireni oblik naredbe if  →

if izraz naredbe else naredbe end

Funkcijski m-file Da bismo pojednostavnili pisanje nizova naredbi koji se ponavljaju i kreirali nove funkcije, koristimo  m – fileove. Kreiranje  m-file-a: U Matlabovom glavnom izborniku biramo File →New→M-file ili kliknemo na ikonu New MFile na alatnoj traci. Otvorit će se editor u kojem unosimo naredbe našeg file-a. Kada smo gotovi, file treba spremiti. U editoru kliknemo na ikonicu Save, ili u izborniku File biramo opciju Save/Save As. 1. Promijenimo direktorij u C:\WORK (provjeriti u dokumentaciji koji direktorij Matlab automatski pronalazi). 2. Dodijelimo ime pod kojim će se file (datoteka) pohraniti u memoriju. Novije verzije Matlaba automatski dodaju ekstenziju .m, dok je u starijim verzijama potrebno eksplicitno navesti ekstenziju kada datoteci dodjeljujemo ime. 3. Kliknemo na Save. File pokrećemo/izvršavamo tako da u komandnoj liniji napišemo njegovo ime i znak Enter. Funkcijskim  m–fileom kreiramo novu funkciju. Ovako kreirana funkcija ravnopravna je funkcijama ugraenim u MATLAB-u (kao što su npr. sin, log, det, itd.) Na taj na čin možemo prema našoj volji i potrebama proširiti biblioteku postoje ćih funkcija. Sintaksa je:

��

 function varijabla=ime

funkcije(ulazne varijable)

naredbe

U prvom retku mora biti ime funkcije i varijable kojima operira.

Ime funkcijskog m-filea mora biti isto kao i ime funkcije koja se njima definira. Samu funkciju pozivamo kao i svaku drugu funkciju, koriste ći njeno ime, zagrade, ulazne i izlazne varijable. Varijable mogu biti i brojevi i matrice. Jasno je da broj i tip varijabli u definiciji i pozivu funkcije moraju biti isti.  function [izlazne

varijable]=ime funkcije(ulazne varijable)

naredbe

Funkcija može imati i više izlaznih varijabli.

Budite sigurni da ime funkcije nije u sukobu s nekom funkcijom koja ve ć postoji u Matlabu. Primjer: funkcija koja ra čuna površinu trokuta kojem znamo duljine stranica. function [P] = povrsina(a,b,c) % Računa površinu trokuta kom znamo duljine stranica % Ulazni podaci: % a,b,c: Duljine stranica % Rezultat: % P: površina trokuta % Upotreba: % Povrsina = povrsina(2,3,4); % Written by dfg, Oct 14, 1996. s = (a+b+c)/2; P = sqrt(s*(s-a)*(s-b)*(s-c)); %%%%%%%%% end %%%%%%%%%%% Ukoliko u Matlabovom prozoru napišemo >> help povrsina Bit će prikazani komentari iz m-file-a: Računa površinu trokuta kom znamo duljine stranica Ulazni podaci: a,b,c: Duljine stranica Rezultat: P: površina trokuta Upotreba: Povrsina = povrsina(2,3,4); Written by dfg, Oct 14, 1996. Da bi izračunali površinu trokuta kom su duljine stranica 10, 15, 20: >> Povrsina = povrsina(10,15,20) Povrsina = 72.6184 Vidimo da je rezultat izra čuna pridružen varijabli Povrsina.

��

�� ���� ��������

Graf elementarnih funkcija Osnovni alat korišten za crtanje u Matlabu je funkcija  plot(). Da bi shvatili kako ta funkcija radi, zamislimo da želimo nacrtati liniju koja prolazi kroz to čke (1 , 4) i (3 , 6). Prvo definiramo x vrijednosti kao vektor x=(1,3) (vektor apscisa) i y vrijednosti kao vektor y=(4,6) (vektor ordinata). Zatim nacrtamo to čke definirane tim vektorima (to su (1,4) i (3,6) ) i povežemo ih linijom. Odgovaraju će naredbe u Matlabu bile bi: >>x=[1 3]

x= 13

>>y=[4 6]

y= 46

>>plot(x,y)

Na ekranu se pojavio grafi čki prozor naziva Figure no.1 sa sljede ćim sadržajem:

Krenimo sada na složeniji primjer: Pretpostavimo da želimo nacrtati graf funkcije y=sin 3x na intervalu od 0 do 1. To ćemo napraviti na sljede ći način: funkciju ćemo opisati proizvoljnim brojem to čaka i onda ćemo te točke povezati ravnim linijama. Prepostavimo da uzmemo N+1 to čaka koje su udaljene za h: >> N = 10; h = 1/N; x = 0:h:1; ��

Na taj način dobivamo niz x = 0; h; 2h; …; 1-h; 1. Isto tako smo mogli koristiti naredbu linspace: općeniti oblik naredbe je linspace (a,b,n)  koja generira n+1 jednako udaljenih to čaka izmeu a i b, uključujući rubove (a,b). Tako smo mogli koristiti komandu: >> x = linspace (0,1,11); Zatim računamo njima odgovaraju će vrijednosti y: >> y = sin(3*pi*x); I konačno, to crtamo sa: >> plot(x,y)

Rezultat je vidljiv na gornjoj slici i o čito je da je uzeti N premalen. Ako N povećamo na 100, rezultat je puno bolji: >> x = linspace (0,1,100); >> y = sin(3*pi*x); >> plot(x,y)

��

Punu crvenu liniju dobijemo sa: >> plot(x,y,'r-') Treći argument u funkciji plot je string u kojem prvo slovo specificira boju, a drugo stil linije. Opcije za boje i stilove su:

Boja y yellow m magenta c cyan r red g green b blue w white k black

Oznaka točaka . point o circle x x-mark + plus * star s square d diamond v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram

Oznaka linije : dotted -. dashdot -- dashed - solid

Jednostavniji način za crtanje grafa funkcije bio bi koriste ći naredbu ezplot. ezplot(f) crta izraz f = f(x) na domeni: -2  < x < 2. ezplot(f,[min,max]) crta f = f(x) na domeni: min < x < max.

Ukoliko želimo uve ćati neki dio grafa, u izborniku grafi čkog prozora biramo Tools/Zoom In. Koristeći miša označimo dio krivulje ili samo kliknemo na dio koji želimo pove ćati i Matlab će automatski regenerirati crtež pove ćavajući prethodno mjerilo (raspon vrijednosti na koordinatnim osima će biti promijenjen koriste ći faktor 2). Postupak možemo ponoviti željeni broj puta. Isto možemo posti ći biranjem ikone Zoom In na alatnoj traci grafi čkog prozora. Naredba/ikona Zoom Out vraća povećani dio na prethodnu dimenziju. Treći način za uvećavanje prikaza bio bi unošenjem naredbe  zoom odnosno zoom off  u komandnom prozoru. Ako želimo da graf bude nacrtan u novom prozoru, prije pozivanja  plot naredbe, unesemo naredbu figure. Pozivanje naredbe npr.  figure (2) otvorit će prozor s oznakom 'Figure 2'. Ukoliko je prozor s tom oznakom ve ć postojao u pozadini, postat će aktivan i u njemu će biti prikazan rezultat idu će plot naredbe. Naredba clf  briše sadržaj grafi čkog prozora.

��

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

��

(Pogledajte detaljnije naredbu  axis koristeći help axis.)

�� ������� Čuvanje

zapisa

Korištenje naredbe  diary >>diary mojrad će

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

��

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

��

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF