Osnove Matlaba, promjenljive, aritmetičke operacije, kompleksni brojevi

 

Promjenljive

U matlabu se promjenljive definišu na veoma jednostavan način. Dovoljno je u komandnoj liniji unjeti naziv promjenljive i dodjeliti joj vrijdenost, na primjer:

 

>> a = 5

a =

5

>> ab_25_test = 234

ab_25_test =

234

 

U ovom primjeru definisane su promjenljive a i ab_25_test. Kao što se vidi nije potrebna nikakva dodatna deklaracija promjenljive. Kada matlab sretne, odnosno naiđe na novu promjenljivu, on automatski kreira i dodjeli joj odgovarujći memorijski prostor. Ako promjenljiva već postoji, tada se mjenja samo njena vrijednost i ako je potreblo dodjeli se novi memorijski prostor.

Ime promjenljive sastoji se od slova a do z, brojeva od 0 do 9 i znaka donje crte _, pri čemu je potrebno obratiti pažnju da prvi znak promjenljive mora biti slovo. U primjeru je namjerno definisana promjenljiva ab_25_test da se vidi kombinacija slova, brojeva i donje crte. Ako sa n označimo maksimalnu dužinu imena promjenljive koju matlab dozvoljava, tada matlab, ukoliko je ime promjenljive duže od n znakova, uzima samo prvih n znakova, a ostale ignoriše. Maksimalnu dužinu imena promjenljive koju matlab dozvoljava može se odrediti naredbom namelengthmax, u ovom slučaju to je ukupno 63 znaka:

 

>> N = namelengthmax

N =

63

Tipovi podataka

Matlab ima 14 različitih tipova podataka. Osnovni podatak za čuvanje brojeva je dvostruka preciznost (double-precision), pri čemu su svi proračuni u matlabu urađeni sa ovim tipom podataka. Ukoliko se koriste neki drugi tipovi podataka, kao što su označene i neoznačene cjelobrojne vrijednosti (int8, uint8) ili podaci sa jednostrukom-preciznošću (float) ili slični, tada se prilikom izvođenja aritmetičkih operacija, oni konvertuju u podatke dvostruke preciznosti.

 

Aritmetičke operacije

 

Operacija

Algebarski izraz

Matlab

Sabiranje

a+b

a+b

Oduzimanje

a-b

a-b

Množenje

a*b

a*b

Desno djeljenje

a/b

a/b

Lijevo djeljenje

b/a

a\b

Stepenovanje

ab

a^b

 

Aritmetičke operacije sa matricama

 

Sabiranje, oduzimanje, množenje i dijeljenje dvije matrice A i B se vrši jednostavno naredbama:

A+BA-B A*BA/B

Slično, sabiranje, oduzimanje, množenje i dijeljenje matrice A sa skalarom n je:

A+nA-n
A*n
A/n

 

Potrebno je obratiti pažnju kod operacija množenja i dijeljenja matrica A i B. U gore navedenim izrazima vrši se normalno množenje i dijeljenje matrica. Međutim, može se izvršiti množenje iili djeljenje po principu množenja ili dijeljenja "element sa elementom". Za ovo se koriste operatori .* i ./ (obratite pažnju da se nalazi tačka ispred željenog operatora).

Primjer:

 

>> A=[3 5 2; 8 2 3; 9 7 3]

A =

3 5 2
8 2 3
9 7 3

>> B=[2 9 1; 3 7 2; 2 8 5]

B =

 

2 9 1
3 7 2
2 8 5

>> A*B

ans =

25 78 23
28 110 27
45 154 38

 

>> A.*B

ans =

6 45 2
24 14 6
18 56 15

 

 

Iz gornjeg primjera vidimo da izraz A*B nije isto što i izraz A.*B. U drugom izrazu vrši se množenje matrica po principu „element sa elementom“. Analogno je i sa izrazima A / B i A ./ B.

 

Izraz A/B predstavlja množenje matrice A sa inverznom matricom B, tj. A*B-1, dok izraz A\B (lijevo djeljenje) predstavlja množenje A-1*B.

 

Stepenovanje kvadratne matrice A na n-ti stepen, vrši se istom naredbom kao i stepenovanje brojeva na n-ti stepen, a to je A^n.

Sa druge strane, naredba A.^n znači stepenovanje svakog elementa u matrici na n-ti stepen, a ne stepenovanje matrice.

Primjer:

>> A=[3 5 2; 8 2 3; 9 7 3]

A =

3 5
2
8
2
3
9
7
3

>> A^2

ans =

