You are on page 1of 21

RAUNSKE VJEBE IZ OR2

Prvi as

1. Kreirati algoritam za izraunavanje povrine trougla primenom Heronovog obrasca.
Napomena: Ukoliko su a, b i c stranice trougla, onda je povrina trougla jednaka:

( )( )( )
P s s a s b s c =
gde je s poluobim trougla, tj. s = (a+b+c)/2.



2. Kreirati algoritam za izraunavanje vrednosti funkcije Y u zavisnosti od broja X, koji predstavlja
ulazni podatak.
2
1, 5
2, 5
, 5
X
Y X X
X X
s

= + <

>




3. Napisati pseudo kod za dati algoritam


Drugi as

4. Kreirati algoritam za izraunavanje faktorijela prirodnog broja N, koji predstavlja ulazni podatak
algoritma.



5. Kreirati algoritam za izraunavanje pribline vrednosti sume alternativnog reda:
( )
2
2
1
vai:
1
1
12
n
n
S S
n
t

=
= =


Sumiranje vriti sve dok je apsolutna vrednost opteg lana sume vea od zadate tanosti E, koja se
unosi na poetku algoritma. Na izlazu ispisati dobijenu vrednost i broj sumiranih lanova.



6. Kreirati algoritam za izraunavanje maksimalne vrednosti niza celih brojeva X, duine N. Duina niza,
kao i njegovi elementi, predstavljaju ulazne podatke algoritma. Odrediti sloenost algoritma u zavisnosti
od broja N za operaciju sabiranja.



Sloenost je 2N-1.

7. Kreirati algoritam kojim se uitava ceo broj N i odreuje da li u tom broju ima parnih cifara. tampati
odgovarajue obavetenje.




Trei as

8. Kreirati algoritam koji uitava matricu A, dimenzija MN, i koji formira vektor B koji se sastoji samo od onih
lanova matrice A koji su vei od ili jednaki aritmetikoj sredini elemenata matrice. Na izlazu tampati dobijeni
vektor. Odrediti sloenost algoritma u zavisnosti od brojeva M i N za operaciju sabiranja.




Sloenost je M(2N+1) + M(2N+1) + MN = M(5N+2).


9. Kreirati algoritam koji na osnovu uneenog prirodnog broja M formira i ispisuje broj N kome je redosled cifara
obrnut u odnosu na uneeni broj. Npr. za uneeni broj M=4916 broj N e biti 6194.


10. Posmatra se niz X od N cijelih brojeva. Potrebno je nacrtati algoritamsku emu za odreivanje broja elemenata
niza X koji se pojavljuju vie od jedanput.


DOMAI ZADACI


Prvi domai zadatak
1. Nacrtati algoritam kojim se uneeni prirodni broj N razbija na proste inioce. Na izlazu
ispisati vektor (niz) prostih inilaca datog broja. Javiti greku u sluaju da uneeni broj
nije prirodan. Primjer: Ukoliko se unese broj N=4158=2*3*3*3*7*11, onda vektor
prostih inilaca ovog broja ima za elemente 2,3,3,3,7 i 11.
RJEENJE:
N
BR=1, IND=0, K=2
DA
K<N
I<K
REM(K,I)==0
DA
IND=1
DA
NE
I=I+1
K=K+1
NE
X[BR]=K
BR=BR+1
N=FIX(N/K)
IND==0
DA
NE
REM(N,K)==0
DA
END
START
N,I,X[30]:INTEGER
N>0 NE
GRESKA
I=1
I<BR
X[BR]
DA
I=I+1
NE
NE
I=2
NE

2. Nacrtati algoritam koji trai sumu svih prirodnih brojeva manjih od 20000 koji su
potpuni kubovi, tj. jednaki su kubu nekog prirodnog broja. Napomena: Brojevi
1,8,27,64( 1
3
, 2
3
, 3
3
, 4
3
) su potpuni kubovi.
3. Nacrtati algoritam kojim se uitava niz cijelih brojeva, sa najvie 30 lanova, i koji vri
obrtanje redosljeda elemenata vektora, tj. zamjenjuje mjesta prvom i posljednjem lanu,
drugom i pretposljednjem itd.. Program napisati tako da vri zamjenu elemenata datog
niza bez korienja pomonih nizova.
Primjer: Ukoliko smo unijeli niz X= 1,32,41,6,71,13, onda bi nakon izvrenja programa
redosljed trebao biti X=13,71,6,41,32,1.


