You are on page 1of 8

KRATAK MATLAB TUTORIAL U 30 KORAKA

Dora Selei

UNOS PROMENLJIVIH I FUNKCIJA


1. Pokrenimo Matlab
2. Svaka promenljiva se definie komandom syms, npr.
syms a b c x
3. Definiemo kvadratnu funkciju
f=a+b*x+c*x^2

DIFERENCIRANJE
4. Izvod funkcije f nalazimo komandom diff, npr.
diff(f)
5. Ako je f funkcija jedne promenljive x, tada je sve OK, ali ako
se radi o funkciji vie promenljivih, obavezno treba navesti po
kojoj promenljivoj se vri diferenciranje.
diff(f,x)
6. Isprobajmo
diff(f,a)
INTEGRAL
7. Neodreeni integral (Matlab izostavlja const.) se dobija
naredbom int, npr.
int(f,x)
8. Odreen integral u granicama [a,b] je dat sa
int(f,a,b)
9. Primer:
f = x^2
int(f,x,-2,5)

10. Primer:
f = 1/x^2
int(f,x,1,inf)
11. Primer:
f = 1/x
int(f,x,1,inf)
12. Numerika integracija se vri komandom quad, npr.
quad('sin',0,pi)
FUNKCIJE NA DRUGI NAIN
13. Funkcije moemo definisati i izrazom f=@(argument) vrednost,
npr. funkcija koja svakom argumentu x dodeljuje x2 se moe zadati
sintaksom
syms x real
kvadrat = @(x) x^2;
Sada funkciju pozivamo njenim imenom kvadrat, npr. da bismo
izraunali 22 ili 87912
kvadrat(2)
kvadrat(8791)
14. Diferenciranje i integraljenje se vri kao i ranije, samo to
moramo sa naina function handle prei na simboliki nain rada:
g = kvadrat(x)
diff(g,x)
int(g,x,0,5)
Ali,
quad(kvadrat,0,5)
javlja poruku o greci. Matlab x smatra matricom dimenzije 1x1, pa
je potrebno malo modifikovati definiciju funkcije i naglasiti da
se kvadriranje vri po komponentama (svaki element matrice se
kvadrira, a ne da se matrica x mnoi sama sa sobom). Naravno, kada
je u pitanju matrica 1x1 to je isto, ali Matlab definie funkciju
kvadrat i za sluaj kada je x relana matrica dimenzije nxn.
syms x real
kvadrat = @(x) x.^2;
quad(kvadrat,0,5)

REAVANJE SISTEMA JEDNAINA


15. Naimo x i y koji zadovoljavaju sistem jednaina
x2y2=0 i x-y/2=a. Prvo zapiimo obe jednaine tako da je desna
strana jednaka nuli, tj. x2y2=0 i x-y/2-a=0. Reavanje jednaina se
dobija komandom solve,
syms x y a
f1 = x^2*y^2
f2 = x-y/2-a
[x,y]=solve(f1,f2)
16. Nastavljamo primer 15, i stavimo sada da je
f1 = x^2*y^21
Matlab javlja greku. Zato? Razlog je u tome to su x i y sada
vektori(dobijeni kao reenja prethodnog zadatka), dok je 1 skalar
(broj). Moemo obrisati sve dosadanje vrednosti sa naredbom
clear all
ili redefinisati vrednosti za x,y pomou syms komande.
syms x y
f1 = x^2*y^2
f2 = x-y/2-1
[x,y]=solve(f1,f2)
Ili
[x,y]=solve('x^2*y^2','x-y/2-1')
Izrazi dati pod znacima navodnika su simboliki izrazi u Matlabu.
PRIKAZIVANJE REZULTATA
17. Definiemo simboliki izraz

x5

( x 1)

i zatim ga prikazujemo u

formi za tampanje
izraz=sym('(x-5)/(x-1)^2')
pretty(izraz)
18. Komplikovane izraze moemo pokuati svesti na najjednostavniji
oblik naredbom simple,
izraz=sym('x^2-2*x*y+y^2')
simple(izraz)

MATRICE
19. Matrice se unose u uglastim zagradama, npr.
A=[1 2 3; 4 5 6]
B=[2 1; 3 3; -1 2]
Transponovana matrica:
A'
Matrino mnoenje matrica:
A*B
Mnoenje matrica po komponentama bi bilo:
A.*B
(naravno u ovom primeru se dimenzije ne slau).
20. Sistemi linearnih jednaina dati u matrinom obliku Ax=b, gde
je A matrica, b vektor, mogu se reiti npr. nalaenjem inverzne
matrice (ako je A kvadratna matrica), pa je
x=inv(A)*b
neto bolja reenja se dobiju pomou matrinog levog deljenja
(bazira se na Gausovim postupkom eliminacije)
x=A\b
a jo mnogo bolje je koristiti naredbu linsolve, kojoj se mogu
navesti opcije da li da koristi LU ili QR dekompoziciju matrice,
ili neki drugi numeriki postupak.
x = linsolve(A,b)
21. Primer: Dat je system
Reenje:
A=[2 3; -1 4];
b=[5; 7];
linsolve(A,b)

2x + 3 y = 5
x + 4 y = 7

FOR PETLJA
22. Sintaksa FOR petlje je data sa
for broja = od:do
naredbe
end
100

