matlab vezbe

17
Računarski alati –Uvod u MATLAB 1 1 Uvod Naredbom help obezbeđenja je pomoć i informacije tokom rada. Postoji nekoliko verzija ove naredbe: help help i help * help diary Dnevnik naredbi uključuje se naredbom diary on. Na ovaj način, u datoteci diary, čuvaju se sve naredbe unešene u komandnom prozoru. Sve naredbe i kôd u MATLABu treba da su u skladu sa strogom sintaksnom jezika. U slučaju da to nisu, olakšicu predstavlja to što se na ekranu ispisuje vrsta napravljene greške. Zadatak 1. Za zadatu vrednost x izračunati y = sin(x). Zadatak 2. Dodeliti promenljivoj r vrednost ‘student’ a zatim izračunati koliko ima slova u zadatoj reči. (size). >> r = 'student' r = student >> length(r) ans = 7 Zadatak 3. Izračunati vrednost aritmetičkog izraza 2 + 4 – 6 >> 2 + 4 - 6 ans = 0 Zadatak 4. Izračunati vrednost izraza x = 2 + 1 4 2 >> x = 2 + 2*4 - 1/pi x =

Upload: mijajlovic-marko

Post on 26-Oct-2014

242 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: MatLab Vezbe

Računarski alati –Uvod u MATLAB

1

1 Uvod

Naredbom help obezbeđenja je pomoć i informacije tokom rada. Postoji nekoliko verzija ove

naredbe:

help

help i

help *

help diary

Dnevnik naredbi uključuje se naredbom diary on. Na ovaj način, u datoteci diary, čuvaju se sve

naredbe unešene u komandnom prozoru.

Sve naredbe i kôd u MATLABu treba da su u skladu sa strogom sintaksnom jezika. U slučaju da

to nisu, olakšicu predstavlja to što se na ekranu ispisuje vrsta napravljene greške.

Zadatak 1. Za zadatu vrednost x izračunati y = sin(x).

Zadatak 2. Dodeliti promenljivoj r vrednost ‘student’ a zatim izračunati koliko ima slova u

zadatoj reči. (size).

>> r = 'student'

r =

student

>> length(r)

ans =

7

Zadatak 3. Izračunati vrednost aritmetičkog izraza 2 + 4 – 6

>> 2 + 4 - 6

ans =

0

Zadatak 4. Izračunati vrednost izraza x = 2 +

142

>> x = 2 + 2*4 - 1/pi

x =

Page 2: MatLab Vezbe

Računarski alati –Uvod u MATLAB

2

9.6817

Zadatak 5. Izračunati vrednost izraza y = 3x, ako je x = 32

>> x = 3 ^ 2;

>> y = 3 * x

y =

27

Zadatak 6. Izračunati vrednost izraza 5 < 3.

Zadatak 7. Izračunati vrednost izraza 5 <(7==8).

Zadatak 8. Napisati broj z = 2 + 3i.

Zadatak 9. Napisati broj w = 62

i

e .

Zadatak 10. Izračunati sin4

.

Zadatak 11. Za x = 5 i y = 56 izračunati vrednost izraza z = lny + x .

Zadatak 12. Izračunati vrednost izraza z = log10 x + |y|, za vrednosti x i y date u prethodnom

primeru.

Zadatak 13. Izračunati e10

, e100

, e1000

. Protumačiti rezultat.

Rešenje:

exp(10)

exp(100)

exp(1000)

Zadatak 14. Izračunati ugao koji kompleksan broj z = 2 + 5.1 i (predstavljen kao tačka u ravni)

gradi sa x-osom. Probati za različite vrednosti z € C.

Rešenje:

angle(2 + 5.1 * i)

Page 3: MatLab Vezbe

Računarski alati –Uvod u MATLAB

3

1.1. Isprobati primere za promenu formata izlaza:

Page 4: MatLab Vezbe

Računarski alati –Uvod u MATLAB

4

1.2. Isprobati sledeće naredbe:

clear – Uklanja sve promenljive iz memorije.

clear x y z – Uklanja promenljive x y z