Drugi domai zadatak
1. Kreirati algoritam kojim se unosi broj M, a nakon toga jo 20 brojeva, i koji pronalazi i
tampa koliko ima unijetih brojeva koji su manji ili jednaki sa M.
2. Kreirati algoritam kojim se unosi niz X, duine N. Rezultat algoritam treba da je
formirani novi niz Y, duine N, u nerastui niz elemenata odnosno svaki sledei
elemenat niza Y manji ili jednak od prethodnog elemeta niza Y.
3. Ispisati MATLAB naredbe kojima se zadaje vrijednost
2
3
0.1 2*0.1
cos
2.2 10
x

| | +
=
|

\ .

i rauna vrijednost sledeih izraza:
2
1
1
( ) 1
x
f x e
+
=

etvrti as

1. Date su MATLAB naredbe kojima se kreiraju matrice A i B.
A = [(6:-1:2); (0:4).^2; 3*eye(5)]
B = [(1:4); 2.2*zeros(4); (-1:2).^4]
Odrediti matrice A i B.
6 5 4 3 2
0 1 4 9 16
3 0 0 0 0
0 3 0 0 0
0 0 3 0 0
0 0 0 3 0
0 0 0
A =
1 2 3 4
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 0 1 16
0 3
B
(
(
(
(
(
(
(
(
(
=
(
(
(
(
(
(
(
(

(


b) Napisati MATLAB naredbe kojima se formira vektor vrsta C koji se dobija nadovezivanjem druge,
etvrte i pete vrste matrice A.
C= [A(2,:),A(4,:),A(5,:)]
c) ta e biti rezultat komande length(B)?
>>ans= 6
2. Ispisati MATLAB naredbe kojima se za datu vrijednost x:
2 3
1.4 sin 15
o
x t = +
rauna vrijednost sledeih izraza
3 12
1 5.3210
3 4
1 2 10
3
( 1 ) log ( 2 )
2
x
x
e e
F F tg x x x
x t

= = + + +


x=sqrt(pi^2+sqrt(abs(1.4-sin(pi/180*15)^3)))
F1=(exp(1-x^3)-exp(5.32e-12))/(2-sqrt(abs(x^3-pi)))
F2=tan(x^3-abs(x^3-pi))+log10(x^4+2^x)

3. Napisati Matlab naredbe kojima se crta grafik funkcije
( ) ( )
2
sin
x
y x x e

=
na intervalu xe[0,3] u 200 taaka, crvenom isprekidanom linijom.
x = linspace(0,3,200);
y = sin(x.^2).*exp(-x);
plot(x,y,'r--');

4. Napisati Matlab naredbe kojima se crta krunica poluprenika 1.5, iji se centar nalazi na
koordinatama (4,3). Krunicu ispuniti plavom bojom.

R = 1.5;
t = linspace(0,2*pi,100);
x = 4+R*cos(t);
y = 3+R*sin(t);
plot(x,y);
Peti as

1. Napisati Matlab naredbe kojima se rauna suma svih parnih trocifrenih brojeva.

N = 100:2:999;
suma = sum(N);

2. Napisati Matlab naredbe kojima se raunaju vrijednosti sljedeih izraza:

a) 10!
Fakt = prod(1:10);

b) ( )
10
3
1
1
k
k
k
e
k
=


k = 1:10;
suma = sum((-1).^k.*exp(k)./k.^3);

3. Napisati Matlab naredbe kojima se formira matrica A, dimenzija 15x15, bez direktnog unoenja
vrednosti:
1 1 1
2 2 2
3 3 3
14 14 14
15 15 15
A
| |
|
|
|
=
|
|
|
|
|
\ .


A = ones(15);
A = cumsum(A);

4. Napisati Matlab naredbe kojima se rauna priblina vrijednost integrala
2
1
0
x
xe dx

}

pravougaonim pravilom. Znajui da je tana vrijednost ovog integrala (1-1/e)/2, odrediti apsolutnu
greku aproksimacije.
dx = 0.01;
x = 0:dx:1-dx;
y = x.*exp(-x.^2);
I = sum(y)*dx;
greska = abs(I-(1-1/exp(1))/2);

5. Napisati Matlab naredbe kojima se crta grafik funkcije
( ) ( )
2
sin
x
y x x e

=
na intervalu xe[0,3] u 200 taaka, crvenom isprekidanom linijom. Odrediti (priblino) maksimum te
funkcije na datom intervalu i poziciju maksimuma.

x = linspace(0,3,200);
y = sin(x.^2).*exp(-x);
plot(x,y,'r--');
[maks,poz] = max(y);
x_maks = x(poz);

6. Grafiki prozor izdjeliti na dva dijela i u oba dijela predstaviti funkciju
2 2
x y
z xy e

= za | | 1.5 x < i
| | 1.5 y < , koristei naredbe za grafiki prikaz funkcija dvije promenljive.

[x,y] = meshgrid(-1.5:0.01:1.5,-1.5:0.01:1.5);
z = -abs(x.*y).*exp(-x.^2-y.^2);
figure(1);
subplot(121); mesh(x,y,z);
subplot(122); imagesc(z);

esti as


1. Napisati funkcijski m-fajl deljiv koji pronalazi sumu
svih prirodnih brojeva N, ne veih od broja M, koji
imaju osobinu da je N
2
+N deljivo sa 6. Broj M je
ulazni argument fajla.

function S = deljiv(M)
S = 0;
for N = 1:M
if rem(N^2+N,6) == 0
S = S + N;
end
end

2. Napisati funkcijski m-fajl pod nazivom niz koji za
ulazni argument ina niz X i koji vraa broj pozitivnih
elemenata, broj negativnih elemenata i broj nula u
nizu X.

function [brp,brn,br0] = niz(X);
brp=0;
brn=0;
br0=0;
for i=1:length(X)
if X(i)>0
brp=brp+1;
elseif X(i)<0
brn=brn+1;
else
br0=br0+1;
end
end

3. Napisati funkcijski m-fajl pod nazivom podniz koji za ulazni argument ima niz X i koji kao izlazni argument vraa
podniz pozitivnih elemenata niza X. Ukoliko se fajl pozove sa dva ulazna argumenta, vratiti podniz koji se sastoji samo
od elemenata niza X koji su vei od drugog argumenta funkcije. Ukoliko drugi ulazni argument nije skalar javiti poruku
greke i izai iz funkcije. Ako se fajl pozove sa dva izlazna argumenta, kao drugi izlazni argument vratiti sumu
elemenata izalznog vektora.

function [Y,Sy] = podniz(X,A);
if prod(size(A))~=1
error('Drugi ulazni argument nije skalar');
end
if nargin==1
A=0;
end
Y=[];
for i=1:length(X)
if X(i)>A
Y = [Y,X(i)];
end
end
if nargout==2
Sy=sum(Y);
end

4. Napisati funkcijski m-fajl pod imenom form_mat koji za ulazne argumente ima niz X i prirodne brojeve M i N, a
izlazni argument je matrica A, dimenzija MN, koja se dobija od niza X tako to prvih N elemenata niza X
predstavlja prvu vrstu matrice A, drugih N elemenata niza predstavlja drugu vrstu matrice itd. U sluaju da je:
- duina niza X vea od proizvoda M*N, zanemariti ostatak niza;
- duina niza X manja od proizvoda M*N, matricu dopuniti nulama.
U sluaju da M i N nisu prirodni brojevi, javiti poruku greke i izai iz funkcije.

function A = form_mat(X,M,N);
if (M<1 | fix(M)~=M) | (N<1 | fix(N)~=N)
error('Pogresan unos!');
end
A = zeros(M,N);
k = 1;
for i = 1 : M
for j = 1 : N
if k <= length(X)
A (i,j) = X(k);
k = k + 1;
end
end
end
Sedmi as
5. Napisati funkcijski m-fajl koji odreuje i vraa koliko se u stringu S nalazi slova (malih i velikih), koliko cifara i koliko
ostalih karaktera. String S je ulazni argument funkcijskog fajla, dok su broj slova, cifara i ostalih karaktera izlazni
argumenti.
function [bs,bc,bo]=karakteri(S);
bs=0; bc=0; bo=0;
for i=1:length(S)
if (isletter(S(i))==1) % ili (S(i)>='a' & S(i)<='z')|(S(i)>='A' & S(i)<='Z')
bs=bs+1;
elseif S(i)>='0'&S(i)<='9'
bc=bc+1;
else
bo=bo+1;
end
6. Napisati funkcijski m-fajl pod nazivom palindrom
iji je ulazni argument string S, i koji ispituje da li je
S palindrom, odnosno da li se jednako ita sa obe
strane. Ukoliko je S palindrom fajl vraa broj 1, a u
suprotnom 0. Primjer palindroma je reenica 'Ana
voli Milovana'. Obratiti panju da poloaj razmaka ne
utie na donoenje odluke da li je S palindrom i da se
ne pravi razlika izmeu malih i velikih slova.

function a = palindrom(S);
T = [];
for i=1:length(S)
if(isspace(S(i)))==0 %ili
if(S(i)~=' ')
T=[T,S(i)];
end
end
T=lower(T);
T1=T(length(T):-1:1);
if (strcmp(T,T1)==1)
a=1;
else
a=0;
end
7. Napisati funkcijski m-fajl binar koji za ulazni
argument ima prirodan broj N, a za izlazni argument
ima string S koji predstavlja binarni zapis broja N.

function S = binar(N);
if N<0 | fix(N)~=N
error('Nije prirodan broj');
end
if N==0
S='0';
else
S=[];
while N~=0
S=[num2str(rem(N,2)),S];
N=fix(N/2);
end
end

8. Napisati funkcijski m-fajl kojim se aproksimira vrijednost funkcije
( )
2
sin e
x
y x

=
na intervalu [x
1
, x
2
] polinomom
P(x), koji predstavlja izlazni argument fajla. Vrijednosti x
1
i x
2
se zadaju kao ulazni argumenti fajla. Red polinoma
n kojim se vri aproksimiranje se zadaje kao drugi ulazni argument. Ukoliko se on ne zada podrazumijevati da je
n=4. Ukoliko se funkcijski fajl poziva sa dva izlazna argumenta, onda kao drugi izlazni argument vratiti
maksimalnu apsolutnu vrednost greke aproksimacije
( )
2
( ) sin e ( )
x
x x P x c

= , na intervalu [x
1
, x
2
] u 100 taaka.

function [P,max_eps] = aprox(x,n);
if nargin == 1
n = 4;
end
xp = linspace(x(1),x(2),10);
yp = sin(xp).*exp(-xp.^2);
P = polyfit(xp,yp,n);
if nargout == 2
xs = linspace(x(1),x(2),100);
ys1 = sin(xs).*exp(-xs.^2)
ys2 = polyval(P,xs);
max_eps = max(abs(ys1-ys2));
end
VIII as
MATLAB - GUI

Kreirati GUI aplikaciju u MATLAB-u koja simulira jednostavan kalkulator, koji obavlja 4 osnovne
aritmetike operacije (sabiranje, oduzimanje, mnoenje i deljenje) nad dva operanda. Aplikacija, odnosno
grafiki prozor treba da ima 4 radio dugmeta kojima se odabiraju date operacije, 2 edit polja za upis
vrijednosti operanada i jedno text polje za ispis dobijenog rezultata. Pored ovoga, prozor treba da sadri dva
pushbutton-a, jedno za izvravanje odabrane operacije i drugo za zatvaranje grafikog prozora, kao i jednu
popupmenu kontrolu za odabir boje pozadine prozora. Predlog organizacije grafikog prozora je dat na
sledeoj slici:



Izmeu dva edit polja se nalazi jedno text polje u kome je upisan karakter koji oznaava operaciju koja se
izvrava, to je na gornjoj slici karakter +. Odabirom neke druge operacije (tj. radio dugmeta) u to polje je
potrebno upisati karakter koji predstavlja odabranu operaciju, to je prikazano na sledeoj slici:



Popupmenu kontrolom se vri odabir jedne od moguih 6 boja. U nastavku su dati nazivi boja, kao i vektori
od tri elementa koji definiu svaku od njih, u skladu sa RGB modelom:

Blue [0 0 1]
Green [0 1 0]
Red [1 0 0]
Cyan [0 0.68 0.94]
Magenta [0.93 0 0.55]
Yellow [1 0.95 0]

MATLAB CODE:

Izracunavanje.m
function rez=Izracunavanje(A,B,operacija)
if operacija==1
C=A+B;
elseif operacija==2
C=A-B;
elseif operacija==3
C=A*B;
else
C=A/B;
end
rez=[' = ',num2str(C)];


Kalkulator.m
clear
close all

Boje=[0 0 1; 0 1 0; 1 0 0; 0 0.68 0.94; 0.93 0 0.55; 1 0.95 0];
A=0;
B=0;
operacija=1;

Prozor=figure;
set(Prozor,'NumberTitle','off','Units','Normalized','Position',[0.5 0.5 0.45
0.35],...
'Name','Jednostavan kalkulator','Resize','off','Color',Boje(1,:))

Radio(1)=uicontrol(Prozor,'Style','Radio','Unit','Normalized','Position',[0.1 0.8
0.14 0.05],'String','Sabiranje',...

'Value',1,'Callback','set(Radio(:),''Value'',0),set(Radio(1),''Value'',1),operacija
=1; set(Text(1),''String'',''+'')');
Radio(2)=uicontrol(Prozor,'Style','Radio','Unit','Normalized','Position',[0.1 0.75
0.14 0.05],'String','Oduzimanje',...

'Value',0,'Callback','set(Radio(:),''Value'',0),set(Radio(2),''Value'',1),operacija
=2; set(Text(1),''String'',''-'')');
Radio(3)=uicontrol(Prozor,'Style','Radio','Unit','Normalized','Position',[0.1 0.7
0.14 0.05],'String','Mnozenje',...

'Value',0,'Callback','set(Radio(:),''Value'',0),set(Radio(3),''Value'',1),operacija
=3; set(Text(1),''String'',''*'')');
Radio(4)=uicontrol(Prozor,'Style','Radio','Unit','Normalized','Position',[0.1 0.65
0.14 0.05],'String','Deljenje',...

'Value',0,'Callback','set(Radio(:),''Value'',0),set(Radio(4),''Value'',1),operacija
=4; set(Text(1),''String'',''/'')');


Edit(1)=uicontrol(Prozor,'Style','Edit','Unit','Normalized','Position',[0.34 0.725
0.1 0.06],'String','','HorizontalAlignment','Right',....
'Callback','A=str2num(get(gcbo,''String''));');
Edit(2)=uicontrol(Prozor,'Style','Edit','Unit','Normalized','Position',[0.53 0.725
0.1 0.06],'String','', 'HorizontalAlignment','Right',...
'Callback','B=str2num(get(gcbo,''String''));');

Text(1)=uicontrol(Prozor,'Style','Text','Unit','Normalized','Position',[0.46 0.725
0.05 0.06],'String','+','FontSize',13);
Text(2)=uicontrol(Prozor,'Style','Text','Unit','Normalized','Position',[0.66 0.725
0.2 0.06],'String','','FontSize',12, 'HorizontalAlignment','Left');

OpcijeMenija=str2mat('Blue','Green','Red','Cyan','Magenta','Yellow');
MENI=uicontrol(Prozor,'Style','Popupmenu','Unit','Normalized','Position',[0.1 0.4
0.15 0.03],'String',OpcijeMenija,'Callback',...
'prom_boja=get(gcbo,''value'');set(Prozor,''Color'',Boje(prom_boja,:))');

Dugme(1)=uicontrol(Prozor,'Style','Pushbutton','Unit','Normalized','Position',[0.7
0.3 0.15 0.07],'String','Izracunaj','FontSize',12, ...
'Callback','Rezultat=Izracunavanje(A,B,operacija);
set(Text(2),''String'',Rezultat)');
Dugme(2)=uicontrol(Prozor,'Style','Pushbutton','Unit','Normalized','Position',[0.7
0.18 0.15 0.07],'String','Zatvori','FontSize',12, ...
'Callback','close(Prozor)');

Deveti as

1. Izraunati numeriku vrednost izraza:
( )
1 2 5
2
3
sin 3 / 7 ln 4
10!
e
iz t
| |
= + +
|
\ .

koristei aplikaciju MAPLE.

iz:=sin(3*Pi/7)^2+exp(2*sqrt(5))/10!+ln(4^(1/3));
:= iz + +
|
\

|
.
|
|
sin
3 t
7
2
1
3628800
e
( ) 2 5 2
3
( ) ln 2

evalf(iz);
1.412606679

Napomena: se pie sa velikim P i izrazi se moraju zavriti sa takom-zarez ili dvotakom!




2. Dat je polinom x
5
+10x
4
+32x
3
+26x
2
-33x-36. Koristei MAPLE uneti dati polinom, izvriti njegovu
faktorizaciju i izraunati njegovu vrednost za x=1/2.

pol:=x^5+10*x^4+32*x^3+26*x^2-33*x-36;
:= pol + + + x
5
10 x
4
32 x
3
26 x
2
33 x 36

fakt_pol:=factor(pol);
:= fakt_pol ( ) x 1 ( ) + x 1 ( ) + x 3
2
( ) + x 4

eval(fakt_pol,x=1/2);
-1323
32

evalf(%);
-41.34375000




3. Dat je polinom P(x)=x
3
+(11/2)x
2
-x/2-10. Koristei MAPLE nacrtati dati polinom za xe[-5,5],
pronai njegove nule i odrediti intervale gde je polinom pozitivan.

P:=x->x^3+11/2*x^2-x/2-15;
plot(P(x),x=-5..5);
solve(P(x)=0,{x});
, , { } = x -2 { } = x
3
2
{ } = x -5

solve(P(x)>0,{x});
, { } , < -5 x < x -2 { } <
3
2
x


4. Reiti sistem jednaina:
2x y + z = 4
-x + 3y + 2z = -1
x + y z = 7

solve({2*xy+z=4, -x+3*y+2*z=-1, x+yz=7},{x,y,z});
{ } , , = y
28
15
= x
11
3
= z
-22
15



5. Koristei MAPLE izraunati vrednost sledeih izraza:
a)
10
2
1
2
1
n
n
n
=
+

b)
( )
0
4 1
2 1
n
n
n
+
=

c)
7
3
1
i
i
e
i
=
[


a) sum(2*n/(n^2+1),n=1..10);
3829008689
846523925

b) sum(4*(-1)^n/(2*n+1),n=0..infinity);
t

c) product(exp(i)/i^3,i=1..7);
1
128024064000
e e
2
e
3
e
4
e
5
e
6
e
7

evalf(%);
11.29675951



6. Data je funkcija ( )
1
2
1
x
e
f x
x

=
+
. Napisati MAPLE naredbe kojima se zadaje ova funkcija i kojima se
odreuju prvi i drugi izvod ove funkcije, kao i take ekstrema i prevoja. Izraunati vrednost drugog
izvoda funkcije u taki x=2. Napomena: Prvi i drugi izvod takoe definisati u vidu funkcija, a ne
izraza.

f:=x->exp(x-1)/(x^2+1);

izv1:=x->diff(f(x),x);
solve(izv1(x)=0,{x});

izv2:=x->diff(f(x),x$2);
solve(izv2(x)=0,{x});

eval(izv2(x),x=2);

You might also like