67 39
27
67
65
31
110
80
48

>> A.^2

ans =

9 25
4
64
4
9
81
49
9

 

Iz primjera se vidi da je u prvom slučaju izvšeno kvadriranje matrice A, što je ekvivalentno izrazu A*A, dok u drugoj naredbi A.^2, kvadriran svaki element matrice.

Za izračunavanje sopstvenih vrijednosti i sopstvenih vektora matrice, u matlabu postoji funkcija eig.

Izraz V = eig(A) određuje sopstveni vektor matrice A, dok izraz [V, lambda] = eig(A) određuje sopstveni vektor i sopstvene vrijednosti matrice A

Primjer:

>> A=[3 5 2; 8 2 3; 9 7 3]

A =

3 5
2
8
2
3
9
7
3

>> V=eig(A)

V =

12.8086

-3.8839

-0.9247

>> [V,lambda]=eig(A)

V =

-0.4156 -0.5684
-0.3025
-0.5156
0.8180
-0.1397
-0.7493
-0.0887
0.9429

lambda =

12.80860
0
0
-3.8839
0
0
0
-0.9247

Kompleksni brojevi

Rad sa kompleksinm brojevima u Matlabu je veoma jednostavno. Da bi vidjeli kako matlab prikazuje kompleksne brojeve, dovoljno je u komandni prozor unjeti izraz sqrt(-1). Prilikom unosa kompleksnih brojeva za imaginarnu jedinicu može se koristiti slovo i ili j. Slijedi primjer unosa kompleksnog broja i aritmetičkih operacija:

>> z1 = 3+5*j

z1 =

3.0000 + 5.0000i

>> z2 = 7+2j

z2 =

7.0000 + 2.0000i

>> z3 = 8-2i

z3 =

8.0000 - 2.0000i

>> z1-z2

ans =

-4.0000 + 3.0000i

>> z2*z3

ans =

60.0000 + 2.0000i

>> z1 / z3

ans =

0.2059 + 0.6765i

>> 4+j3

??? Undefined function or variable 'j3'.

 

Jasno se vide realni i imaginarni dio kompleksnog broja. Obratimo pažnju da se imaginarni dio može unjeti bez operatora množenja *, ali da imaginarna jedinica (slovo i ili j) moraju biti poslije broja, a ne prije broja, jer ako se nalazi prije broja matlab će prijaviti grešku

??? Undefined function or variable 'j3'.

Svi aritmetički operatori rade i sa kompleksnim brojevima. Funkcije, specifične za kompleksne brojeve su:

real(z) – prikazuje realni dio kompleksnog broja z

imag(z) – prikazuje imaginarni dio kompleksnog broja z

conj(z) – prikazuje konjugovanu vrijednost kompleksnog broja z

abs(z) – moduo kompleksnog broja z

angle(z) – argument kompleksnog broja z

 

Komplekni broj predstavljen u polarnom zapisu je z=re(jθ), gdje je r moduo, a θ argument kompleksnog broja.

Korištenjem funkcija abs i angle jednostavno se određuju modul i argument kompleksnog broja zapisanog u obliju a+jb.

Potrebno je obratiti pažnju na to kad se koriste komplekni brojevi da se promjenljive ne označavaju sa slovima i i/ili j, jer će u suprotmon vrijednost -1 biti promjenjena sa novom definisanom vrijednošću.

 

Postoji još jedan način kreiranja kompleksnih brojeva, a to je koristeći funkcju complex(a,b). Ova funkcija kreira kompleksni broj čiji je realni dio broj a, a imaginarni broj je broj b.

Kada se radi o kompleksnim matricama, tada operatori prim ’ i tačka-prim .’ ponašaju se različito. Operator prim (’) kreira transponovanu konjugovano-kompleksnu matricu, a to znači da su vrste i kolone međusobno zamjenjene i da su znakovi imaginarnih dijelova promjenjeni. Sa druge strane operator tačka-prim ( .’ ) kreira čisto transponovanu kompleksnu matricu. Slijedi primjer:

 

>> Z = [2+3i 5+i; 4+2i 9+3i]

Z =

2.0000 + 3.0000i 5.0000 + 1.0000i
4.0000 + 2.0000i 9.0000 + 3.0000i

>> Z'

ans =

2.0000 - 3.0000i 4.0000 - 2.0000i
5.0000 - 1.0000i 9.0000 - 3.0000i

>> Z.'

ans =

2.0000 + 3.0000i 4.0000 + 2.0000i
5.0000 + 1.0000i 9.0000 + 3.0000i