Upload
hayden
View
58
Download
2
Embed Size (px)
DESCRIPTION
Razvoj algoritama u matlabu. Programi. Program - Opis algoritma koji u nekom programskom jeziku jednoznačno određuje što računalo treba napraviti. PROGRAM = Algoritmi + podaci - PowerPoint PPT Presentation
Citation preview
1
Razvoj algoritama u matlabu
2
Programi
Program - Opis algoritma koji u nekom programskom jeziku jednoznačno određuje što računalo treba napraviti.
PROGRAM= Algoritmi + podaci Programiranje - naučiti sintaksu nekog
proceduralnog jezika i steći osnovna intuitivna znanja glede algoritmizacije problema opisanog riječima.
3
Podaci u matlabu
Kompleksni brojevi– kmpl1=2-3i – kmpl2= 2*exp3j
Brojevi– 35– 3.141
Matrice Tekstualni podaci
– ‘moje ime’
4
Matlab koristi aritmetiku sa pomičnim zarezom (engl. floating point, kratko FP)
Uz FP aritmetiku vezano je nekoliko internih varijabli:– realmin = 2.2251e-308 je najmanji broj u FP-sustavu
brojeva. – realmax = 1.7977e+308 je najveći broj u FP-sustavu
brojeva. – eps = 2.2204e-16 je relativna udaljenost između dva
susjedna FP-broja – inf znači +beskonačno, a nastaje ako egzaktni rezultat
premašuje realmax. Slično vrijedi za -inf. – NaN znači Not a Number, tj. neodređenu numeričku
vrijednost. Nastaje iz neodređenih izraza tipa 0/0, beskonačno - beskonačno i sl.
5
Algoritam
Precizno opisan način rješenja nekog problema Jednoznačno određuje što treba napraviti Moraju biti definirani početni uvjeti Konačni broj koraka; svaki korak opisan
instrukcijom Mora biti
– Djelotvoran – daje točno rješenje problema
– Učinkovit – dolazi do rješenja na dovoljno jednostavan način
6
Petlje i uvjetne strukture
Uvjetne strukture jak je alat, budući da omogućava da prijašnje operacije algoritma utječu na buduće.
MATLAB pruža četiri oblika petlji, odnosno uvjetnih struktura: – for petlje, – while petlje, – if-else-end struktura i – switch-case struktura.
7
for petlje for petlje omogućavaju da se grupa naredbi ponavlja
unaprijed određeni broj puta. Opći oblik for petlje je for x = array naredbe... end
naredbe između for i end izvršavaju se jednom za svaki stupac u array.
Na primjer >> for n=1:10 x(n)=sin(n*pi/10); end
8
for petlje
Osim automatski generiranog polja 1:10 može se primjeniti bilo koje polje, npr. >> data=[3 9 45 6; 7 16 -1 5]; >> for n=data
y=n(1)-n(2) end
y = -4 y = -7 y = 46 y = 1
9
for petlje
Pored ovih mogučnosti, for petlja može biti ugnjezđena jedna u drugoj. t=1
for i=1:3
for j= 1:3
a(i,j)=t;
t=t+1;
end
end
1 2 3
4 5 6
7 8 9
10
while petlja Kod while petlje naredbe između while i end
izvršavaju se sve dok su svi elementi izraz-a istiniti:
>> while izraz naredbe... end
Razmotrimo sljedeći primjer >> num=0;EPS=1; >> while (1+EPS)>1 EPS=EPS/2; num=num+1; end
11
while petlja
X=500;while x>3
x=x/10;end» xx =
0.5000
12
if-else-end struktura if-else-end struktura nam omogućava da izvršavamo neke
operacije pod uvjetom da su zadovoljeni određeni uvjeti. Forma ove strukture u općem slučaju je
if izraz1 naredbe1 ... izvršene ako je izraz1 istinit elseif izraz2 naredbe2 ... izvršene ako je izraz2 istinit elseif izraz3 naredbe3 ... izvršene ako je izraz3 istinit else naredbe ... izvršene ako nijedan izraz nije
istinit end
13
if-else-end struktura
Jednostavna if strukture
if uvjet
naredba
end Primjer
if a==5
disp('pogodio si broj')
end
14
if-else-end struktura If struktura sa grananjem na 2 grane
if uvjetNaredbe 1
elseNaredbe 2
End Primjer:
if a==5disp('pogodio si broj')elsedisp('nisi pogodio broj')end
15
if-else-end struktura
Promotrimo primjer :>> EPS=1; >> for num=1:1000
EPS=EPS/2; if(1+EPS)<=1
EPS=EPS*2 break
end end
16
switch-case struktura Ova je struktura pogodna u slučaju kada je potrebno
više puta ispitivati istinitost izraza a na osnovu jednog argumenta.
Forma ove strukture je switch izraz case test_izraz1
naredbe1... case test_izraz2
naredbe2... otherwise
naredbe3 end
17
switch-case struktura% primjer za 'switch-end' strukturu x=2.7; % velicinu u cm units='m' % zelim pretvoriti u 'units' switch units
case {'inch','in'} y=x*2.54;
case {'feet','ft'} y=x*2.54*12;
case {'meter','m'} y=x/100;
case {'milimeter','mm'} y=x*10;
case {'centimeter','cm'} y=x;
otherwise disp(['Nepoznata jedinica:', units]) y=nan;
end
18
Eulerov algoritam:
Najveći zajednički djelitelj x i y while( y nije 0)
(ostatak = ono sto ostane pri cjelobrojnom dijelenju x i y x=yy=ostatak)Rezultat =x
19
sortiranje
4 1 2 3
For i=1:3for j=i+1:4
if a(i)>a(j)temp=a(i)a(i)=a(j)a(j)=temp
EndEnd
End
20
4 1 2 3
21
1 4 2 3
22
1 4 2 3
23
1 4 2 3
24
1 4 2 3
25
1 4 2 3
26
1 4 2 3
27
1 2 4 3
28
1 2 4 3
29
1 2 4 3
30
1 2 4 3
31
1 2 4 3
32
1 2 3 4
33
*
1 2 3 4
34