who – Prikazuje imena promenljivih koje postoje u memoriji.

whos – Prikazuje imena promenljivih koje postoje u memoriji, njihovu klasu i veličinu u

bajtovima.

Zadatak 15. Sve promenljive koje se nalaze u radnom prostoru sačuvati u datoteci

promenljive.mat. Očistiti radni prostor naredbom clear, a zatim ponovo uneti sadržaj datoteke

naredbom load.

Zadatak 16. Utvrditi sta je veće e

ili e.

Zadatak 17. Uneti vektor x = (1, 2, ..., 10) i izračunati dužinu vektora x.

Zadatak 18. Uneti vektor x = (1, 3, 5, 7), sa korakom dužine 2.

Zadatak 19. Uneti matricu Z =

i

i

73

51

i

i

84

62, tako što prvo unosimo realne, a zatim

imaginarne delove kompleksnih brojeva. (Uneti matricu Z iz prethodnog primera tako što

elemente matrice unosimo kao kompleksne brojeve.)

Zadatak 20. Izdvojiti jedan element matrice, celu vrstu, celu kolonu. Odrediti dimenzije matrice

Z.

Zadatak 21. Napraviti matricu X dimenzije 2 x 3 sa jedinicama na dijagonali. Napraviti

jediničnu matricu dimenzija kao matrica A. (Upotreba ones i zeros). (diag ...)

Sabiranje i oduzimanje matrica, dodavanje/množenje sa skalarom (komutacija).

Množenje matrica, transponovanje matrice, vektora, skalara.

Transponovanje matrice čiji su elementi kompleksni brojevi (Z iz prethodnih

primera).

Izračunati determinantu kvadratne matrice A, kao i A-1

.(stepenovanje matrica)

Deljenje matrica: A\B = A-1

*B, A/B = B*A-1

(A je regularna kvadratna matrica).

Page 5: MatLab Vezbe

Računarski alati –Uvod u MATLAB

5

1.3. Zadaci za vežbu:

1. Dati su elementi , e, 2. Formirati matricu 3 x 3, čiju prvu vrstu čine dati brojevi, drugu

vrstu njihovi tangensi, a treću vrstu kvadratni koreni datih brojeva.

2. Za dobijenu matricu A izdvojiti:

a. član na poziciji (3, 1),

b. drugu vrstu matrice A

c. determinantu matrice A2

d. transponovanu matricu matrice A-1

3. Izdvojiti prvu i drugu vrstu matrice A.

4. Rešiti matričnu jednacinu A2XB = C za :

A=

1

1

0

2, B=

2

0

1

3, C=

8

8

11

17

1.4. Primeri

Primer 1. Ako su definisana dva vektora (niza) a(1, 2, 3, 4, 5) i b(1, 3, 5, 7) napraviti novi niz

njihovim spajanjem.

>> a=[1:5]; b=[1:2:9]; >> c=[a b] c = 1 2 3 4 5 1 3 5 7 9 Moguće je formiranje novog niza na sledeći nacin:

>> d=[a(1:2:5) 2 0 2]

d = 1 3 5 2 0 2

Isprobati a * b i a.*b!

Primer 2. U sledećim primerima je pokazana primena relacionih operatora u radu sa nizovima i matricama:

>> x=[-3:3] x = -3 -2 -1 0 1 2 3 >> abs(x)>1

Page 6: MatLab Vezbe

Računarski alati –Uvod u MATLAB

6

ans = 1 1 0 0 0 1 1 U prethodnom primeru se kao rezultat vraćaju jedinice na svim mestima gde elementi niza x

zadovoljavaju uslov u suprotnom se vraćaju nule.

>> y=x(abs(x)>1)

y = -3 -2 2 3 Formira se niz y od niza x tako što se kopiraju elementi niza x koji zadovoljavaju uslov da je

njihova apsolutna vrednost veća od 1.

>> y=x([1 1 1 1 ])

y = -3 -3 -3 -3

U prethodnoj naredbi je četiri puta izdvojen prvi element niza x i tako formiran niz y!

>> x(abs(x)>1)=[] x = -1 0 1