23. Primer: izraunajmo

n.
n =1

suma=0;
for n=1:100
suma=suma+n;
end
Objasnimo na ovom primeru ta se deava. Prvo smo stavili da je
vrednost sume jednaka nuli. Zatim u for petlji postepeno dodajemo
jedan po jedan sabirak, odnosno kada je n=1 nova vrednost sume
postaje ona stara vrednost plus n, tj. suma=0+1=1, pa onda za n=2
se vrednost sume uvea za 2 tj. dobijemo suma=1+2=3, itd. kada n
proe od 1 do 100, dobijamo 1+2+...+100.
Na kraju, ako elimo videti rezultat sabiranja, unesimo
suma
i Matlab daje reenje 5050.

50

24. Primer: izraunajmo

k ( j) ,

gde je k funkcija data sa k ( x) = x 2 .

j =1

(Podseti se kvadratne funkcije pod 13. i 14.)


syms x real
k = @(x) x.^2;
proizvod=1;
for j=1:50
proizvod=proizvod*k(j);
end
proizvod
Reenje je proizvod =

9.2502e+128, odnosno 9.2502*10128.

OPTIMIZACIJA FUNKCIJE
25. Ako traimo minimum date funkcije f(x) pod nekim skupom
ogranienja tipa jednakosti ili nejednakosti, moe se iskoristiti
komanda fmincon.
Problem maksimizacije se lako svodi na problem minimizacije smenom
Max f(x) se dostie u istoj taki x gde je Min f(x).
Skup ogranienja je oblika
c( x ) 0
ceq ( x) = 0
Ai x b
Aeq i x = beq
lb x ub

gde su x, b, beq, lb, i ub dati vektori, A i Aeq su date matrice,


c(x) i ceq(x) su funkcije sa vektorskim vrednostima, a f(x) je
funkcija sa realnom vrednou. Pri tome f(x), c(x), i ceq(x) mogu
biti nelinearne funkcije.
Prvo se specifira poetna vrednost iteracije x0, funkcija f(x) se
zadaje u nekom M-fajlu, a zatim se optimizacija radi kao
fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
26. Primer:
Odredimo vrednosti x koje minimiziraju funkciju f ( x) = x1 x2 x3 pod
datim uslovom 0 x1 + 2 x2 + 2 x3 72 . Za poetnu iteraciju uzeti taku
x = [10; 10; 10].
Prvo, napravimo M-file koji emo snimiti pod imenom mojafunkcija.m
i koji sadri sledei kratak program:
function f = mojafunkcija(x)
f = -x(1)*x(2)*x(3);

Zatim uslov 0 x1 + 2 x2 + 2 x3 72
sledei nain:
x1 2 x2 2 x3 0
x1 + 2 x2 + 2 x3 72

preformuliemo u matrini oblik na

1 2 2
0

tj. Ax b , gde je A = 1 2 2 i b = .
72

Sada stavimo
x0 = [10; 10; 10];
A = [-1 -2 -2; 1 2 2];
b = [0; 72];
[x,f] = fmincon(@mojafunkcija,x0,A,b)
Nakon 66 iteracija dobijamoreenje
x =
24.0000
12.0000
12.0000
i vrednost funkcije u taki minimuma
f =
-3.4560e+03
M-fajlovi
27. M-fajlovi se piu u Matlab Editoru, File New M-file.
This will create an empty file in which you can type commands.
Sada moemo napisati neki program, npr.
syms a b c x
Solve('a+b*x+c*x^2=0',x)
Snimimo to pod imenom MojFajl.m u default folder (ako snimate u
Va folder, pogledajte sledeu taku 28.)
Sada se vratimo u Matlab Command Window i otkucajmo MojFajl (bez
ekstenzije .m). Ovo e izvriti program i dati reenje.
28. Ako smo snimili MojFajl.m u neki drugi folder, onda treba
navesti putanju za taj folder na sledei nain File Set Path
Add Folder pa navesti folder (i da li da pretrauje njegove
subfoldere), pa kliknuti na Save.
29. U M-fajlovima moemo ubacivati komentare,
poinje znakom % Matlab e ignorisati.

svaki

red

koji

30. Zadavanje funkcija u M-fajlu (videti i taku 26.).


Korisno je snimiti nae funkcije u M-fajlovima, naroito ako im
esto pristupamo. Time i nae korisnike funkcije imaju isti
status kao i Matlabove ugraene funkcije (npr. sin, cos, exp, ...)
Primer. Napravimo funkciju f koja e svakom elementu vektora x
dodati broj 5.
Function izlaz = pluspet(x)
% Ova funkcija svakom elementu vektora x dodaje broj 5
izlaz=x+5;
Zatim sve to snimimo (obavezno!) pod imenom pluspet.m
Ovaj program je sada definisao funkciju koja se zove pluspet.
Izlazna promenljiva koja nosi ime izlaz izjednaava se sa
vrednou funkcije u argumentu x.
Sada otkucajmo u Matlab Command Window
pluspet(10)
Za sluaj da je ime funkcije manje zvuno pa zaboravite ta vae
funkcije rade, moete pozvati pomo:
help pluspet
pa e Matlab ispisati komentar iz drugog reda M-fajla.

CRTANJE GRAFIKA
TOOLBOXES
Financial, Curve Fitting, ...

You might also like