You are on page 1of 34

[Mart 2009.

godine]

PRAKTIKUM
FIZIKA 2 UVOD U PROGRAMSKI PAKET MATLAB

2009 Katedra za Mikroelektroniku i tehniku fiziku M.Krsti i J. Crnjanski


M.Krsti, J.Crnjanski: Uvod u MatLab 2

MatLab je programski paket koji objedinjuje izraunavanja, vizualizaciju i programiranje


neophodne za reavanje raznovrsnih problema prisutnih u prirodno-matematikim i tehnikim
naukama. Ime je dobio od rei MATrix LABoratory, poto mu je osnovni element podataka
matrica. MatLab se moe koristiti za matematika izraunavanja, modelovanje i simulacije, analizu
i obradu podataka, grafiko prikazivanje rezultata i razvoj algoritama. Ova skripta namenjena je
studentima koji MatLab koriste prvi put, a u programiranju imaju malo ili nimalo iskustva. Skripta
je posebno koncipirana da sadri sve bitne alatke koje e biti potrebne studentima koji prate kurs
Praktikum iz fizike 2.
Skripta je podeljena u 10 celina:
1. MatLab okruenje
2. Definicija promenljivih
3. Nizovi i operacije sa nizovima
4. Petlje - For, While, If
5. Grafiko predstavljanje rezultata
6. Funkcije
7. Numerika diferencijacija
8. Numerika integracija
9. Reavanje sistema linearnih jednaina
10. Reavanje diferencijalnih jednaina

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 3

1. MatLab okruenje
Radno okruenje programskog paketa MatLab sastoji se od tri radna prozora:
1. komandni prozor (Command Window),
2. prethodne komande (Command History) i
3. tekui folder/radni prostor (Current Directory/Workspace).

TEKUI FOLDER/
RADNI PROSTOR KOMANDNI PROZOR

PRETHODNE
KOMANDE

U prozoru prethodne komande pamte se sve komande koje su izvrene iz komandnog


prozora, slino kao to i bilo koji web pretraiva pamti History svih poseenih sajtova. Dvostrukim
klikom miem na bilo koju komandu iz prethodnih komandi, ta komanda se izvrava kao da je
izvrena iz komandnog prozora.
U prozoru tekui folder/radni prostor nalazi se pregled foldera koji je podeen kao aktivni
folder, a ukoliko se izabere opcija radni prostor, prikazuje se spisak promenljivih koje su izraunate
izvravanjem komandi u komandnom prozoru ili pokretanjem nekog programa. Vrednost
promenljive se moe ispisati u komandnom prozoru dvostrukim klikom na eljenu promenljivu.
Komandni prozor omoguava trenutno izvravanje pojedinanih komandi, a istovremeno
slui i za prikaz rezultata izvravanja komandi ili kompletnih programa. Izvravanje komande i
prikaz rezultata njenog izvrenja:
>> komanda <Enter>
Jednom izvrena komanda se ne moe naknadno modifikovati vraanjem kursora u prethodni red
komandnog prozora, ve u sluaju greke mora biti ponovo uneta i izvrena. Kursorska strelica na
gore () na tastaturi omoguava izlistavanje prethodno unetih komandi redom i olakava ponovno
izvrenje ve unetih komandi.
Brisanje sadraja komandnog prozora postie se naredbom:
>> clc <Enter>

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 4

a upisivanjem taka-zareza (;) nakon komande, rezultat izvrenja se ne prikazuje u komadnom


prozoru. Brisanje sadraja radnog prostora, odnosno radne memorije, postie se komandom
>> clear all <Enter>
dok komanda
>> clear promenljiva <Enter>
brie samo navedenu promenljivu.
Komentari u kodu se oznaavaju znakom za procenat (%) i slue kao napomene ili
podsetnik za onoga ko ita programski kod. MatLab ne izvrava komentare i standardno ih
obeleava zelenom bojom.

Osim u komandnom prozoru, komande se mogu pisati i izvravati i iz MatLab Editora. Da


bi se pristupilo Editoru potrebno je startovati File/New/M-File. Otvorie se novi prozor koji se zove
Editor i koji prua mogunost ispisivanja programskog koda bez toga da se komande neposredno
nakon ispisivanja i izvravaju. Fajl generisan u Editoru moe biti sauvan i pokrenut u bilo kom
kasnijem trenutku. Ekstenzija fajlova generisanih i snimljenih u Editoru je .m. Snimljeni .m fajl se
moe pokrenuti ili iz samog Editora naredbom Run, ili se moe pozvati iz Komandnog prozora
pozivanjem imena fajla kao komande. Pokretanjem .m fajla izvravaju se sukcesivno sve komande
navedene u fajlu. Editor se koristi i za generisanje funkcija tj. pravljenje funkcijskih datoteka o
emu e biti rei neto kasnije.

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 5

2. Definicija promenljivih
Za razliku od programskog jezika C, u Matlab-u nije neophodno prethodno deklarisati
promenljive i njihov tip, ve je potrebno samo uneti vrednosti promenljivih pre njihovog
pojavljivanja u naredbama. Promenljiva kojoj je dodeljena numerika vrednost moe se
upotrebljavati u matematikim izrazima, funkcijama i svim Matlab-ovim iskazima i komandama.
Prilikom definisanje imena promenljive treba imati u vidu da:
1. naziv moe da sadri karaktere: slova (a-z), cifre (0-9) i/ili donju crtu (_)
2. naziv mora poeti slovom
3. MatLab je case sensitive tj. razlikuje velika od malih slova
4. MatLab 6 pamti prvih 31 karaktera imena promenljive; MatLab 7 pamti prvih 63 karaktera
imena promenljive.
Primeri dobro definisanih promenljivih su:
>> brzina, naelektrisanje_elektrona, a1, A1, promenljiva1_pomocna.
Primeri loe definisanih promenljivih su:
>> naelektrisanje-elektrona, 1a, brzina!, _A1.
Primeri dodele vrednosti nekoj promenljivoj:
>> brzina = 100;
>> brzina = 100 + brzina*3;
Pojedine esto koriene promenljive automatski su definisane u MatLab-u. Meu njima su:
>> pi % broj .
>> eps % najmanja razlika izmeu dva broja koju MatLab moe da uoi iznosi 2-52
>> i % imaginarna jedinica. Alternativno se koristi karakter j.
>> NaN % skraenica od Not a Number. Upotrebljava se kad MatLab ne moe da
izrauna numeriku vrednost. Na primer, rezultat operacije 0/0 je NaN.
>> inf % oznaava beskonano veliku vrednost.

Imaginarna jedinica ima svoju rezervisanu oznaku i ili j, meutim to ne spreava korisnika
da ova slova koristi i u druge svrhe. Ukoliko je potrebno da se u istom kodu koristi i ili j i kao
imaginarna jedinica i kao proizvoljna promenljiva i ukoliko je i ili j ve iskorieno kao
imaginarna jedinica, tada je poeljno pre korienja ovih oznaka kao proizvoljnih promenljivih
ispisati naredbu
>> clear i; (ili clear j;)