Ovom naredbom su izbačeni svi elementi niza x čija je apsolutna vrednost veća od 1.

>> b=[1 2; -3 4] b = 1 2 -3 4 >> x=abs(b)>1 x = 0 1 1 1

Page 7: MatLab Vezbe

Računarski alati –Uvod u MATLAB

7

>> x=x(abs(b)>2) x = 1 1 >> x=[-3:3] x = -3 -2 -1 0 1 2 3 >> y=find(abs(x)>1) y = 1 2 6 7 >> A=[1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> [i, j] = find(A>5) i = 3 3 2 3 j = 1 2 3 3

Page 8: MatLab Vezbe

Računarski alati –Uvod u MATLAB

8

U prethodnom primeru se izdvajaju indeksi elemenata matrice A koji zadovoljavaju navedeni uslov!

2 Crtanje grafika

Zadatak 22. Nacrtati vektor x = (1, 2, 4, 8, 16).

>> x = [1,2,4,8,16]; plot(x)

Za vrednosti x se uzimaju redni brojevi elemenata, a njihove slike su vrednosti niza x.

plot(x) – crta grafik spajajući tačke (i, x(i)).

Zadatak 23. Nacrtati vektor dat koordinatama x = (1, 2, 4, 8, 16) i y = (-1, 2, -4, 8, 16).

>> x = [1,2,4,8,16]; y = [-1, 2, -4, 8, 16]; plot(x,y)

Zadatak 24. Nacrtati funkciju y = 2ex u domenu x [-1, 1].

>> x = -1 : 1

x =

-1 0 1

>> y = 2 * exp(x)

y =

0.7358 2.0000 5.4366

>> plot(x,y)

>> x=-1:.5:1

Page 9: MatLab Vezbe

Računarski alati –Uvod u MATLAB

9

x =

-1.0000 -0.5000 0 0.5000 1.0000

>> y=2*exp(x)

y =

0.7358 1.2131 2.0000 3.2974 5.4366

>> plot(x,y)

Zadatak 25. U istom koordinatnom sistemu nacrtati funkcije y = 2x i y=2ex, u domenu

x[-1,1] sa korakom 0.1.

>> x = -1:.1:1; y1 = 2*x; y2 = 2*exp(x); plot(x, y1, x, y2)

Zadatak 26. Uvesti u prethodnom primeru oznaku za liniju i boju linije:

>> x = -1:.1:1; y1 = 2*x; y2 = 2*exp(x); plot(x,y1,'g',x,y2,'m+')

2.1. Crtanje grafika funkcije

Zadatak 27. Nacrtati funkciju y = x2

- 9 u domenu x [-3, 3].

>> y = 'x^2-9'; fplot(y, [-3,3])

2.2. Označavanje grafika i osa:

Zadatak 28. Nacrtati funkciju y = sin x na domenu x [-2 , 2 ] i koristeći naredbe za

označavanje osa … obeležiti sliku.

>> x=-1:.1:1;y1=2*x;y2=2*exp(x);plot(x,y1,x,y2)

>> x=-1:.1:1;y1=2*x;y2=2*exp(x);plot(x,y1,'g',x,y2,'m+')

Page 10: MatLab Vezbe

Računarski alati –Uvod u MATLAB

10

>> y='x^2-9';fplot(y,[-3,3])

>> y='sin(x)';fplot(y,[-2*pi,2*pi])

>> hold on

>> grid

>> title('sinusna funkcija')

>> xlabel('x-osa')

>> ylabel('y-osa')

>> gtext('max')

Zadatak 29. Koristeći naredbu subplot nacrtati grafike :

a. y = x, x [-1,1]

b. y=xex, x [0,1]

c. y=x2, x [-2,2]

d. y=cos x, x [- , ].

>> x=-1:.1:1;y1=2*x;y2=2*exp(x);plot(x,y1,x,y2) >> x=-1:.1:1;y1=2*x;y2=2*exp(x);plot(x,y1,'g',x,y2,'m+')

>> y='x^2-9';fplot(y,[-3,3])

>> y='sin(x)';fplot(y,[-2*pi,2*pi])

>> hold on

>> grid

>> title('sinusna funkcija')

>> xlabel('x-osa')

>> ylabel('y-osa')

>> gtext('max')

h=gtext(‘neki tekst’)

delete(h)

kliknuti misem na tekst na grafiku a zatim:

delete(gco)

Page 11: MatLab Vezbe

Računarski alati –Uvod u MATLAB

11

---------------------------------------------------------------------------------------------------

>> x1=-1:1:1;y1=x1;

>> x2=0:0.5:1;y2=x2.*exp(x2);

>> x3=-2:.1:2;y3=x3.^2;

>>

>> x4=-pi:pi/16:pi;y4=cos(x4);

>> subplot(2,2,1),plot(x1,y1)

>> subplot(2,2,2),plot(x2,y2)

>> subplot(2,2,3),plot(x3,y3)

>> subplot(2,2,4),plot(x4,y4)

Zadatak 30. Nacrtati funkciju y = sin x za -2 x 2 , a zatim postaviti da domen po x osi

bude - x , a po y od -2 do 2.

3 Upravljanje tokom programa

Zadatak 31. Dekan Mašinskog fakulteta odlučio je da stipendira sve studente čiji je prosek

ocena veći ili jednak 9. Za unete ocene jednog studenta, ispitati da li student ima pravo na

stipendiju ili ne,

>> ocene = input('Ocene studenta: ');

Ocene studenta: [7, 8, 9, 10, 6, 7]

>> if mean(ocene) >= 9.0

disp('Student ima pravo na stipendiju');

else

disp('Student nema pravo na stipendiju');

end

U prethodnom zadatku ispisati i prosek ocena studenta uz datu poruku pomoću funkcije fprintf.

Zadatak 32. Za zadatu vrednost promenljive x izračunati vrednost izraza y, na sledeći način:

y =

inacex

x

xx

,

2,2

2,2

Page 12: MatLab Vezbe

Računarski alati –Uvod u MATLAB

12

Zadatak 33. Za sve vrednosti promenljive x {1, 2 , 3, 4, 5} izračunati vrednost funkcije

y = sin 2x, koristeći for ciklus.

>> for x=1:5

y(i)=sin(2*i);

end

>> y

y =

0.9093 -0.7568 -0.2794 0.9894 -0.5440

Zadatak 34. Izračunati elemente matrice A4x3 prema izrazu:

A(i, j) = 22

1

ji

Zadatak 35. Počev od 1, vrednost promenljive x se izračunava po formuli x = 2x. Naći

poslednju vrednost promenljive x za koju važi x 15.

Zadatak 36. Odrediti sve Fibonačijeve brojeve manje od 1000.

>> f = [1, 1];

>> i = 1;

>> while f(i) + f(i + 1) <= 1000

f(i + 2) = f(i) + f(i + 1);

i = i + 1;

end

>> f

f =

Columns 1 through 15

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610

Column 16

987

Zadatak 37. Izračunati sumu reda:

Page 13: MatLab Vezbe

Računarski alati –Uvod u MATLAB

13

s =

12

)1(

n

n

n=-1 +

4

1 -

9

1 +

16

1 - ..., sa tacnoscu 10 4 .

>> s=0;

>> n=1;

>> while abs((-1)^n/n^2)>10^(-4)

s=s+(-1)^n/n^2;

n=n+1;

end

>> s

s =

-0.8225

Zadatak 38. Neka je s n = !2

1 +

!3

1 + ... +

!

1

n. Rešiti nejednačinu s n < 0.7.

>> n=1;p=1;s=0;

>> while s<0.7

n=n+1;

p=p*n;

s=s+1/p;

end

>> n-1

ans =

3

Napomena: moguće je koristiti i funkciju factorial(n) za izračunavanje faktorijela.

4 Polinomi

(help polyfun)

Zadatak 39. Odrediti nule polinoma x 2 - 5x + 6 = 0 .

>> p=[1 -5 6];

>> r=roots(p)

r =

3.0000

2.0000

Page 14: MatLab Vezbe

Računarski alati –Uvod u MATLAB

14

Zadatak 40. Odrediti polinom čija su rešenja x = 2 i x = 3.

>> r=[2 3];

>> p=poly(r)

p =

1 -5 6

Zadatak 41. Sabrati polinome p 1 (x) = 3x 3 - 2x 2 - 4x + 6 i p 2 (x) = x 4 + 2x 3 - 7x 2 - 3x + 1.

>> p1=[3 -2 -4 6];

>> p2=[1 2 -7 -3 1];

>> p=[0 p1]+p2

p =

1 5 -9 -7 7

Zadatak 42. Pomnožiti polinome p1 i p2.

>> c=conv(p1,p2)

c =

3 4 -29 3 49 -32 -22 6

Zadatak 43. Podeliti polinome p 1 (x) = 2x 3 + 9x 2 +7x - 6 i p 2 (x) = x + 3.

5 M – fajlovi

5.1. Komandni ili script fajlovi

Zadatak 44. Izračunati zbir kvadrata prvih deset prirodnih brojeva i sačuvati fajl pod

imenom ‘zbir’.

% Izracunava zbir kvadrata prvih 10 prirodnih brojeva

x = [1:10];

x = x .^ 2;

z = sum(x)

Zadatak 45. Rešiti zadatak 31 pomoću komandnog M-fajla.

Page 15: MatLab Vezbe

Računarski alati –Uvod u MATLAB

15

5.2. Funkcijski fajlovi

Zadatak 46. Formirati funkcijski fajl u kome se definiše nova funkcija f(x) = e x + sin x,

pod imenom fi.

% fi Izračunava vrednost funkcije exp(x) + sin(x)

function y = fi(x)

y=exp(x)+sin(x);

>> fi(pi/2)

ans =

5.8105

Zadatak 47. Rešiti zadatak 31 pomoću funkcijskog M-fajla.

6 Rešavanje jednačina sa jednom promenljivom

Jednačina sa jednom promenljivom ima oblik f(x) = 0.

Za izračunavanje nula funkcije koristi se naredba fzero, koja ima sledeći oblik

x = fzero(‘funkcija’, x0)

gde je x skalarna vrednost, a x0 vrednost promenljive x u blizini mesta gde funkcija seče x –

osu. (približno rešenje se može odrediti grafički).

Zadatak 48. Naći rešenje jednačine xe x = 0.2

fplot('x*exp(-x)-0.2',[0 8]);grid

Page 16: MatLab Vezbe

Računarski alati –Uvod u MATLAB

16

>> x1=fzero('x*exp(-x)-0.2',0.7)

x1 =

0.2592

>> x2=fzero('x*exp(-x)-0.2',2.8)

x2 =

2.5426

7 Rešavanje sistema linearnih jednačina

Zadatak 49. Napisati funkcijski M-fajl Cramer.m za rešavanje sistema linearnih jednačina

koristeći Kramerovo pravilo.

% Cramer(A, B) resava sistem jednacina AX = B Kramerovim pravilom.

% Matrica A mora da bude kvadratna i regularna.

% Rezultat je vektor kolone X koji predstavlja resenje zadatog sistema jednacina

function X=Cramer(A, B)

Page 17: MatLab Vezbe

Računarski alati –Uvod u MATLAB

17

% proverava se da li je matrica A kvadratna

[m,n]=size(A);

if m ~= n

error('Matrica nije kvadratna!')

end

if det(A) == 0

error('Matrica je singularna!')

end

for i = 1:n

C=A;

C(:, i) = B;

X(i) = det(C) / det(A);

end

X=X';

Zadatak 50. Koristeći prethodno definisanu funkciju Cramer rešiti sistem jednačina:

2x – 4y – z = 0

-x + 2y + 2z = 6

3x + 6y = 6

Zadatak 51. Rešiti sistem jednačina matričnom metodom:

2x + 3y + z = 1

1x + 3y - 2z = 1

1x - 6y + z = 3

Rešiti zatim zadatak koristeći funkciju linsolve(A, B)