Stilske figure (sredstva) za analizu književnih i neknjiževnih tekstova. Sadržaj namijenjen učenicima predmetne nastave, učenicima srednje škole i studentima.
Stilske figure (sredstva) za analizu književnih i neknjiževnih tekstova. Sadržaj namijenjen učenicima predmetne nastave, učenicima srednje škole i studentima.
1. MATLAB is a software package for mathematical computation, numerical computation, algorithm development, data analysis, and more. It allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs in other languages.
2. The document introduces basic MATLAB operations like arithmetic operations, variables, matrices, plotting, scripts and functions. It also discusses flow control and logical operations like if/else statements and loops.
3. MATLAB can be used for scientific and engineering applications like modeling, simulation, and prototyping through its implementation of algorithms, data analysis tools, and graphical capabilities for visualizing data.
2. ~ELEMENTARNE OPERACIJE SA
MATRICAMA I POLJIMA
BROJEVA~
Matrične operacije čine znatan dio računskog potencijala MATLAB-a.
One su, kadgod je to moguće, označene na prirodan način
kao što bi to uradili na papiru. Jedino ograničenje proizilazi iz
skupa karaktera raspoloživih na računaru.
Pored matričnih operatora, postoji i mogućnost operacija nad uređenim
skupovima (poljima) brojeva na principu element-po-element.
Kod operatora koji matrice i polja brojeva tretiraju na isti način
(transpozicija, sabiranje i oduzimanje) nećemo praviti razliku pri
prezentaciji, a ostale relevantne operatore ćemo prezentovati
odvojeno.
3. ~ SABIRANJE I ODUZIMANJE ~
Sabiranje i oduzimanje matrica označava se sa + i -, respektivno.
Ove operacije definisane su samo kada matrice koje sabiramo ili
oduzimamo imaju iste dimenzije.
Primjer 1.
Uzmimo matrice A i x ,
A=[-1 2 4;2 -3 1;-4 -5 -6]
A=
-1 2 4
2 -3 1
-4 -5 -6
x=[-1 3 8]‘
x=
-1
3
8
» A+x
rezultiraće porukom
??? Error using ==> +
Matrix dimensions must agree.
zbog toga što su dimenzije ovih veličina (3*3) i (3*1), respektivno.
4. Primjer 1.2
B=A’
»B =
-1 2 -4
2 -3 -5
4 1 -6
» C=A+B,C1=A-B
daju zbir i razliku matrica A i B
C=
-2 4 0
4 -6 -4
0 -4 -12
C1 =
0 0 8
0 0 6
-8 -6 0
5. ~Sabiranje i oduzimanje sa skalarima~
Osobenost MATLAB-a sastoji se u tome što su operacije + i - dopuštene i za
različite dimenzije varijabli, ali samo ukoliko je jedna od njih skalar, npr.
M+s(M-matrica, s-skalar). Ovakav izraz MATLAB interpretira tako što
svakom elementu matrice M dodaje (ili od njega oduzima) naznačeni skalar
se posmatra, tj. skalar s kao konstantna matrica sa dimenzijom
prilagođenom matrici koja se sabira (ili oduzima).
Primjer 1.3 Za matrice B, x i skalar a, definisane u primjeru 2.1.1, izrazi
» G=B+a,G1=x-a
daju
G=
4.2000 7.2000 1.2000
7.2000 2.2000 0.2000
9.2000 6.2000 -0.8000
G1 =
-6.2000
-2.2000
2.8000
iako, po pravilima matričnog računa, nisu korektni.
6. o Primjer 1.4
Provjerimo rezultate iz prethodnog primjera matematički korektnim
izrazima
» G=B+a*ones(B),G1=x-a*ones(x)
sa rezultatom
G=
4.2000 7.2000 1.2000
7.2000 2.2000 0.2000
9.2000 6.2000 -0.8000
G1 =
-6.2000
-2.2000
2.8000
uz upozorenje da će ovakav način rada biti izbačen u kasnijim
verzijama MATLAB-a
This usage of ones(X) is obsolete and will be eliminated
in future versions. Please use ones(size(X)) instead.
Dakle moraćemo koristiti naredbu ones(size(X)). Sva navedena pravila,
uključujući ono o kompatibilnosti skalara i matrice pri sabiranju i oduzimanju,
važe za matrice i skalare sa kompleksnim elementima.
7. ~Množenje matrica ~
Matrično množenje u MATLAB-u je označeno sa *. Shodno pravilima
matričnog računa, ova operacija je definisana kada su "unutrašnje"
dimenzije činilaca iste, tj. ako je broj kolona prvog činioca jednak broju vrsta
drugog.
Primjer 2.1
Prethodno definisani x i A (primjer 1) ne ispunjavaju navedeni uslov, pa će
iskaz
» c=x*A
proizvesti poruku:
??? Error using ==> *
Inner matrix dimensions must agree.
ok je iskaz
» c=A*x
korektan specijalan slučaj matričnog proizvoda, koji će dati
c=
39
-3
-59
Mogućnosti množenja vektora sa vektorom, tj. takozvani skalarni
(unutrašnji) i spoljni proizvod vektora, ilustrovaćemo na narednom primjeru.
8. Primjer 2.2
Sa definisanim vektorima
» x=[1 2 3],y=[1 -1 2]
x=
1 2 3
y=
1 -1 2
izrazi
» c=x*y',c1=y*x'
daju isti rezultat, tj. skalarni proizvod dva vektora
c=
5
c1 =
5
Spoljni proizvodi rezultiraće iz izraza
» D=x'*y,D1=y'*x
D=
1 -1 2
2 -2 4
3 -3 6
D1 =
1 2 3
-1 -2 -3
2 4 6
pri čemu je očigledno da su matrice D i D1 povezane relacijom D'=D1.
9. Naravno, izraz
» x*y
daje poruku greške:
??? Error using ==> *
Inner matrix dimensions must agree.
Matrica ili vektor prirodno se množi sa skalarom.
Primjer 2.3
Sa prethodno definisanim A i x (primjeri 2.1.1 i 2.3.2), izrazi
» A*pi,6.3*x
rezultiraju sa
ans =
-3.1416 6.2832 12.5664
6.2832 -9.4248 3.1416
-12.5664 -15.7080 -18.8496
ans =
6.3000 12.6000 18.9000
10. ~Množenje polja brojeva~
Za množenje uređenih skupova brojeva ne važe pravila matričnog
računa,već se množenje vrši po principu element-po-element, a odgovaraju
i operator je označen sa .*. Za ovakvu operaciju činioci moraju imati iste
dimenzije ako su brojevi uređeni u obliku matrica ili vektora. Naime, ako A i
C označavaju dva takva skupa brojeva, tada E=A.*C daje novi skup
brojeva E čiji su elementi proizvodi korespondentnih elemenata iz
skupova A i C.
Primjer 2.4
Sa prethodno definisanim A i C ,izrazi
» E1=A*C
» E=A.*C
su, s obzirom na dimenzije varijabli A i C, oba legitimni, samo što su
operacije izvršene po različitim pravilima tako da i daju različite rezultate:
E1 =
10 -32 -56
-16 22 0
-12 38 92
E=
2 8 0
8 18 -4
0 20 72
11. Primjer 2.5
Za ranije definisane varijable A, x, y, izraz
» A.*x
daje poruku greške
??? Error using ==> .*
Matrix dimensions must agree.
dok izrazi
» g=x.*y
» g1=x.*(-2)
daju
g=
1 -2 6
g1 =
-2 -4 -6
Vidimo da ukoliko je jedan od činilaca skalar, rezultat primjene operatora
.* će biti isti kao običnog matričnog množenja *, tj. svaki element matrice ili
vektora množi se sa skalarom.
12. ~DIJELJENJE MATRICA~
U matričnom računu dijeljenje nije definisano (osim ako je djelilac skalar).U
MATLAB-u, međutim, postoje dva operatora za "dijeljenje" matrica:
/ koji označava takozvano "dijeljenje" s desna, i
koji označava takozvano "dijeljenje" s lijeva.
Značenje ovih operatora razmotrićemo, za sada, samo za specijalni slučaj
kada se radi o kvadratnim nesingularnim matricama. Neka je, naime,
matrica A kvadratna i nesingularna. Tada izraz:
X=AB
odgovara množenju matrice B s lijeva sa A-1 , tj. X=A-1B, dok izraz:
X=B/A
odgovara množenju matrice B s desna sa A-1, tj. X=BA-1, pri čemu se
primjenom operatora i / rezultati dobijaju direktno, bez računanja inverzne
matrice. Dijeljenje s lijeva AB definisano je samo u slučaju kada je broj vrsta
varijabli A i B isti.
13. Primjer 4
Za matrice A i B iz prethodnog primjera i b=[1 2 3]', izrazi
» x=Ab,X=AB
imaju smisla i daju
x=
0.6071
-0.0357
0.0714
X=
0.3393 - 0.5893i 1.0893 - 0.4464i -0.0893 + 0.3750i
0.3036 - 0.0536i 0.5536 - 0.7679i -0.5536 + 0.1250i
-0.3571 + 0.3571i -0.3571 + 0.2857i 0.3571 - 0.0000i
dok za c=2 i d=b', izrazi
» x=Ac,X=Ad
nisu definisani i rezultiraće porukom o neslaganju dimenzija.
Izraz za dijeljenje s desna B/A može se izraziti preko dijeljenja s lijeva kao
B/A=(A'B')', i ima smisla samo ako je broj kolona varijabli A i B isti.
14. Primjer 4.1
Za matrice A i B iz prethodnog primjera i b=[1 2 3]', izrazi
» x=Ab,X=AB
imaju smisla i daju
x=
0.6071
-0.0357
0.0714
X=
0.3393 - 0.5893i 1.0893 - 0.4464i -0.0893 + 0.3750i
0.3036 - 0.0536i 0.5536 - 0.7679i -0.5536 + 0.1250i
-0.3571 + 0.3571i -0.3571 + 0.2857i 0.3571 - 0.0000i
dok za c=2 i d=b', izrazi
» x=Ac,X=Ad
nisu definisani i rezultiraće porukom o neslaganju dimenzija. Izraz za
dijeljenje s desna B/A može se izraziti preko dijeljenja s lijeva kao
B/A=(A'B')', i ima smisla samo ako je broj kolona varijabli A i B isti.
15. Primjer 4.2
Za veličine iz prethodnog primjera, izrazi
» y=d/A,Y=B/A
imaju smisla, i daju rezultate
y=
0.3750 0.3750 -0.1250
Y=
0.1071 - 0.1429i -0.3214 + 0.4286i -0.0357 + 0.2143i
0.2500 + 0.0893i 0.2500 - 0.7679i -0.2500 + 0.3036i
0.3214 + 0.3393i -1.9643 + 0.4821i 0.8929 - 0.4464i
dok izrazi
»y=c/A
»b/A
nisu definisani i rezultiraće porukom o neslaganju dimenzija matrica
koje se "dijele". Napomenimo ovdje da izraz X=AB predstavlja rješenje
za AX=B, dok izraz X=B/A predstavlja rješenje za XA=B.
16. ~DIJELJENJE POLJA BROJEVA~
Za dijeljenje uređenih skupova brojeva važe drugačija pravila pa se
upotrebljavaju i različiti simboli:
./ za dijeljenje s desna, i
. za dijeljenje s lijeva.
Tačka u simbolu za dijeljenje označava da se ova operacija vrši na
korespondentnim elementima. Tako, izraz C=A./B (ili njemu ekvivalentan
C=B.A) znači da su elementi skupa C izračunati po pravilu c(i,j)=a(i,j)/b(i,j),
gdje su a(i,j) i b(i,j) odgovarajući elementi skupova A i B. Na isti način, izrazi
D=A.B (tj. D=B./A)znače da je d(i,j)=b(i,j)/a(i,j).
Iz ovakvih pravila očigledno slijedi:
da bi navedeni izrazi imali smisla A i B moraju imati iste dimenzije.
Jedini, ali veoma praktičan, izuzetak od ovog pravila predstavlja slučaj
kada je dijeljenik ili djelilac skalar.
Tako izrazi D=k./A odnosno D=A.k znače da je d(i,j)=k/a(i,j), dok izrazi
D=A./k odnosno D=k.A znače da se elementi skupa D računaju po relaciji
d(i,j)=a(i,j)/k.
17. Primjer 5
Unesi polja A i B i nađi njihove količnike.
» A=[1 0 -2;-1 2 0],B=[-3 0 4;0 2 -1]
A=
1 0 -2
-1 2 0
B=
-3 0 4
0 2 -1
» C=A./B
Warning: Divide by zero
C=
-0.3333 NaN -0.5000
-Inf 1.0000 0
» D=B./A
Warning: Divide by zero
D=
-3 NaN -2
0 1 -Inf
Pošto A i B iz primjera sadrže neke elemente jednake nuli,dobijamo
poruku o dijeljenju sa nulom, a u rezultatu se javlja Inf ili NaN.
18. Primjer 5.1
Za a=2 i polja A i B iz prethodnog primjera, izračunati a./A i B./a. Unošenjem
» A1=a./A
dobijamo
Warning: Divide by zero
A1 =
2 Inf -1
-2 1 Inf
dok
» B1=B./a
daje
B1 =
-1.5000 0 2.0000
0 1.0000 -0.5000
Vidimo da je efekat isti kao da smo koristili naredbe:
» A1=a*ones(size(A))./B, odnosno » B1=B./(a*ones(size(B)))
Postoji jedna značajna razlika ove verzije MATLAB-a u odnosu na DOS verzije u
pogledu dijeljenja skalara poljem brojeva. Naime u MATLAB-u za
Windows izraz:
» 4./A
je korektan i rezultira
Warning: Divide by zero
ans =
4 Inf -2
-4 2 Inf
dok bi u prethodnim verzijama MATLAB-a rezultirao greškom. Uzrok ovoga je bio taj što
je "stari" MATLAB tačku tumačio kao decimalni zarez pa matrične dimenzije nisu
odgovarale. Obično se primjenjivao trik da se prethodni izraz zapisivao u obliku 4../A
,gdje prva tačka i dalje označava decimalni zarez ,a druga operaciju na polju brojeva.