koja oslobaa slovo i ili j za unos proizvoljne vrednosti i time spreava mogunost greke ukoliko
MatLab promenljivu i ili j shvati kao imaginarnu jedinicu.

Zadatak 1: Proveriti tanost trigonometrijskog izraza, izraunavanjem obe strane


jednaine za vrednost x = /5:
x tan x + sin x
cos 2 = .
2 2 tan x
Reenje:
>> clear all;

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 6

>> x = pi/5; % unos numericke vrednosti za promenljivu x


>> leva_strana = cos(x/2)^2;
>> desna_strana = (tan(x) + sin(x))/(2*tan(x));
>> display(leva_strana); % display ispisuje sadraj promenljive
>> display(desna_strana);

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 7

3. Nizovi i operacije sa nizovima


Ime programskog paketa MatLab, kao to je ve reeno, potie od MATrix LABoratory i
odraava injenicu da je MatLab prevashodno orijentisan ka radu sa matricama. ak i kada se
definie prosta skalarna promenljiva, na primer:
>> brzina = 100;
MatLab e tu promenljivu tretirati kao matricu dimenzije 1 1. Vektor je specijalna vrsta matrice i
sadri samo jednu kolonu (vektor-kolona) ili jednu vrstu (vektor-vrsta). Primeri vektora su:
>> [1 2 3 4 5 6 7 8 9] % vektor-vrsta tj. matrica 1 9
>> [1; 2; 3; 4; 5; 6; 7; 8; 9] % vektor-kolona tj. matrica 9 1
Re niz podrazumeva bilo vektor bilo matricu. Ukoliko je niz jednodimenzionalan u pitanju
je vektor, poto ima samo jednu kolonu ili vrstu. Ukoliko je niz dvodimenzionalan onda u pravom
smislu rei predstavlja matricu koja ima m kolona i n vrsta. MatLab moe raditi i sa matricama koje
imaju i vie od dve dimenzije.

3.1 Vektori
Kao to je ve prikazano, jedan od naina za formiranje vektora vrste je upisivanje
njegovih elemenata, razdvojenih razmakom ili zarezom, unutar uglastih zagrada. Sa druge strane, da
bi se napravio vektor kolona, potrebno je upisati levu uglastu zagradu [ i zatim elemente
razdvojene takom i zarezom, ili Enter posle svakog elementa. Nakon poslednjeg elementa, upisuje
se desna uglasta zagrada ]. Meutim, vektore je mogue generisati i na druge naine. Jedan od
naina zahteva definisanje vrednosti poetnog elementa, koraka i vrednosti poslednjeg elementa. Na
primer, vektor 2, 4, 6, 8, 10 sadri brojeve od 2 do 10, sa korakom 2. U MatLab programskom
paketu ovakav vektor generie se naredbom:
>> vektor = [2:2:10]; % vektor = [pocetni_element:korak:krajnji_element]
Korak ne mora imati pozitivnu vrednost. Ukoliko je korak negativan, generie se vektor iji
elementi imaju opadajue vrednosti, na primer: 10, 8, 6, 4, 2:
>> vektor = [10:-2:2];
Ukoliko prilikom pozivanja prethodnih komandi izostavi vrednost koraka, MatLab podrazumeva da
je korak = 1. Takoe, nije neophodno pisati uglaste zagrade, dozvoljeno je:
>> vektor = 2:2:10;
odnosno
>> vektor = 10:-2:2;
Vektor se moe generisati i pomou komande linspace koja zahteva definisanje poetnog
elementa, krajnjeg elementa i broja elemenata u vektoru, a MatLab sam odreuje vrednost
ekvidistantnog koraka. Na primer, ukoliko je potrebno definisati vektor koji sadri 5 elemenata,
poinje brojem 2, a zavrava se brojem 10, potrebno je izvriti komandu:
>> linspace(2,10,5); % linspace(pocetni_element,krajnji_element,broj_elemenata)
Transponovanje vektora postie se dodavanjem apostrofa nakon oznake vektora:
>> x = 1:5; % definisan je vektor vrsta
>> x'; % transponovanje vektora-vrste x u vektor-kolonu sa identinim elementima

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 8

3.2 Matrice
Dvodimenzionalna matrica tj. dvodimenzionalan niz sastoji se od elemenata rasporeenih u
vrste i kolone. Kao i prilikom definisanja vektora, matrica se moe definisati pozivanjem komande:
>> matrica = [1 2 3;4 5 6;7 8 9];
% matrica = [elementi_prve_vrste;elementi_druge_vrste;elementi_trece_vrste]
Ovako definisana matrica predstavlja kvadratnu matricu 3 3:
1 2 3
matrica = 4 5 6
7 8 9

Definisanje elemenata matrice i vektora moe se izvesti direktnim unoenjem vrednosti


pojedinanih elemenata, ali i korienjem matematikih izraza ili unapred definisanih promenljivih i
funkcija. Tako je, na primer, sledea matrica pravilno generisana ukoliko su prethodno definisane
vrednosti promenljivih a, b i c:
>> matrica = [a b^2 c^a; log(a) sqrt(9) c; b-a a-c c*a];

Ugraene komande zeros(m,n), ones(m,n) i eye(n) generiu matrice iji elementi imaju
specijalne vrednosti. Komande zeros(m,n) i ones(m,n) generiu matrice sa m vrsta i n kolona, u
kojima su svi elementi nule odnosno jedinice, respektivno. Komanda eye(n) generie jedininu
kvadratnu matricu sa n vrsta i n kolona (elementi ove matrice koji se nalaze na glavnoj dijagonali
imaju vrednost jedan, dok ostali elementi imaju vrednost nula).
Operator transponovanja kod matrica pretvara njene vrste u kolone i obratno.
Odreenom elementu matrice pristupa se izvravanjem komande:
>> a = matrica(2,1); % a = matrica(redni_broj_vrste, redni_broj_kolone)
>> display(a);

3.3. Upotreba dvotake (:)


Upotreba karaktera dvotake bie prikazana na primerima. Pozivanjem komande:
>> x = niz(:);
promenljivoj x dodeljuju se svi elementi promenljive niz. U sluaju:
>> x = niz(m:n);
promenljivoj x dodeljuju se elementi promenljive niz, poev od elementa sa rednim brojem m, do
elementa sa rednim brojem n. Promenljiva x sada predstavlja vektor sa m n + 1 elemenata.
Ukoliko su promenljive viedimenzionalne, dvotaka omoguava jednostavno pristupanje
odreenim elementima matrice:
>> A(:,n) oznaava elemente u svim vrstama kolone n matrice A.

>> A(n,:) oznaava elemente u svim kolonama vrste n matrice A.

>> A(:,m:n) oznaava elemente u svim vrstama izmeu kolona m i n matrice A.

>> A(m:n,:) oznaava elemente u svim kolonama izmeu vrsta m i n matrice A.

