340 likes | 506 Views
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
E N D
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.
Podaci u matlabu • Kompleksni brojevi • kmpl1=2-3i • kmpl2= 2*exp3j • Brojevi • 35 • 3.141 • Matrice • Tekstualni podaci • ‘moje ime’
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.
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
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.
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
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
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
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
while petlja X=500; while x>3 x=x/10; end » x x = 0.5000
if-else-end struktura • if-else-end strukturanam 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
if-else-end struktura • Jednostavna if strukture if uvjet naredba end • Primjer if a==5 disp('pogodio si broj') end
if-else-end struktura • If struktura sa grananjem na 2 grane if uvjet Naredbe 1 else Naredbe 2 End • Primjer: if a==5 disp('pogodio si broj') else disp('nisi pogodio broj') end
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
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
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
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
sortiranje For i=1:3 for j=i+1:4 if a(i)>a(j) temp=a(i) a(i)=a(j) a(j)=temp End End End
4 1 2 3
1 4 2 3
1 4 2 3
1 4 2 3
1 4 2 3
1 4 2 3
1 4 2 3
1 2 4 3
1 2 4 3
1 2 4 3
1 2 4 3
1 2 4 3
1 2 3 4
1 2 3 4 Polje je sortirano!!! *