Upload
bato83
View
148
Download
6
Embed Size (px)
DESCRIPTION
seminarski Mat lab
Citation preview
Sadržaj
1 UVOD.....................................................................................................................................................2
2 STRUKTURE PODATAKA U MATLAB-U.....................................................................................3
3 GRAFIČKI PRIKAZ REZULTATA..................................................................................................6
4 MATRICE.............................................................................................................................................7
4.1 UNOŠENJE MATRICA......................................................................................................................8
4.2 ELEMENTI MATRICE.......................................................................................................................8
4.3 MANIPULACIJA VEKTORIMA I MATRICAMA.................................................................................10
4.4 NAREDBE I PROMENJLJIVE MATLAB-A........................................................................................14
4.5 OPERACIJE SA MATRICAMA.........................................................................................................15
4.5.1 Transponovanje......................................................................................................................15
4.5.2 Sabiranje i oduzimanje...........................................................................................................16
4.5.3 Množenje matrica...................................................................................................................17
4.5.4 Deljenje matrica.....................................................................................................................17
4.5.5 Stepenovanje matrica.............................................................................................................17
5 KVADRATNE JEDNAČINE............................................................................................................17
6 ZAKLJUČAK.....................................................................................................................................21
7 Literatura...............................................................................................................................................22
1
1 Uvod
Programski paket Matlab (MATrix LABoratory) je matematičko i simulaciono okruženje
koje omogućava matematičke proračune, razvijanje algoritama, simuliranje i analizu
procesa, obradu podataka, vizuelizaciju, a sve to kroz interaktivan i programski rad.
Interaktivan rad se postiže zadavanjem naredbi iz komandnog prozora (Command
Window). Na taj način se naredbe izvršavaju odmah nakon pritiska ENTER tastera.
Prethodne naredbe se mogu naći u okviru prozora za istoriju naredbi (Command History),
ili pritiskom na strelicu na gore (↑). U cilju ubrzavanja pretrage, moguće je otkucati
pocetna slova tražene naredbe. U okviru Matlab-a, postoje brojne ugrađenje funkcije,
koje se, na osnovu namene, mogu grupisati u određene klase, koje se nazivaju Toolbox-
ovi (Signal Processing, Control Systems, Filter Design...). Sa druge strane ostavljena je
mogućnost pisanja sopstvenih programa i funkcija, koji se mogu kreirati iz programskih
Editor-a. Takve funkcije se mogu pozivati iz komandnog prozora ili iz nekog drugog
programa, koji se moga nalaziti u okviru istog radnog foldera, path-a. Matlab nudi i
mogućnost koričćenja help-a, koji osim definicija samih naredbi sadrži i primere kako se
one mogu korisiti. Na slici je prikazano radno okruženje Matlaba, koje se najčešće sastoji
iz komandnog prozora, istorije naredbi, trenutnog direktorijuma, kao i radnog prostora, tj
Workspace-a.
2
2 Strukture podataka u Matlab-u
U Matlab-u su sve promenljive date preko matrica. Na taj način se mogu prikazati i realni
i kompleksni brojevi, i skalari i vektori i visedimenzione matrice. Za posebne upotrebe
preko matrica je moguće zadati i stringove i polinome. Skalari se definisu kao matrice
1x1, jednostavnim zadavanjem vrednosti promenljive:
>> a=2;
dok se vektori (matrice) zadaju korišćenjem uglastih zagrada, gde se kolone razdvajaju
razmakom, a znak “;” označava kraj jedne vrste i početak nove.
>> B=[1 2;3 4]
B =
1 2
3 4
>> C=[5 6]
C =
5 6
Ukoliko se posle naredbe ne stavi znak “;” rezultat naredbe se ispisuje u komandnom
prozoru, kao što je slučaj u prethodna dva primera. Dok u primeru za definisanje
promenljive a nije došlo do ispisivanja rezultata. Vektor kolona se može zadati na dva
načina. Jedan je navodjenjem elemenata koji su razdvojeni sa “;”, a drugi da se formira
vektor vrsta i korišćenjem znaka za transponovanje “ ’ ” (apostrof).
3
U okviru Matlab-a moguće je izvršiti predled odredjene zadate promenljive naredbom
whos:
>> whos B
Name Size Bytes Class Attributes
B 2x2 32 double
Ili svih zadatih promenljivih
>> whos
Name Size Bytes Class Attributes
B 2x2 32 double
C 1x2 16 double
a 1x1 8 double
Matrice se mogu iskoristiti i za definisanje stringova.
>> recenica='Uvod u Matlab'
recenica =
Uvod u Matlab
>> whos recenica
Name Size Bytes Class Attributes
recenica 1x13 26 char
U Matlab-u je takodje moguće zadati i kompleksne brojeve, kao i neke predefinisane
vrednosti, npr.
>> b=3i+1
b =
1.0000 + 3.0000i
>> c=pi*2/3
c =
2.0944
4
Pojedinim elementrima matrice se može pristupati, navodjenjem pozicije elementa u
malim zadradama.
>> C(2)
ans =
6
>> B(2,1)
ans =
3
Takodje, u okviru Matlab-a je vrlo značajno korišćenje znaka “:”. Na taj način se može
odabrati deo neke vrste/kolone, ili pak cela kolona:
>> D=[1 2 3 4;5 6 7 8];
>> D(1,2:4)
ans =
2 3 4
>> D(1,:)
ans =
1 2 3 4
>> D(:,1)
ans =
1
5
Korišćenjem istog znaka, moguće je zadati
Napomena: Indeksi počinju od 1, a ne od 0, kao u nekim programskim jezicima. Ukoliko
se u matricu dodaje element na poziciju koja prevazilazi dimenzije same matrice, vrši se
automatsko dodavanje nula u cilju prosirenja matrice.
5
>> D(3,2)=2
D =
1 2 3 4
5 6 7 8
0 2 0 0
Pri imenovanju promenljivih imati u vidu da se pravi razlika izmedju malih i velikih
slova, kao i da postoje pojedine rezervisane reci: ans, pi, nan, inf,...
Brisanje promenljivih se postiže naredbom clear, koja se može koristiti za brisanje
određenih (clear a b) ili svih (clear ili clear all) promenljivih u radnom prostoru.
>> clear a b
>> clear all
Brisanje sadržaja komandnog prozora, obezbedjuje se naredbom clc
>> clc
3 Grafički prikaz rezultata
Matla pravi razliku izmedju prikazivanja diskretnih i kontinualnih signala. Za iscrtavanje
kontinualnih signala koritsti se naredba plot. Potrebno je napraviti finu podelu vremenske
(x) ose i definisati vrednosti signala za odgovarajuću vrednost na vremenskoj osi.
Definisaćemo najpre vreme na intervalu (−2 , 2 ) sa korakom od 0.1, a zatim formirati i𝜋 𝜋
sinusoidalni signal.
>> t=-2*pi:0.1:2*pi;
>> x=sin(t);
>> plot(t,x);
6
Rezultat ove naredbe jeste grafik
Slika 1. Crtanje kontinualnog signala
Matlab nudi mogućnost dodatnog označavanja slike, u smislu definisanja osa (xlabel,
ylabel), ime slike (title), postavljanje mreže (grid).
4 Matrice
Matrice, kao osnovni element, sveo ostalo specijalni slučaj matrice. Nema deklaracije,
alociranja memorije.
4.1 Unošenje matrica
Unošenje matrica:
7
• ekspilcitna lista elemenata
• generisanje matrice korišćenjem ugrađenih komandi i funkcija
• kreiranje matrica u M-datotekama
• učitavanje iz datoteka
Primeri
A=[1 2 3; 4 5 6; 7 8 9]
A = 1 2 3 4 5 6 7 8 9
A=[1 2 3 4 5 6 7 8 9]
A = 1 2 3 4 5 6 7 8 9
Ako postoji datoteka ime.m na primer gena.m koja sadrži samo red A=[1 2 3;4 5 6;7 8 9]
gena
A = 1 2 3 4 5 6 7 8 9
4.2 Elementi matrice
Element matrice može biti bilo koji validan MATLAB izraz
x=[-1.3 sqrt(3) (1+2+3)*4/5]
x = -1.3000 1.7321 4.8000
element matice se referencira pomoću indeksa (jednog ili dva) koji se piše u malim
zagradama
x(1)
ans =
-1.3000
x(1,2)
8
ans =
1.7321
x(5)=abs(x(1))
x =
-1.3000 1.7321 4.8000 0 1.3000
zapaziti dopunjavanje sa nulama.
Sastavljanje matrica:
A=[A A]
A =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
Izvlačenje podmatrice:
A=A(2:3,4:5)
A =
4 5
7 8
A=A(1,:)
A =
4 5
4.3 Manipulacija vektorima i matricama
9
Specifičan način indeksiranja u MATLAB-u omogućava manipulaciju redovima,
kolonama, individualnim elementima, podmatricama matrica. Najinteresantnija je
maipulacija vektorima koji se generišu korišćenjem simbola ":".
Generisanje vektora
Simbol ":", je važan element u MATLAB-u. Izraz
Primer
x=1:5
Generiše vektor koji sadrži brojeve od 1 do 5 sa jediničnim inkrementom.
x =
1 2 3 4 5
y=0:pi/4:pi
y =
0 0.7854 1.5708 2.3562
3.1416
z=6:-1:1
z =
6 5 4 3 2 1
Korišćenjem ":" mogu se jednostavno kreirati i tabele. Da bi se dobila vertikalna
tabelarna forma, treba transponovati vektor dobijen sa : , izračunati kolonu vrednosti neke
funkcije i najzad formirati matricu koja sadrži dev kreirane kolone.
Primer
x=(0.0:0.2:3.0)';
y=exp(-x).*sin(x);
z=[x y]
z =
10
0 0
0.2000 0.1627
0.4000 0.2610
0.6000 0.3099
0.8000 0.3223
1.0000 0.3096
1.2000 0.2807
1.4000 0.2430
1.6000 0.2018
1.8000 0.1610
2.0000 0.1231
2.2000 0.0896
2.4000 0.0613
2.6000 0.0383
2.8000 0.0204
3.0000 0.0070
Postoje i funkcije za automatsko generisanje vektora kao što su logspace i linspace.
Linspace(d1,d2,N) (Od d1 do d2, N (def 100) tačaka
Logspace(d1,d2,N) (Od 10^d1 do 10^d2, N (default 50) tačaka
Primer
k=linspace(-pi,pi,4)
k =
-3.1416 -1.0472 1.0472 3.1416
Subscripting (Indeksiranje)
Individualni elementi matrica mogu se referencirati korišćenjem njihovih indeksa,
uokvirenih malim zagradama. Indeksiranje počinje od 1, odnosno indeks je pozitivan ceo
11
broj. Ako se kao indeks koristi izraz njegova vrednost se zaokružuje na najbliži pozitivan
ceo broj. Indeks može biti i vektor. Ako su x i v vektori onda je x(v)
[x(v(1)), x(v(2)), ..., x(v(n))]
Primer
x=[100 200 300 400];
v=[3 1 2];
x(v)
ans =
300 100 200
Za matrice, vektor kao indeks omogućava pristup podmatricama i njihovo generisanje.
Primer
A=1:5;
A=A'*A
A =
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
A(1:3,3)
ans =
3
6
9
A(1:3,2:5)
ans =
2 3 4 5
12
4 6 8 10
6 9 12 15
A(:,2)
ans =
2
4
6
8
10
A(1:2,:)
ans =
1 2 3 4 5
2 4 6 8 10
Dvotačka se istovremeno može koristiti sa obe strane izraza.
Primer
B(:,[1 3 5])=A(1:2,2:4)
B =
2 0 3 0 4
4 0 6 0 8
Uopšteno, ako su v i w vektori sa celobrojnim pozitivnim elementima
Primer
v=[2 1];
w=[5 1 3];
A(v,w)
ans =
10 2 6
5 1 3
13
v=[1.2 2];
A(v,w)
ans =
5 1 3
10 2 6
v=[10 1];
A(v,w)
??? Index exceeds matrix dimensions.
Još jedna primena dvotačke je oblika A(:). Ako se nalazi sa desne strane izraza ovo
označava sve elemente A nanizane u jednu kolonu
4.4 Naredbe i promenjljive Matlab-a
Matlab je interpreterski jezik. Interpretira i izračunava unete izraze jedan po jedan.
Najčešći oblik je:
promenljiva=izraz
ili samo izraz.
Primer
b=1+sqrt(4)-sin(pi/2)
b =
2
Ako se napiše ; (tačka-zarez) na kraju onda se na ekranu ničta ne ispisuje ali se računa.
Ovo je zgodno ako je naredba takva da definiše matricu jako velikih dimenzija.
Primer
b(100,100)=1;
14
Ako se unese samo izraz onda se automatski generiše ans (od answer).
Primer
2+5
ans =
7
Ako je naredba suviše komplikovana deli se u više redova sa dve ili više tačaka na kraju
svakog prelomljenog reda.
Primer
c=100+200+300 ...
+1+2 ...
+pi
c =
606.1416
Imena promenljivih u Matlab-u počinju sa slovom a onda može da stoji bilo koji niz
slova i brojeva osim rezervisanih reči. Matlab je case sensitive, imena funkcija se pišu
malim slovima. Naredbom casesen poničtava se case sensitive osobina.
4.5 Operacije sa matricama
4.5.1 Transponovanje
Ako je matrica realna trnasponovana matrica se dobija pomoću '.
y=x’
y =
-1.3000
15
1.7321
4.8000
0
1.3000
Ako je matrica kompleksna onda se kao rezultat dobija konjgovano kompleksna
transponovana matrica, o čemu treba voditi računa. Ako je matrica kompleksna,
transponovana matrica se dobija pomoću .' (postoji tačka pre ').
4.5.2 Sabiranje i oduzimanje
Matrice se mogu sabirati i oduzimati samo ako su istih dimenzija.
Primer
A=[1 2 3;4 5 6;7 8 9];
B=A’;
C=A+B
C =
2 6 10
6 10 14
10 14 18
Dozvoljena je i naredba tipa:
D=A+2
D =
3 4 5
6 7 8
9 10 11
16
koja svakom elementu matrice dodaje 2.
4.5.3 Množenje matrica
Dozovljeno je množenje matrica*matrica s tim što unutršnje dimenzije moraju biti iste.
Ovo podrazumeva i specijalne slučajeve matrica, vektore . Dozvoljeno je i množenje
matrica*skalar.
4.5.4 Deljenje matrica
Postoje levo i desno deljenje. Definišu se na sledeći način: X=A\B odnosno, X=A-1*B, je
rešenje jednačine A*X=B X=A/B odnosno, X=A*B-1, je rešenje jednačine X*B=A
4.5.5 Stepenovanje matrica
Ako je A kavadratna matrica a p skalar definisano je stepenovanje:
A^p.
5 Kvadratne jednačine
Još jedna velika prednost MATLAB-a jeste mogućnost rada sa kompleksnim brojevima.
Da bismo to ilustrovali razmotrićemo ovde kvadratnu jednačinu poznatog oblika:
ax 2 + bx + c = 0
Za a=1, b=5 i c=6, rešenje postavljene jednačine dobija se na sledeći način:
»a=1; b=5; c=6;
»x1=(-b+sqrt(b^2-4*a*c))/(2*a)
17
x1 =
-2
»x2=(-b-sqrt(b^2-4*a*c))/(2*a)
x2 =
-3
»a*x1^2+b*x1+c %provera rezultata
ans =
0
»a*x2^2+b*x2+c %provera rezultata
ans =
0
Poslednje dve linije u ovom algoritmu očigledno služe za proveru rezultata. Kod
kvadratne jednačine sa ovako izabranim koeficijentima diskriminanta je bila veća od
nule, pa su rešenja bila realna i različita. Izaberimo sada za koeficijente jednačine sledeće
vrednosti: a=1, b=4 i c=13. Tada će rešenje jednačine biti:
»a=1; b=4; c=13;
»x1=(-b+sqrt(b^2-4*a*c))/(2*a)
x1 =
-2.0000+3.0000i
»x2=(-b-sqrt(b^2-4*a*c))/(2*a)
x2 =
-2.0000-3.0000i
Ovde su x1 i x2 dati u kompleksnom obliku, odnosno u obliku z=a+bi, gde su a i b realni
i imaginarni delovi kompleksnog broja z, respektivno. Evo nekoliko jednostavnih primera
kompleksnih brojeva i operacija nad njima:
» c1=1-2i
c1 =
18
1.0000 - 2.0000i
» c1=1-2j
c1 =
1.0000 - 2.0000i
» c2= 3*( 2-sqrt ( -1 ) *3 )
c2 =
6.0000 - 9.0000i
» c3=sqrt ( -2 )
c3 =
0 + 1.4142i
» c4=6+sin( .5 )*i
c4 =
6.0000 + 0.4794i
» c5=6+sin( .5 )*j
c5 =
6.0000 + 0.4794i
Iz ovih primera se vidi da MATLAB ne pravi razliku u označavanju imaginarne jedinice,
tj. svejedno mu je da li smo je označili sa "i" ili sa "j". U nekim programskim jezicima
operacije nad kompleksnim brojevima zadaju dosta muke programerima i rad sa
kompleksnim brojevima je prilično mukotrpan. Sa MATLABom to nije slučaj jer se
svaki kompleksan broj unosi na sličan način kao i realan.
Primer kvadratne jednačine
if a == 0
% Jednacina je zapravo linearna
if b == 0
% Jednacina je oblika c = 0
if c == 0
% Jednacina je oblika 0 = 0
19
disp (’Svako x zadovoljava datu jednačinu’)
else
% Jednacina je oblika c = 0, gde je c ≠ 0
disp (’Ni jedno x ne zadovoljava datu jednačinu’)
end
else
% Jednacina je oblika bx +c = 0, gde je b ≠ 0
x = ‐c/b
end
else
% Jednacina je uistinu kvadratna
D = b^2 – 4*a*c;
if D >= 0
% Jednacina ima realna resenja
x1 = (‐b+sqrt(D))/(2*a)
x2 = (‐b‐sqrt(D))/(2*a)
else
% Jednacina ima konjugovano‐kompleksna resenja
x1 = (‐b+i*sqrt(‐D))/(2*a)
x2 = (‐b‐i*sqrt(‐D))/(2*a)
end
end
20
6 Zaključak
MATLAB je okruženje za numeričke proračune i programski jezik koji proizvodi firma
MathWorks. MATLAB omogućava lako manipulisanje matricama, prikazivanje funkcija
i fitovanje, implementaciju algoritama, stvaranje grafičkog korisničkog interfejsa kao i
povezivanje sa programima pisanim u drugim jezicima. MATLAB je nastao kao
skraćenica za „MATrix LABoratory“ („laboratorija za matrice“). Izumeo ga je kasnih
1970ih Kliv Moler (engl. Cleve Moler), šef katedre za informatiku na Univerzitetu „Novi
Meksiko“. Procena je da preko milion ljudi zaposlenih u industriji i na univerzitetima
koristi MATLAB. MATLAB je moguće nabaviti zajedno sa Simulinkom kao i brojnim
dodacima. Dodaci su svrstani po sledećim kategorijama:
Matematika i optimizacija
Statistika i analiza podataka
Kontrola i analiza sistema
Procesiranje signala i komunikacija
Obrada slike
Test i merenja
Finansijsko modelovanje i analiza
Povezivanje sa drugim aplikacijama
Povezivanje baza podataka i izveštavanje
Distribuirano računanje
21
7 Literatura
1. Gilat, Amos (2004). MATLAB: An Introduction with Applications 2nd Edition.
John Wiley & Sons.
2. Petrovič, Milan (2010), Programske strukture u MATLAB‐u, skripta PMF
Beograd, Beograd
3. MATLAB - Uputstvo za upotrebu, Novi Sad, 2011.
22