>> A(m:n,p:q) oznaava elemente u vrstama od m do n i kolonama od p do q matrice A.


Neka je matrica A definisana izvravanjem komande:
>> A = [1 3 5 7 9 11; 2 4 6 8 10 12; 3 6 9 12 15 18; 4 8 12 16 20 24;...

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 9

5 10 15 20 25 30]
Matrice B, C, D, E i F koje sadre odreeni broj elemenata matrice A, definisane su komandama:
>> B = A(:,3)
B =
5
6
9
12
15

>> C = A(2,:)
C =
2 4 6 8 10 12

>> E = A(2:4,:)
E =
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24

>> F = A(1:3,2:4)
F =
3 5 7
4 6 8
6 9 12

3.4 Ugraene funkcije za obradu nizova:


Slede primeri nekih od najznaajnijih ugraenih funkcija za obradu nizova:
length(A) odreuje broj elemenata vektora A:
>> A = 1:5;
>> length(A)

size(A) odreuje dimenzije matrice A:


>> A = [1 2 3; 4 5 6];
>> size(A)

reshape(A,m,n) preureuje matricu A sa r vrsta i s kolona tako da ima m vrsta i n kolona.


Proizvod r i s mora biti jednak proizvodu m i n:
>> A = [5 1 6; 8 0 2]
A =
5 1 6
8 0 2

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 10

>> B = reshape(A,3,2)
B =
5 0
8 6
1 2

diag(v) kada je v vektor, generie kvadratnu matricu sa elementima vektora v na glavnoj


dijagonali:
>> v = [7 4 2];
>> A = diag(v)
A =
7 0 0
0 4 0
0 0 2

diag(A) kada je A matrica, generie vektor od elemenata glavne dijagonale matrice A.


>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> v = diag(A)
v =
1
5
9

3.5 Matematike operacije sa nizovima


U programskom paketu MatLab ne postoji razlika izmeu skalarnih i vektorskih vrednosti,
tj. i najobinija skalarna promenljiva se u memoriji pamti kao matrica 1 1, pa treba razlikovati
operacije nad pojedinanim elementima i operacije sa celim matricama.
Sabiranje i oduzimanje
Operacije sabiranja i oduzimanja nizova mogu biti izvedene nad nizovima istih dimenzija.
Drugim reima, nizovi moraju imati jednak broj vrsta i kolona. Zbir tj. razlika dva niza dobija se
sabiranjem tj. oduzimanjem odgovarajuih elemenata kao to je to predstavljano jednainom:

a11 L a1n b11 L b1n


A= M O M , B= M O M
am1 L amn bm1 L bmn
a11 b11 L a1n b1n
A B = M O M
a1m b1m L amn bmn

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 11

Ukoliko se neka skalarna vrednost (matrica 1 1) sabira ili oduzima sa nekim nizom, ta
skalarna vrednost se sabira odnosno oduzima sa svakim elementom niza.
Mnoenje nizova
Operacija mnoenja nizova (*) izvodi se u skladu sa pravilima linearne algebre. Kod
sabiranja tj. oduzimanja bilo je potrebno da nizovi budu istih dimenzija. Prilikom matrinog
mnoenja potrebno da broj kolona matrice A bude jednak broju vrsta matrice B. Proizvod ovih
matrica imae isti broj kolona kao matrica B i isti broj vrsta kao matrica A. Primera radi, ukoliko je
matrica A dimenzija m k, a matrica B dimenzija k n, mnoenje je mogue izvesti, jer matrica A
ima k kolona, a matrica B ima k vrsta. Proizvod ove dve matrice bie dimenzija m n. Sledi primer
mnoenja dve matrice dimenzija 4 3 i 3 2:
a11 a12 a13
b11 b12
a21 a22 a23
A= , B = b21 b22
a31 a32 a33
b31 b32
a41 a42 a43

( a11b11 + a12b21 + a13b31 ) ( a11b12 + a12b22 + a13b32 )


( a21b11 + a22b21 + a23b31 ) ( a21b12 + a22b22 + a23b32 )
A* B =
( a31b11 + a32b21 + a33b31 ) ( a31b12 + a32b22 + a33b32 )
( a41b11 + a42b21 + a43b31 ) ( a41b12 + a42b22 + a43b32 )
Treba primetiti da operacija mnoenja matrica nije komutativna, tj. vai nejednakost A*B B*A.
Takoe, treba primetiti da je stepenovanje matrice mogue izvesti samo ako je matrica kvadratna, tj.
dimenzije n n, poto se proizvod A*A moe izraunati samo ako je broj kolona prve matrice
jednak broju vrsta druge matrice.
Dva vektora mogu da se pomnoe samo ako imaju isti broj elemenata i ako je jedan vektor-
vrsta, a drugi vektor-kolona. Mnoenjem vektora-vrste i vektora-kolone dobija se matrica 1 1 tj.
skalarna vrednost. Ovakvo mnoenje naziva skalarni proizvod a ugraena funkcija koju MatLab
koristi za izraunavanje skalarnog proizvoda dva vektora je dot(a,b). Ulazni argumenti a i b mogu
biti ili vektori-vrste ili vektori-kolone:
>> A =[1 2 3]
A =
1 2 3

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

>> dot(A,B)
ans =
14

>> A = [1 2 3]
A =
1 2 3
2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd
M.Krsti, J.Crnjanski: Uvod u MatLab 12

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

>> dot(A,B)
ans =
14
Mnoenjem vektora kolone i vektora vrste sa po n elemenata dobija se kvadratna matrica n n:
>> A = [1;2;3]
A =
1
2
3

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

>> A*B
ans =

1 2 3
2 4 6
3 6 9

Deljenje nizova
Kao i kod mnoenja, tako i kod deljenja vae pravila linearne algebre. U programskom
paketu MatLab postoje dve vrste deljenja: deljenje sa leva (\) i deljenje sa desna (/). Meutim, pre
objanjenja procedure deljenja nizova, bie uvedeni pojmovi jedinine matrice, inverzne operacije i
determinante.
Jedinina matrica je kvadratna matrica koja ima jedinice na glavnoj dijagonali i nule na
svim ostalim mestima. Ona se moe napraviti komandom eye(), kao to je ve pomenuto. Kada se
neka matrica ili vektor pomnoi jedinnom matricom, dobija se ta ista matrica ili vektor. Specijalno,
ako je matrica kvadratna, onda se ona moe pomnoiti jedininom matricom i sa leva i sa desna, tj.
u tom sluaju operacija mnoenja je komutativna.
Matrica B je inverzna matrica matrici A ako je proizvod te dve matrice jedinina matrica.
U MatLabu inverzna matrica dobija se stepenovanjem na -1 ili funkcijom inv(A). Inverzna matrica
postoji samo ako je matrica kvadratna i ako je njena determinanta razliita od nule.

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 13

Determinanta je funkcija pridruena kvadratnim matricama tj. to je funkcija koja svakoj


kvadratnoj matrici pridruuje broj koji se zove detereminanta matrice. Bez ulaenja u strogu
definiciju determinante, dat je primer odreivanja determinante matrice dimenzije 2 2:
a11 a12 a11 a12
A= det A = = a11a22 a12 a21.
a21 a22 a21 a22
Ugraena funkcija koja odreuje determinantu matrice A poziva se komandom:
>> det(A).
Deljenje s leva (\)
Deljenjem sa leva moe se odrediti reenje matrine jednaine AX = B, gde su X i B vektori-kolone.
Matematiki gledano, ova jednaina se reava mnoenjem obe strane matricom inverznom matrici
A:
A1 AX = A1 B IX = A1 B X = A 1 B
Poslednja jednaina definie reenje X, a MatLabu se realizuje pomou operacije deljenja sa leva:
>> X = A \ B
Reenje je mogue dobiti i mnoenjem inverznom matricom. Razlika je u algoritmu koji MatLab
koristi u ova dva sluaja. Prilikom mnoenja inverznom matricom, MatLab prvo trai inverznu
matricu, a zatim je mnoi sa matricom B. U sluaju deljenja s leva, reenje se dobija numeriki,
primenom Gauss-ove eliminacije. Za reavanje sistema linearnih jednaina preporuuje se matrino
deljenje s leva, jer je to u sluaju velikih matrica efikasniji metod.
Deljenje s desna (/)
Deljenjem sa desna moe se reiti matrina jednaina XC = D, gde su X i D vektori-vrste.
Matematiki, jednaina se moe reiti mnoenjem obe strane jednaine matricom koja je inverzna
matrici C:
XCC 1 = DC 1 X = DC 1
Poslednja jednaina definie reenje X, a u MatLabu se realizuje pomou operacije deljenja sa
desna:
>> X = D / C
Na primerima koji slede bie pokazano reavanje sistema linearnih jednaina deljenjem sa leva i
deljenjem sa desna.
Zadatak 2: Primenom matrinih operacija, reiti sistem jednaina:
4x 2 y + 6z = 8
2x + 8 y + 2z = 4
6 x + 10 y + 3 z = 0.
Reenje: Sistem se moe predstaviti u matrinom obliku i to na dva naina,
predstavljanjem nepoznatih preko vektora-kolone i predstavljanjem nepoznatih preko
vektora-vrste:

4 2 6 x 8
2 8 2 y = 4 AX = B,
6 10 3 z 0
2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd
M.Krsti, J.Crnjanski: Uvod u MatLab 14

4 2 6
x y z 2 8 10 = 8 4 0 XC = D.
6 2 3

U prvom sluaju, kada su nepoznate predstavljene preko vektora-kolone, reenje se


dobija pozivanjem komandi:
>> A = [4 -2 6; 2 8 2; 6 10 3];
>> B = [8;4;0];
>> X1 = A\B
X1 =
-1.8049
0.2927
2.6341
Primenom metode mnoenja sa inverznom matricom, dobija se
>> X1prim = inv(A)*B
X1prim =
-1.8049
0.2927
2.6341
U drugom sluaju, kada su nepoznate predstavljene preko vektora-vrste, reenje se
dobija pozivanjem komandi:
>> C = [4 2 6; -2 8 10; 6 2 3];
>> D = [8 4 0];
>> X2 = D/C
X2 =
-1.8049 0.2927 2.6341
odnosno primenom metode mnoenja sa inverznom matricom:
>> X2prim = D*inv(C)
X2prim =
-1.8049 0.2927 2.6341

Operacije sa pojedinanim elementima niza


Ukoliko se ispred operatora mnoenja (*), deljenja (/) ili stepenovanja (^) stavi taka (.),
MatLab izvrava odgovarajuu operaciju mnoenja, deljenja ili stepenovanja element po element, a
ne matrino. Primera radi, ako vektor T predstavlja vremensku osu, tj. sadri vremenske trenutke u
kojima se odvijao neki dogaaj, a u nekom matematikom izrazu figurie T 2, potrebno je izvriti
kvadriranje element po element, to se postie komandom:
>> T.^2;
Sledei primer prikazuje matrino kvadridanje kvadratne matrice i kvadriranje element-po-element:
>> M = [1 2 3;4 5 6;7 8 9]
M =
1 2 3

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 15

4 5 6
7 8 9
>> M^2 % matricno kvadriranje
ans =
30 36 42
66 81 96
102 126 150

>> M.^2 % kvadriranje element-po-element


ans =
1 4 9
16 25 36
49 64 81

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 16

4. Petlje - For, While, If


Osnovne petlje u programskom paketu MatLab su For, While i If petlje. For-petlja obavlja
zadate naredbe vie puta u skladu sa brojaem koji je definisan od strane korisnika:
>> for brojac
>> telo petlje;
>> end;
Primera radi, formiranje vektora-vrste od 10 elemenata (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) moe se postii
primenom For-petlje:
>> for i = 1:1:10
>> vektor(i) = i;
>> end;
While-petlja obavlja zadate naredbe u okviru tela petlje, sve dok zadati uslov daje logiki
tanu vrednost:
>> while uslov
>> telo petlje;
>> end;
Formiranje vektora-vrste iz prethodnog primera moe se ostvariti i primenom While-petlje, s tom
razlikom to u okviru While-petlje nije automatski definisan broja, niti postoji mogunost
njegovog automatskog inkrementiranja, ve je ove korake neophodno dodati u kod:
>> i=1;
>> while i<=10
>> vektor(i) = i;
>> i = i+1;
>> end;
If-petlja ima neto drugaiju namenu i na osnovu ispitivanja da li je zadati uslov ispunjen ili
ne, usmerava izvrenje koda u jednom (ili nijednom) od vie ponuenih pravaca:
>> if uslov
>> ako je uslov ispunjen uraditi ovo;
>> else
>> ako uslov nije ispunjen uraditi ovo;
>> end;
Primena If-petlje prikazana je na sledeem primeru. Potrebno prebrojati koliko elemenata niza iz
prethodnog primera ima vrednost veu od 5, a koliko manju ili jednaku 5:
>> manji_od5 = 0;
>> veci_od5 = 0;
>> for i = 1:1:10
>> if vektor(i)>5
>> veci_od5 = veci_od5+1;
>> else
>> manji_od5 = manji_od5 + 1;

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 17

>> end
>> end
>> manji_od5
manji_od5 =
5
>> veci_od5
veci_od5 =
5

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 18

5. Grafiko predstavljanje rezultata


U ovom poglavlju bie objanjeno kako se u programskom paketu MatLab generiu
dvodimenzionalni i trodimenzionalni grafikoni.
5.1 Dvodimenzionalni (2D) grafici
Komanda plot omoguava generisanje 2D grafikona u pravouglom koordinatnom sistemu.
U najkraem obliku, komanda glasi plot(x,y), gde su x i y vektori tj. jednodimenzionalni (1D)
nizovi sa istim brojem elemenata (istih dimenzija). Pozivanjem ove komande u posebnom prozoru
oznaenom kao Figure prikazuje se grafik funkcije y = y(x), primera radi:
>> x = [1 2 3 4 5 6 7 8 9 10];
>> y = [2 4 6 8 10 12 14 16 18 20];
>> plot(x,y);

Na dobijenom grafiku vrednosti vektora x su na apcisi, a vrednosti y su na ordinati.


Automatska boja linije je plava. Opti oblik komande plot koji omoguava modifikacije izgleda
grafika dat je u formi:
plot(x,y,'oznaka linije','ime svojstva',vrednost svojstva)
Promena oznake linije i svojstva su opcionalne. Oznaka linije definie vrstu i boju linije i markera.
Markeri su oznake taaka u kojima je definisana vrednost funkcije. Za gornji primer, markeri bi
stajali u takama (1, 2), (2, 4), (3, 6)... U sledeim tabelama date su vrste linija i njihove oznake,
boje linija i njihove oznake i vrste markera i njihove oznake:
Vrsta linije Oznaka Boja linije Oznaka Vrsta markera Oznaka
puna (automatska) - crvena r znak plus +
isprekidana -- zelena g krui
takasta : plava b zvezdica *
crta-taka -. cijan c taka .
magenta m kvadrat s
uta y romb d
crna k petokraka zvezda p
bela w estokraka zvezda h

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 19

Ime svojstva i vrednost svojstva omoguavaju definisanje debljine linija, veliine markera,
boja ivica markera i boje kojom se markeri ispunjavaju. U tabeli je dat pregled svojstava:
Ime svojstva Opis Mogue vrednosti svojstva
LineWidth debljina linije broj (automatski 0.5)
MarkerSize veliina markera broj
MarkerEdgeColor boja ivice markera oznaka boje slovo
MarkerFaceColor popuna markera oznaka boje slovo

Primer korienja komande plot u punom obliku, ukoliko se za liniju grafika debljine 2 koristi
crvena boja, a markeri su veliine 12 i u obliku kruia, ispunjeni utom i oivieni zelenom bojom:
>> x = [1:1:10];
>> plot(x,sin(x),'-ro','LineWidth',2,...
'MarkerSize',12,'MarkerEdgeColor','g','MarkerFaceColor','y')

Naravno, kako je uzet jako veliki korak (svega deset taaka), grafiki prikaz funkcije sin(x) je
veoma neprecizan. Ukoliko postoji potreba da se istovremeno prikae vie grafikona, pre svake
naredbe plot, potrebno je otvoriti zaseban prozor za iscrtavanje grafika naredbom figure(n), gde
je n redni broj prozora:
>> x = [-2:0.01:4];
>> y = 3.5.^(-0.5*x).*cos(6*x);
>> figure(1)
>> plot(x,y,':g','LineWidth',2);
>> y2 = x.^2+4*sin(2*x)-1;
>> figure(2)
>> plot(x,y2,'--k','LineWidth',2);

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 20

Sa druge strane, ukoliko je potrebno da se u istom koordinatnom sistemu grafiki prikau dve
zavisnosti, umesto otvaranja novog prozora komandom figure(2) koristi se komanda hold all,
koja na postojeu sadrinu Figure prozora dodaje novu grafiku zavisnost:
>> x = [-2:0.01:4];
>> y = 3.5.^(-0.5*x).*cos(6*x);
>> figure(1)
>> plot(x,y,':g','LineWidth',2);
>> hold all;
>> y2 = x.^2+4*sin(2*x)-1;
>> plot(x,y2,'--k','LineWidth',2);

Konano, postoji mogunost da se u okviru istog Figure prozora prikae vie grafika sa nezavisnim
koordinatnim osama upotrebom komande subplot. Sintaksa komande
>> subplot(m,n,p)
deli prostor Figure prozora u tabelu koja se sastoji od m redova i n kolona. Brojem p definie se
odgovarajua pozicija na koju je potrebno da se smesti grafik. Slede primeri korienja komande
subplot:

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 21

5.2 Formatiranje grafika


Formatiranje grafika podrazumeva opciono dodavanje i formatiranje naslova grafika, imena
koordinatnih osa i njihovog opsega, legende i mree:
title('zeljeni naslov grfikona') dodavanje i formatiranje naslova
xlabel('tekst') dodavanje oznake ose na apcisu
ylabel('tekst') dodavanje oznake ose na ordinatu
legend('tekst1','tekst2',...,pol) dodavanje legende
xlim([x1 x2]) definisanje opsega vrednosti za apcisu
ylim([y1 y2]) definisanje opsega vrednosti za ordinatu
grid on ili grid off prikazuje pomonu mreu u skladu sa oznakama na osama
Primer formatiranja grafika:
>> x = [-2:0.01:4];
>> y = 3.5.^(-0.5*x).*cos(6*x);
>> figure(1)
>> plot(x,y,':g','LineWidth',2);
>> hold all;
>> y2 = x.^2+4*sin(2*x)-1;
>> plot(x,y2,'--k','LineWidth',2);
>> title('Uporedni prikaz grafika');
>> xlabel('x osa');
>> ylabel('y osa');
2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd
M.Krsti, J.Crnjanski: Uvod u MatLab 22

>> legend('y = 3.5 ^-^0^.^5^x cos(6x)','y = x^2 + 4sin(2x) - 1',2);


% MatLab automatski dodeljuje prvi tekst prvoj funkciji, a drugi tekst drugoj
% funkciji
>> xlim([-1 3.3]);
>> ylim([-5 15]);

Pol Poloaj
-1 Izvan granica osa, desna strana
0 Unutar granica osa, gde najmanje smeta
1 Gornji desni ugao
2 Gornji levi ugao
3 Donji levi ugao
4 Donji desni ugao

5.3 Logaritamske podele


U mnogim naunim i tehnikim primenama, ponekad je potrebno da jedna ili obe ose
grafika imaju logaritamsku podelu:
>> semilogy(x,y) % logaritamska podela (osnova 10) y ose i linearna podela x ose
>> semilogx(x,y) % logaritamska podela (osnova 10) x ose i linearna podela y ose
>> loglog(x,y) % logaritamska podela i x i y ose

Sledi primer grafikog prikazivanja funkcije y = 2exp(-0.2x + 10) za linearnu i logaritamsku


podelu osa:
>> x = linspace(0.1,60,1000);
>> y = 2.^(-0.2*x + 10);
>> subplot(2,2,1);
>> plot(x,y,'b','LineWidth',2);
>> xlabel('Linearna skala');
>> ylabel('Linearna skala');
>> grid on;
>> subplot(2,2,2);

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 23

>> semilogy(x,y,'b','LineWidth',2);
>> xlabel('Linearna skala');
>> ylabel('Log skala');
>> grid on;
>> subplot(2,2,3);
>> semilogx(x,y,'b','LineWidth',2);
>> xlabel('Log skala');
>> ylabel('Linearna skala');
>> grid on;
>> subplot(2,2,4);
>> loglog(x,y,'b','LineWidth',2);
>> xlabel('Log skala');
>> ylabel('Log skala');
>> grid on;

5.4 Grafici u polarnim koordinatama


MatLab omoguava jednostavan prikaz zavisnosti u polarnim koordinatama primenom
komande:
polar(ugao,poteg,'oznake linije')
Sledi primer korienja ove komande:
>> ugao = linspace(0,2*pi,200);
>> poteg = 3*cos(0.5*ugao).^2 + ugao;
>> figure(1)
>> polar(ugao,poteg,'b');

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 24

Pored navedenih mogunosti, programski paket MatLab omoguava generisanje i nekih specijalnih
vrsta grafika: vertikalni trakasti grafikon, horizontalni trakasti grafikon, stepenasti grafikon,
grafikon diskretnih podataka, kruni dijagram, histogram... Detaljne informacije o ovim tipovima
grafika se mogu nai u MatLab Help-u.
5.5 Trodimenzionalni (3D) grafici
Generisanje 3D grafikona postie se komandama mesh i surf. Komanda mesh generie
trodimenzionalnu zavisnost u formi mree, dok naredba surf prikazuje trodimenzionalnu zavisnost
kao ispunjenu povrinu. Razlika izmeu ove dve komande se najlake moe uoiti na konkretnom
primeru:
>> [x,y] = meshgrid(-8:0.5:8);
>> r = sqrt(x.^2+y.^2)+eps;
>> z = sin(r)./r;
>> figure(1);mesh(z);
>> figure(2);surf(z);

Naredba meshgrid se koristi za generisanje podele x i y ose u formi matrica x i y


odgovarajuih diemenzija. Promenljiva z definisana je kao sinc funkcija (podsea na meksiki
eir sombrero).
>> mesh(x,y,z)
>> surf(x,y,z)

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 25

6. Funkcije
Programski paket MatLab raspolae velikim brojem ugraenih funkcija kao to su exp(x),
sqrt(x), sin(x)... Meutim, MatLab omoguava i da korisnik samostalno definie funkciju,
generisanjem .m fajla u MatLab Editoru i snimanjem ovog fajla u obliku funkcijske datoteke.
Komandna linija koja definie funkciju ima oblik:
function [izlaz1, izlaz2, ...] = imefunkcije(ulaz1,ulaz2, ...)

Promenljive izlaz1, izlaz2,... su promenljive u koje se smeta rezultat funkcije, dok su ulazne
promenljive vrednosti za koje funkcija treba da obavi traenu operaciju. Imefunckije je
proizvoljno korisniko ime pod kojim funkcija mora da se zapamti. Kasnije, pod tim imenom
funkcija se poziva iz glavnog programa ili Komandnog prozora. Obratiti panju da posle definisanja
funkcije ne stavlja ; !!! Zarad preglednosti, funkcije e biti objanjene na konkretnom primeru.
Zadatak 3: Napraviti funkciju koja reava kvadratnu jednainu oblika:
ax 2 + bx + c = 0,
gde su a, b, c koeficijenti, a x promenljiva. Reenje kvadratne jednaine dato je izrazom:

b b 2 4ac
x1/ 2 = .
2a
Sledi kod funkcije koja reava zadati problem, a zatim i glavni program iz koga se
poziva generisana funkcija za odreene koeficijente a, b, c.
Funkcija kvadratna_jednacina:
function [x1 x2] = kvadratna_jednacina(a,b,c)
%izlazne promenljive su x1 i x2. Ime funckije je kvadratna_jednacina i
pod tim imenom se snima funkcija kao funkcijska datoteka tj. kao .m
fajl. Isto ime se kasnije koristi za pozivanje funkcije iz glavnog
programa. Ulazne promenljive su a, b, c koje predstavljaju
koeficijente jednacine
x1 = (-b + sqrt(b^2 - 4*a*c))/(2*a);
x2 = (-b - sqrt(b^2 - 4*a*c))/(2*a);
Nakon generisanja funkcije, potrebno pozivanjem File/Save As snimiti funkciju pod
imenom kvadratna_jednacina.
Glavni program:
clear all; close all
a = 5;b = 8;c = 12;
[resenje1 resenje2] = kvadratna_jednacina(a,b,c);
% Promenljiva resenje1 prihvata vrednost iz promenljive x1, a
promenljiva resenje2 vrednost iz promenljive x2. Nakon pokretanja
glavnog programa u Komandnom prozoru prikazuju se resenja:
>>resenje1
resenje1 =
-0.8000 + 1.3266i
>> resenje2
resenje2 =
-0.8000 - 1.3266i

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 26

7. Numerika diferencijacija
Prema definiciji, izvod funkcije f odreen je izrazom:
df f ( x + h) f ( x)
= lim .
dx h 0 h
Ukoliko je x vektor:
x = [x(1) x(2) ... x(n)]

onda komanda diff(x) daje vektor razlika dva susedna elementa vektora x:
diff(x) = [x(2)-x(1) x(3)-x(2) ... x(n)-n(n-1)].

Treba napomenuti da dobijeni vektor ima jedan element manje nego vektor x. Neka su dati vektori
x i y koji predstavljaju argumente i vrednosti funkcije y(x), respektivno. Izvod dy/dx se moe
odrediti pozivanjem komande:
>> diff(y)./diff(x);

Komanda diff(y,n)./diff(x,n) generie n-ti izvod funkcije y.


Zadatak 4: Ispitati funkciju 3x3 x2 + 6, iji je izvod po x jednak 9x2 2x. Nacrtati
u istom prozoru izvod kao grafik funkcije 9x2 2x i izvod posmatrane funkcije
koristei komandu diff i time pokazati da su ova dva grafika ista.
x = linspace(0,50,5000);
y = 3*x.^3 - x.^2 + 6;
figure(1);subplot(2,1,1);
plot(x,9*x.^2 - x,'LineWidth',2);
% Prethodna komanda iscrtava funkciju y(x). Da bi se grafiki
prikazao i vektor diff(y)./diff(x) potrebno je definisati x osu sa
jednim elementom manje:
for i=1:length(x)-1
xosa(i) = x(i);
end
subplot(2,1,2);
plot(xosa,diff(y)./diff(x),'LineWidth',2);

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 27

8. Numerika integracija
Odreeni integral funkcije f(x) od a do b, predstavlja povrinu koju kriva zahvata sa
apcisom (x osom) u granicama [a,b]. U numerikoj matematici postoji vie algoritama tj. metoda
za izraunavanje odreenog integrala. MatLab nudi tri ugraene funkcije za izraunavanje
odreenog integrala: quad, quadl, trapz.
Komanda quad koristi Simpson-ovu metodu integraljenja i ima sledei oblik:
quad('funkcija',a,b) ili quad(@funkcija,a,b).

Komanda quadl koristi Lobatto-ovu metodu integraljenja. Ima identian oblik kao i
prethodna funkcija:
quadl('funkcija',a,b) ili quadl(@funkcija,a,b)

Komanda trapz se koristi za integraljenje funkcije zadate u obliku skupa taaka. Koristi
metodu trapeza. Oblik komande je:
trapz(x,y)

gde su x i y vektori x koordinata i y koordinata. Vektori moraju imati isti broj elementa.

Zadatak 5: Primenom ugraenih funkcija odrediti numeriku vrednost integrala:


8

( x exp ( 3x + 10 ) + 2 x + 10 ) dx .
0

>> quad('x.*exp(-3*x+10) + 2*x + 10',0,8)


ans =
2.5914e+003

>> quadl('x.*exp(-3*x+10) + 2*x + 10',0,8)


ans =
2.5914e+003

Postoji jo jedan nain na koji se mogu izvriti prethodne komande i on podrazumeva


prethodno definisanje funkcijske datoteke koja sadri definiciju funkcije f = x*exp(-
3*x+10) + 2*x + 10, a zatim pozivanje komande u quad obliku:
>> quad(@f,0,8)

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 28

9. Reavanje sistema linearnih jednaina


Sistem jednaina definisan izrazima:
a11 x1 + a12 x2 + a13 x3 = b1
a21 x1 + a22 x2 + a23 x3 = b2
a31 x1 + a32 x2 + a33 x3 = b3
Matrini zapis ovog sistema glasi:
A X = B,

a11 a12 a13 b1 x1


A = a21 a22 a23 , B = b2 , X = x2 ,
a31 a32 a33 b3 x3
pa je mogue primenom operacije deljenja sa leva (\) reiti jednainu AX = B:
>> X = A\B;

to je ekvivalentno matematikom reenju X = A-1B. Dobijeni vektor X je vektor kolona koji u


prvom redu ima reenje po x1, u drugom po x2, a u treem po x3.

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 29

10. Reavanje diferencijalnih jednaina


Diferencijalne jednaine igraju jako vanu ulogu u nauci i tehnici jer predstavljaju osnovu
gotovo svakog fizikog procesa. I ne samo fiziki procesi, ve i razni ekonomski, bioloki,
socioloki, klimatoloki i drugi procesi, modeluju se odreenim diferencijalnim jednainama ili
sistemima diferencijalnih jednaina. Problem je, meutim, to se jako mali broj tih jednaina moe
reiti analitiki. Programski paket MatLab prua irok opseg funkcija tj. "solvera" koji slue za
numeriko reavanje sloenih problema.
U narednom razmatranju bie dat prikaz reavanja obinih diferencijalnih jednaina
(Ordinary Differential Equations, ODE) sa poetnim uslovima. Obina diferencijalna jednaina data
je u obliku:
dx
= f ( x, t ) ,
dt
gde je f(x,t) poznata funkcija od x i t. Reavanje ovakve diferencijalne jednaine prvog reda
(jednaina je prvog reda poto u njoj figurie prvi izvod promenljive x) zahteva poznavanje jednog
poetnog uslova, odnosno vrednost promenljive x0 u nekom trenutku t = t0.
Diferencijalne jednaine se mogu podeliti na linearne i nelinearne jednaine. Linearna
diferencijalna jednaina je ona jednaina u kojoj nepoznata, odnosno zavisna promenljiva x i njeni
izvodi figuriu u linearnom smislu. Prema tome, jednaina:
dx
= c1 x + c2
dt
u kojoj su c1 i c2 konstante, je linearna, jer su x i dx/dt prvog stepena. tavie, prethodna jednaina
bila bi linearna ak i onda kada bi c1 i c2 bili komplikovane funkcije vremena t, jer je od znaaja
samo na koji nain u jednaini figuriu zavisna promenljiva x i njeni izvodi. Primeri linearnih
diferencijalnih jednaina su:
dx
= (1 x) x.
dt
dx
= sin x,
dt
dx
x = x + t...
dt
Nelinearne diferencijalne jednaine se, generalno gledano, mogu podeliti na dve klase:
autonomne i neautonomne jednaine. Ukoliko se ovom trenutku razmatranje ogranii na nelinearne
diferencijalne jednaine prvog reda, autonomne jednaine su one kod kojih je brzine promene x
prosto funkcija samog reenja x i ne zavisi eksplicitno od vremena:
dx
= f ( x) .
dt
Kod neautonomnih jednaina, brzina promene x zavisi i od vremena t. Analitika reenja su
mogua samo za specijalne sluajeve.

10.1 Postupak reavanja diferencijalne jednaine


Prilikom reavanja diferencijalnih jednaina poeljno je pratiti proceduru koja e biti
izloena korak po korak.
2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd
M.Krsti, J.Crnjanski: Uvod u MatLab 30

Korak1 - Postavka problema


Za konkretan fiziki problem generisati matematiko-fiziki model, odnosno formulisati
odgovarajue diferencijalne (i ukoliko je potrebno, alegabarske) jednaine.
Korak 2 - Formiranje funkcijske datoteke
Svaku diferencijalnu jednainu predstaviti u skladu sa sintaksom MatLab-a u odgovarajuoj
funkcijskoj datoteci, to omoguava jednostavno pozivanje jednaina iz bilo kog drugog MatLab
programa, bilo iz Editora ili komandnog prozora. Slino kao i kod formiranja bilo koje druge
funkcije, funkcijska datoteka se definie zaglavljem koje ima oblik:
function lokalna_promenljiva = ime_funkcije(promenljive)

gde je lokalna_promenljiva lokalna promenljiva u koju se smeta rezultat izvrenja funkcije, a


ime_funkcije je proizvoljno korisniko ime po kome e se funkcija pozivati iz glavnog programa.
Formiranje jednostavne funkcijske datoteke bie prikazano na primeru autonomne nelinearne
jednaine prvog reda kojom se mogu modelovati epidemski procesi.

Zadatak 6: Jedna kolonija od 1000 bakterija razmnoava se brzinom od r = 0.8 jedinki


na sat. Koliko e bakterija biti u koloniji nakon 10 sati?
Reenje: Proces razmnoavanja bakterija se moe modelovati diferencijalnom
jednainom oblika (korak 1):
dN
= rN ,
dt
gde je N broj individua tj. populacija bakterija, a poetni uslov je definisan sa N(0) =
1000. Ova jednaina se moe reiti analitiki i ima dobro poznato reenje u obliku
ekponencijalne funkcije:
N ( t ) = N ( 0 ) exp ( rt ) .
Reenje ove jednaine se moe dobiti i numeriki, koristei integrisan MatLab ODE
solver.
Nakon postavke problema, pristupa se pisanju funkcijske datoteke (korak 2) u MatLab
editoru:
function dNdt = bakterije(t,N) % zaglavlje funkcijske datoteke
% u lokalnu promenljivu dNdt smesta se rezltat izvrsenja funkcije;
% ime funkcije je bakterije i pod tim imenom ce funkcija biti pozivana
iz nekog drugog programa ili direktno iz komandnog prozora
% promenljive su t i N - vreme i populacija bakterija.
% Obratiti paznju da se ne kraju komandne linije u kojoj se definise
funkcija NE stavlja taka-zarez (;) !
dNdt = 0.8*N; % telo funkcije

Ovako napisanu funkcijsku datoteku potrebno je snimiti kao .m fajl pod imenom koje odgovara
imenu funkcije, u konkretnom sluaju bakterije.m. Osim toga, funkciju je uvek potrebno snimiti u
isti folder gde se nalazi i glavni program iz kog e ta funkcija biti pozvana.
Korak 3 - Odabir solvera
MatLab nudi vie ugraenih solvera za reavanje diferencijalnih jednaina. Svaki od njih
koristi neki drugi algoritam tj. neku drugu numeriku proceduru i pogodan je za odreeni tip

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 31

jednaina. U sledeoj tabeli dat je pregled ODE solvera i date su napomene kada se dati solver
primenjuje:
Solver Tip problema Preciznost Kada koristiti
Prvo probati ovaj solver (Runge-Kuta
ode45 Linearan Srednja
metoda - single step metoda)
Kada se ne trai velika preciznost
ode23 Linearan Niska
(Euler-ova metoda - single step)
Multistep metoda kada se trai
ode113 Linearan Visoka
visoka preciznost
ode15s Nelinearan Srednja Ako ode45 ne radi

ode23s Nelinearan Niska Kada se ne trai velika preciznost

ode23t Osrednje nelinearan Niska Kada se ne trai velika preciznost

ode23tb Nelinearan Niska Kada se ne trai velika preciznost

Korak 4 - Pokretanje ODE solvera iz glavnog programa i podeavanje parametara ODE solvera
Komanda koja pokree izabrani solver i poziva funkciju definisanu u okviru funkcijske
datoteke ima oblik:
[t,x] = odgovarajuci_solver('ime funkcije',[interval_t],x0);
Odnosno, za sluaj konkretnog primera iz zadatka 6:
>> [t,N] = ode23('bakterije',[0 10],1000);
% promenljiva t prihvata vremensku osu, promenljiva N prihvata odgovarajuu
vremensku zavisnost reenja, odnosno broja bakterija.
% upotrebljen je solver ode23, koji poziva prethodno definisanu funkciju
bakterije
% vremenski interval u toku kog se posmatra dinamika sistema je definisan sa [0
10] s obzirom na to da se u zadatku trazi populacija bakterija nakon 10 sati, a
da je zadat pocetni uslov da je populacija u trenutku t = 0 bila 1000 jedinki
Ceo programski kod glavnog programa koji pokree ODE solver i prikazuje reenje jednaine
izgleda ovako:
>> clear all, close all
% definisanje pocetnog i krajnjeg trenutka vremena
>> tpoc = 0;tkraj = 10;
% definisanje vremenske ose sa rezolucijom od 100 tacaka
>> vreme = linspace(tpoc,tkraj,100);
>> N0 = 1000; % pocetni uslov N(0)= 1000
% pokretanje ode solvera.
>> [t,N]=ode23('bakterije',[tpoc tkraj],N0);
% Upotrebljen je ode23, zato sto je ovo problem koji numericki nije
zahtevan (sto potvrdjuje cinjenica da za ovaj problem postoji
analiticko resenje). Solver ode23 nema veliku preciznost ali daje
veoma dobre rezultate za resavanje jednacina koje cije resenje je
eksponencijalna funkcija. Osim toga ode23 nije vremenski zahtevan
solver pa se resenje dobija relativno brzo.
% prikaz rezultata

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 32

>> figure(1); plot(t,N,'LineWidth',2);


>> title('Populacija bakterija nakon 10h - Numericko resenje');
>> xlabel('Vreme');
>> ylabel('Populacija');
% analiticko resenje jednacine
>> Nanaliticko = N0*exp(0.8*vreme);
>> figure(2);plot(vreme,Nanaliticko,'LineWidth',2);
>> xlabel('Vreme');
>> ylabel('Populacija');
>> title('Analiticko resenje');
6 Populacija bakterija nakon 10h 6 Analiticko resenje
x 10 x 10
3 3

2.5 2.5

2 2
Populacija

Populacija
1.5 1.5

1 1

0.5 0.5

0 0
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
Vreme Vreme

Sledi jo jedan primer u okviru kog e biti prikazano reavanje neautonomne nelinearne
diferencijalne jednaine prvog reda.

Zadatak 7: Na jednom kraju trkake staze postavljen je sigurnosni odbojnik koji


zaustavlja vozilo nad kojim je voza izgubio kontrolu. Sila kojojm odbojnik deluje na
vozilo funkcija je i brzine i pomaka prednje ploe odbojnika:
F = Kv 3 ( x + 1) ,
3

gde je K konstanta proporcionalnosti iznosi 30 skg/m5. Vozilo ija je masa m = 1500


kg, udara u odbojnik brzinom od 90 km/h. Nacrtati krivu brzine vozila kao funkciju
poloaja na intervalu od 0 do 3 m.

x
Korak 1 Postavka problema:
U trenutku kada automobil udari u odbojnik, koji je na slici prikazan kao opruga, na
automobil deluje sila u smeru koji je suprotan od smera kretanja automobila i usporava
automobil do njegovog zaustavljanja. Na osnovu II Newton-ovog zakona:

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 33

ma = F
ma = Kv 3 (1 + x )
3

K 3
v (1 + x ) ,
3
a=
m
Kako se u zadatku trai grafik brzine u zavisnosti od preenog puta (koordinate x), a ne
vremena t, potrebno je izvriti smenu promenljivih u diferencijalnoj jednaini:
dv dv dv dx dv dx dv
a= = 1 = = = v.
dt dt dt dx dx dt dx
pa diferencijalna jednaina postaje:
dv K
= v 3 (1 + x )
3
v
dx m

dv K
= v 2 (1 + x )
3

dx m
Korak 2 Formiranje funkcijske datotetke:
function dvdx = odbojnik(x,v)
global k m
% komanda global definise da su k i m globalne promenljive. Ovim se
omogucava da se vrednost promenljivih definise u glavnom programu a da
se koriste i u ovoj funkcijskoj datoteci. Moguce je i definisati ove
promenljive diretno u samoj funkcijskoj datoteci tj. umesto komande
global k m definisati k = 30; m = 1500; ali se time smanjuje
fleksibilnost programa
dvdx = -k/m*v^2*(x+1)^3; % telo funkcije
Korak 3 i 4 Odabir solvera i glavni program:
>> global k m
>> k = 30; m = 1500; v0 = 90*1000/3600;
>> [x v] = ode45('odbojnik',[0:0.1:3],v0);
>> plot(x,v,'LineWidth',2);
>> title('Brzina u funkciji od pomeraja x');
>> xlabel('x [m]'); ylabel('Brzina [m/s]');

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd


M.Krsti, J.Crnjanski: Uvod u MatLab 34

Brzina u funkciji od pomeraja x


25

20

15

Brzina [m/s]
10

0
0 0.5 1 1.5 2 2.5 3
x [m]

2009 Katedra za Mikroelektroniku u tehiku fiziku, Elektrotehniki fakultet, Beograd

You might also like