You are on page 1of 105

MATLAB

- REŠENI PRIMERI -
SADRŽAJ
Poglavlje 1 – Početak rada u MATLAB-u
Poglavlje 2 – Generisanje nizova
Poglavlje 3 – Matematičke operacije sa nizovima
Poglavlje 4 – Skript datoteke
Poglavlje 5 – Dvodimenzionalni grafikoni
Poglavlje 6 – Funkcije i funkcijske datoteke
Poglavlje 7 – Programiranje u MATLAB-u
Primer zadatka 1-1: Trigonometrijska formula

Trigonometrijska formula data je jednačinom:

Proverite da li je formula ispravnatakošto ćete izračunati vrednost obe strane jednačine, uz zamenu .
REŠENjE

Definišemo x
>> x=pi/5;
>> LHS=cos(x/2)^2 Izračunavamo levu stranu

LHS =

0.9045

>> RHS=(tan(x)+sin(x))/(2*tan(x)) Izračunavamo desnu stranu

RHS =

0.9045

>>
Primer zadatka 1-2: Geometrija i trigonometrija

Četiri kružnice su smeštene kao na slici. U svakoj tački dodira kružnice su tangentne jedna na
drugu. Odredite rastojanje između centra C2 i C4.
Poluprečnici kružnica su: R1 = 16mm, R2 = 6.5mm, R3 = 12mm i R4 = 9.5mm.
Linije koje povezuju centre kružnica čine četiri trougla. Poznate su
dužine svih stranica dva takva trougla, ∆C1C2C3 i ∆C1C3C4. Taj podatak se
koristi za izračunavanje uglova γ1 i γ2 tih trouglova pomoću kosinusne
teoreme. Na primer, γ1 se izračunava iz jednačine:

(C2C3)2 = (C1C2)2 + (C1C3)2 - 2(C1C2) (C1C3)cos γ1

Zatim se izračuna dužina stranice C2C4 pomoću trougla ∆C1C2C4. I tu


pomaže kosinusna teorema - poznate su dužine C1C2 i C1C3, a ugao γ3
je zbir uglova γ1 i γ2.
REŠENjE

Definišemo poluprečnike
>> R1=16;R2=6.5;R3=12;R4=9.5;
Izračunavamo
>> C1C2=R1+R2;C1C3=R1+R3;C1C4=R1+R4; dužine stranica
>> C2C3=R2+R3;C3C4=R3+R4;
>> Gama1=acos((C1C2^2+C1C3^2-C2C3^2)/(2*C1C2*C1C3)); Izračunavamo ϓ1, ϓ2 i ϓ3
>> Gama2=acos((C1C3^2+C1C4^2-C3C4^2)/(2*C1C3*C1C4));
>> Gama3=Gama1+Gama2;
Izračunavamo dužinu
>> C2C4=sqrt(C1C2^2+C1C4^2-2*C1C2*C1C4*cos(Gama3)) stranice C2C4

C2C4 =

33.5051

>>
Primer zadatka 1-3: Provođenje toplote

Telo početne temperature T0 smešteno je u trenutku t = 0 u prostor konstantne


temperature Ts. Temperatura tela će se menjati prema jednačini:

Gde je T temperatura tela u trenutku t, a k konstanta. Konzerva piva temperature


120° F stavljena je u frižider unutračnje temperature 38° F. Izračunajte temperaturu
konzerve posle 3 sata (zaokruženo na najbliži stepen). Pretpostavite da je k = 0.45.
Najpre definišite sve promenljive, a potom izračunajte temperaturu jednom
MATLAB-ovom komandom.
REŠENjE

>> Ts=38;T0=120;k=0.45;t=3;
>> T=round(Ts+(T0-Ts)*exp(-k*t))

T=
Zaokružujemo na najbliži ceo broj
59

>>
Primer zadatka 2-1: Generisanje matrice
Pomoću komandi ones i zeros napravite matricu 4 x 5 u kojoj su prve dve vrste ispunjene
nulama a sledeće dve jedinicama.

REŠENjE

>> A(1:2,:)=zeros(2,5) Prvo pravimo matricu 2 x 5 sa nulama


A=
0 0 0 0 0
0 0 0 0 0

>> A(3:4,:)=ones(2,5)
Dodajemo vrste 3 i 4 sa jedinicama
A=
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
Primer zadatka 2-2: Generisanje matrice

Napravite matricu 6 x 6 u kojoj su dve srednje vrste i dve srednje kolone ispunjene jedinicama, a
ostatak nulama.

REŠENjE

>> AR=zeros(6,6) Prvo pravimo matricu 6 x 6 sa nulama


AR =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
>> AR(3:4,:)=ones(2,6) Trećoj i četvrtoj vrsti dodeljujemo broj 1
AR =
0 0 0 0 0 0
0 0 0 0 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 0 0 0 0
0 0 0 0 0 0

>> AR(:,3:4)=ones(6,2) Trećoj i četvrtoj koloni dodeljujemo broj 1

AR =
0 0 1 1 0 0
0 0 1 1 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 1 1 0 0
0 0 1 1 0 0
Primer zadatka 2-3: Rad sa matricom

Date su matrica A dimenzija 5 x 6, matrica B dimenzija 3 x 6, i vektor v sa 9 elemenata.

a) U komandnom prozoru napravite matrice A, B i niz v.

b) Pomoću jedne komande, zamenite četiri poslednje kolone prve i treće vrste matrice A s prve četiri
kolone prve dve vrste matrice B, poslednje četiri kolone četvrte vrste matrice A elementima od 5 do 8
vektora v, i poslednje četiri kolone pete vrste matrice A kolonama od 3 do 5 treće vrste matrice B.
a) REŠENjE

>> A=[2:3:17; 3:3:18; 4:3:19; 5:3:20; 6:3:21]


A=
2 5 8 11 14 17
3 6 9 12 15 18
4 7 10 13 16 19
5 8 11 14 17 20
6 9 12 15 18 21

>> B=[5:5:30; 30:5:55; 55:5:80]


B=
5 10 15 20 25 30
30 35 40 45 50 55
55 60 65 70 75 80

>> v=[99:-1:91]
v=
99 98 97 96 95 94 93 92 91
b) REŠENjE

>> A([1 3 4 5],3:6)=[B([1 2],1:4); v(5:8);


B(3,2:5)]
A=
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 60 65 70 75

>>
Primer zadatka 3-1: Rešenje tri linerane jednačine (deljenje nizova)

Rešite sledeći sistem lineranih jednačina pomoću matričnih operacija:

4x – 2y + 6z = 8
2x + 8y + 2z = 4
6x + 10y + 3z = 0
Koristeći prethodno navedena pravila linearne algebre, navedeni sistem
jednačina možemo napisati u matričnom obliku AX = B ili XC = D:

= ili
REŠENjE

>> A = [4 -2 6; 2 8 2; 6 10 3]; Rešavanje sistema u obliku AX = B


>> B = [8; 4; 0];
>> X = A\B Rešavanje deljenjem sleva X = A \ B
X=
-1.8049
0.2927
2.6341

Rešavanje pomoću matrice inverzne matrici A: X =B


>> Xb = inv(A)*B
Xb =
-1.8049
0.2927
2.6341
>> C = [4 2 6; -2 8 10; 6 2 3]; Rešavanje sistema u obliku AC = D
>> D = [8 4 0];
>> Xc = D/C Rešavanje deljenjem zdesna X = D \ C
Xc =

-1.8049 0.2927 2.6341

>> Xd = D*inv(C)
Rešavanje pomoću matrice inverzne matrici C: X =D
Xd =

-1.8049 0.2927 2.6341

>>
Primer zadatka 3-2: Ekvivalentna sila (sabiranje vektora)

Na nosač deluju tri sile. Izračunajte ukupnu (ekvivalentnu) silu koja deluje na nosač.
Sila je vektor ( fizička veličina koja ima jačinu i smer). U Dekartovom
koordinatnom sistemu, dvodimenzionalan vektor F možemo zapisati
kao:

F = Fxi + Fyj = Fcosθi + Fsinθj = F(cosθi + sinθj)

Gde je F jačina sile, θ njen ugao prema osi x, Fx i Fy su komponente


od F u smeru ose x odnosno y, a i i j jedinični vektori u tim smerovima.
Ako su poznati Fx i Fy, onda se F i θ mogu izračunati kao:

F = i tanθ =
Ukupna (ekvivalentna) sila koja delujena nosač dobija se sabiranjem
sila koje na njega deluju. MATLAB -ovo rešenje ima 3 koraka:

• Napišite svaku silu kao vektor sa dva elemnta: prvi je x komponentna


vektora, a drugi je njegova komponenta u smeru ose y.

• Odredite vektorski oblik ekvivalentne sile tako što ćete sabrati sve
komponente u smeru ose y i zasebno one u smeru y.

• Izračunjate jačinu i smeru ekvivalentne sile.


REŠENjE
Definišemo promenljive
>> F1M = 400; F2M = 500; F3M=700; jednake jačini svake sile
>> Th1 = -20*pi/180; Th2 = 30*pi/180; Th3 = 143*pi/180; Definišemo promenljive
>> F1 = F1M*[cos(Th1) sin(Th1)] jednake uglu (u radijanima)
svakog vektora sile
F1 =
375.8770 -136.8081
>> F2 = F2M*[cos(Th2) sin(Th2)]
F2 = Definišemo vektore tri sile
433.0127 250.0000
>> F3 = F3M*[cos(Th3) sin(Th3)]
F3 =
-559.0449 421.2705
>> Ftot = F1+F2+F3
Izračunavamo komponente vektora
Ftot = rezultujuće (ekvivalentne) sile
249.8449 534.4625

>> FtotM = sqrt(Ftot(1)^2+Ftot(2)^2)


Izračunavamo jačinu vektora
FtotM = rezultujuće (ekvivalentne) sile
589.9768

>> Th = (180/pi)*atan(Ftot(2)/Ftot(1))
Izračunavamo ugao (u stepenima)
Th = vektora rezultujuće sile
64.9453

>>
Primer zadatka 3-3: Eksperiment sa trenjem (operacije sa pojedinačnim
elementima nizova)

Koeficient trenja µ može se odrediti pomoću eksperimenta u kojem se meri sila potrebna za
pomeranje mase m. Kada se izmeri F )m je poznato), koeficijent trenja se dobija iz formule:
)
U sledećoj tabeli datii su rezultati merenja F u šest eksperimenata. Odredite koeficijent trenja u
svakom eksperimentu i njegovu prosečnu vrednost u svim eksperimentima.

F
Eksperiment br. 1 2 3 4 5 6 m
Masa m (kg) 2 4 5 10 20 50
Sila F (N) 12,5 23,5 30 61 117 294
trenje
REŠENjE

>> m = [2 4 5 10 20 50]; Upisujemo vrednost mase m u vektor


>> F = [12.5 23.5 30 61 117 294]; Upisujemo vrednost sile F u vektor
>> g = 9.81;
>> mi = F./(m*g) Izračunavamo vrednosti mi u svakom
mi = eksperimentu pomoću operacija nad
pojedinačnim elementima

0.63710 0.59888 0.61162 0.62181 0.59633 0.59939

>> mi_sr = mean(mi)


Srednju vrednost elementa vektora mi
mi_sr = 0.61086 izračunavamo pomoću funkcije mean
>>
Primer zadatka 3-4: Kretanje dve čestice
V = 28m/h
a = 4ft/s y
Voz i automobil približavaju se pružnom prelazu. U
trenutku t=0 voz je 400 stopa južno od prelaza i kreće se
brzinom od 54 milje na sat (1 milja – 5280 stopa). U x
istomtrenutku automobile je 200 stopa zapadno od
prelazaikreće se ka njemu brzinom 28 milja na sat, uz
ubrzanje od 4 stope/.Izračunati položaj voza i automobila,
rastojanje između njih i brzinu voza u odnosu na
automobil u svakoj sekundi tokom sledećih 10 sekundi.
Za prikazivanje napraviti matricu 11 x 5, u kojoj svaka
vrsta sadrži u prvoj koloni vreme, a u sledeće četiri kolone V = 54mi/h
položaj voza, položaj auta, rastojanje između voza i auta i
brzinu voza u odnosu na auto.
Pređeni put objekta koji se pravolinijski kreće konstantnim ubraznjem, dat je sa s =
s0 + v0t + at2, gde su s0 i v0 početni položaj i brzina ( u t = 0), a a je ubrznje.
Primenom ove jednačine na voz i auto dobijamo:
y = -400 + v0vozt (voz)
x = -200 + v0autot + a(auto)t2 (auto)
Rastojanje između voza i auto iznosi d = .
Brzina voza je konstantna i vektorski zapisana iznosi: vvoz = v0vozj. Automobil ubrzava
i njegova brzina u trenutku t iznosi: vauto = ( v0auto + a(auto)t)i.
Brzina voza u odnosu na automobil data je sa:
vv/a = vvoz - vauto = - ( v0auto + a(auto)t)i + v0vozj.
Iznos te brizine srazmeran je dužini tog vektora.
Prvo ćemo napisati vektor t sa 11 elemenata za vreme od 0 do 10s , i zatim
izračunati položaj voza i automobila, rastojanje između njih i brzinu voza u odnosu na
automobil u svakoj sekundi unutar tog vremenskog intervala.
REŠENjE
Definišemo promenljive za početne
>> v0voz = 54*5280/3600;v0auto = 28*5280/3600;aauto = 4; brzine (u stopama po sekundi) i ubrzanje
>> t = 0:10; Generišemo vektor t
>> y = -400 + v0voz*t;
Izračunavamo položaje voza i automobila
>> x = -200 + v0auto*t + 0.5*aauto*t.^2;
>> d = sqrt(x.^2 + y.^2); Izračunavamo rastojanje između voza i automobila
>> vauto = v0auto + aauto*t;
Izračunavamo brzinu kretanja automobila
>> brzina_vozRauto = sqrt(vauto.^2+v0voz^2)
>> tabela = [t' y' x' d ' brzina_vozRauto'] Izračunavamo brzinu kretanja
voza u odnosu na automobil
Položaj voza Položaj auta Rastojanje Brzina voza u
Vreme (t) (u stopama, (u stopama, između voza i odnosu na
ft) ft) auta (ft) auto (ft/s)
Primer zadatka 4-1: Visina i površina silosa

Valjkasti silos poluprečnika r ima sferni


krov (kupolu) poluprečnika R. Visina valjkastog
dela je H. Napišite program (skript datoteku)
koji određuje visinu H i površinu silosa za date
vrednosti r, R i zapremine V.
Pomiću programa izračunajte visinu i
površinu silosa poluprečnika r = 30 stopa, R =
45 stopa i zapremine 120000 kubnih stopa.
Promenljivama r, R I V dodelite vrednosti u
komandnom prozoru.
Zapreminu silosa ćemo izračunati sabiranjem zapremina valjkastog
dela i zapremine kupole. Zapremina valjka je data sa:
Vcyl = πr2H
A zapremina kupole sa:
Vcap = πh2 (3R - h)
Gde je h = R - Rcosθ = R ( 1- cosθ), a θ se dobija iz sinθ =
Iz gornjih jednačina za visinu valjkastog dela dobijamo:
H=
Površinu silosa dobijamo sabiranjem površine valjkastog dela i površine
kupole.
S = Scyl + Scap = 2 πr2H + 2 πRh
Skript datoteka silos

teta = asin(r/R); izračunavanje ugla teta


h = R*(1-cos(teta)); izračunavanje visine krova h
V_kupola = pi*h^2*(3*R-h)/3; izračunavanje zapremine kupole
H = (V-V_kupola)/(pi*r^2); izračunavanje visine valjkastog dela H
S = 2*pi*(r*H+R*h); izračunavanje površine S

fprintf('Visina H je: %f m', H)


fprintf('\n Povrsina silosa je: %f kv m', S)
Komandni prozor u kome se pokreće predhodno kreirana datoteka silos

>> r = 30;
Dodeljivanje vrednosti promenljivama
>> R = 45;
>> V = 200000;
>> silos Pokretanje skript datoteke silos

Visina H je: 64.727400 m


Povrsina silosa je: 15440.777753 kv m>>
Primer zadatka 4-2: Težište složene površine

Napišite skript datoteku koja izračunava


koordinate težišta složene površine (složenu
površinu je lako izdeliti na delove čija su težišta
poznata). Korisnik treba da izdeli površinu na
delove i za svaki deo izračuna koordinate težišta
(dva broja) i površinu (jedan broj). Kada se skript
pokrene, zahtevaće od korisnika da upiše tri
broja u jednu vrstu matrice. Korisnik upisuje
onoliko vrsta koliko ima delova. Deo koji
pretstavlja otvor ima negativnu povešinu.
Rezultat programa su koordinate težišta površine
Dimenzije u mm
prikazane na slici.
Površinu smo izdelili na 6 delova, kao što je prikazano na slici.
Ukupnu površinu dobijamo sabiranjem površine tri dela na levoj strani i
oduzimanjem površine tri dela na desnoj strani slike. Na slici su
označeni položaji i kordinate težišta i površina svakog dela.

Kordinate težišta celokupne površine date su sa:

i , gde su i A kordinate težišta odnosno površine svakog dela.


Jedinice za koordinate, za površinu
Skript datoteka teziste

% Program izracunava koordinate tezista slozene povrsine


clear C xs ys As generišemo vektor vrstu za x koordinatu
C = input('Unesi matricu cija svaka vrsta ima tri elementa\nU težista svakog dela (prva kolona matrice C)
svaku vrstu upisi x i y koordinate tezista i povrsinu dela\n');
generišemo vektor vrstu za y koordinatu
xs = C(:,1)'; težista svakog dela (druga kolona matrice C)
ys = C(:,2)';
generišemo vektor vrstu površinu
As = C(:,3)'; svakog dela (treća kolona matrice C)
A = sum(As);
x = sum(As.*xs)/A; Izračunavamo ukupnu površinu

y = sum(As.*ys)/A; Izračunavamo koordinate težišta složene površine


fprintf("Koordinate tezista su: (%f, %f)",x,y)
Komandni prozor u kome se pokreće predhodno kreirana datoteka teziste

>> teziste
Unesi matricu cija svaka vrsta ima tri elementa
U svaku vrstu upisi x i y koordinate tezista i povrsinu dela
[100 100 200*200
60-120/pi 200+120/pi pi*60^2/4 Upisivanje podataka za matricu C
60+140/3 220 140*60/2 Svaka vrsta ima tri elementa: x, y i A
pojedinačnih delova složene površine
100 100/pi -pi*50^2/2
150 95 -40*150
105 145 -50*50]
Koordinate tezista su: ( 85.387547, 131.211809 )
Primer zadatka 5-1: Iscrtavanje funkcije i njenih izvoda

Na istom grafikonu nacrtajte funkciju injenprvi I drugiizvod, u granicama -2 ≤


x ≤ 4.

Rešenje:

Prvi izvod funkcije je y′ = 9x2 - 26.


Drugi izvod funkcije: y″ = 18x.
Napisaćemo skript datotetku koja generiše vektor x i izračunava y, y′ i y″.
REŠENjE

x=[-2:0.01:4];
y=3*x.^3-26*x+6;
yd=9*x.^2-26;
ydd=18*x;

plot(x,y,'-b',x,yd,'--r',x,ydd,':k')
Grafik funkcije injenogprvog I drugogizvoda
Primer zadatka 5-2: Mehanizam klip - klipnjača - radilica

Mehanizam klip – klipnjača – radilica ima mnogo primena u tehnici. U mehanizmu


prikazanom na slici, radilica rotira konstantnom brzinom 500 o/min.

Izračunajte i nacrtajte položaj, brzinu i ubrzanje klipa za jedan obrt radilice. Postavite cva tri
grafikona na istu stranicu. Zadajte za t = 0.
Radilica rotira konstantnom ugaonom brzinom. To znači da ako zadamo θ = θ°
za t = 0, onda je ugao θ u trenutku t dat sa θ = , a = 0 u svakom trenutku. Rastojanja
d1 i h data su sa:
d1 = rcosθ i h =rsinθ
Ukoliko znamo h, rastojanje d2 možemo izračunati pomoću Pitagorine teoreme:
d2 = (c2- h2)1/2 = (c2- r2sin2θ)1/2
Položaj klipa x dat je sa:

x = d1 + d2 = rcosθ + ( c2 - r2sin2θ)1/2

Izvod od x po vremenu daje brzinu klipa:

x = -rsinθ -

Drugi izvod x po vremenu daje ubrzanje klipa:

x = -rcosθ -

U prethodnoj jednačini uzeto je da ima vrednost nula. Navešćemo MATLAB-ov program


(skript datoteku) koji izračunava i crta položaj, brzinu i ubrzanje za jedan obrt radilice.
REŠENjE

teta_prim_opm = 500; % definisemo teta_prim(o/min)


r = 0.12; % definisemo r
c = 0.25; % definisemo c

teta_prim_radps = teta_prim_opm*2*pi/60;% teta_prim(o/min) u teta_prim(rad/s)

tf = 2*pi/teta_prim_radps; % izracunavamo vreme potrebno za jedan obrt radilice


t = linspace(0,tf,200); % generisemo vektor za vreme sa 200 elemenata
teta = teta_prim_radps*t; % izracunavamo teta za svako t
d2s = c^2-r^2*sin(teta).^2; % izracunavamo kvadrat d_2 za svako teta
x = r*cos(teta)+sqrt(d2s); % izracunavamo x za svako teta
xd = -r*teta_prim_radps*sin(teta)- ...
(r^2*teta_prim_radps*sin(2*teta))./(2*sqrt(d2s)); % izracunavamo x' za svako teta
xdd = -r*teta_prim_radps^2*cos(teta)- ...
(4*r^2*teta_prim_radps^2*cos(2*teta).* ...
d2s+(r^2*sin(2*teta)*teta_prim_radps).^2)./(4*d2s.^(3/2)); % izracunavamo x'' za svako teta
% crtanje prvog grafika - x(t)

subplot(3,1,1)
plot(t,x)

grid

xlabel('Vreme(s)')
ylabel('Polozaj(m)')

% crtanje drugog grafika - x’(t)

subplot(3,1,2)
plot(t,xd)

grid

xlabel('Vreme(s)')
ylabel('Brzina(m/s)')
% crtanje treceg grafika - x’’(t)

subplot(3,1,3)
plot(t,xdd)

grid

xlabel('Vreme(s)')
ylabel('Ubrzanje(m/s^2)')

Položaj, brzina i ubrzanje klipa kao funkcije vremena


Primer zadatka 6-1: Upotreba matematičke funkcije u drugoj funkciji

Napišite funkcijsku datoteku (po imenu pog6jedan) za funkciju:

Ulaz u funkciju je x, a izlaz f(x). Pomoću funkcije izračunajte za x =


6.
Funkcijska datoteka za funkciju f(x)

function y = pog6jedan(x) Red sa definicijom funkcije

y = (x.^4*sqrt(3*x+5))./(x.^2+1).^2;

Dodeljivanje vrednosti izlaznom


argumentu
Obratite pažnju na to da je matematički izraz u funkcijskoj datoteci
napisan za izvršavanje nad pojedinačnim elementima ulaznog
argumenta. Zato će i y biti vektor ako je x vektor. Snimite funkciju a
zatim, ako treba, ptanju pretraživanja izmenite tako da obuhvati i
direktorijum u koji je funkcija snimljena. U sledećem primeru funkciju
ćemo pozvati iz komandnog prozora.
Vrednost funkcije za x = 6 možemo izračunati tako što ćemo u komandni prozor
upisati pog6jedan(6) ili vrednost funkcije dodeliti novoj promenljivoj

>> pog6jedan(6)
ans =
4.5401

>> F=pog6jedan(6)
F=
4.5401

>>
Primer zadatka 6-2: Konverzija jedinica za temperaturu

Napišite funkciju koju definiše korisnik (po imenu FuC) koja pretvara
temperaturu izraženu u stepenima F u temperaturu u stepenima C.
Upotrebite tu funkciju za rešavanje sledećeg zadatka. Zbog promene
temperature za ∆T, dužina tela se promeni za ∆L=αL ∆T, gdeje α
koeficijenttoplotnogširenja. Izračunajte promenu povrčine pravougaone
(4.5 x 2.25m) aluminijumske (α=23* 1/°C)ploče ako se njena
temperatura promeni sa 40°F na 92°F.
Funkcija za konverziju stepeni F u stepene C

function C = FuC(F) Red sa definicijom funkcije

C = 5*(F-32)./9; FuC pretvara stepene F u stepene C

Dodeljivanje vrednosti izlaznom argumentu


Skript datoteka (PromenaPovrsine) koja izračunava promenu površine
ploče zbog promene temperature

a1=4.5;b1=2.25;T1=40;T2=92;alfa=23e-6;
deltaT=FuC(T2)-FuC(T1); Izračunavamo razliku temperature
pomoču funkcije FUC
a2=a1+alfa*a1*deltaT; Izračunavamo novu dužinu i širinu
b2=b1+alfa*b1*deltaT;
PromenaPovrsine=a2*b2-a1*b1; Izračunavamo promenu površine
fprintf("Promena povrsine je %6.5f kvadratnih
metara",PromenaPovrsine)
Izvršavanjem skript datoteke u komandnom prozoru dobijamo rešenje

>> PromenaPovrsine

PromenaPovrsine =

0.0135

>>
Primer zadatka 6-3: Rastojanje između dve tačke u polarnim koordinatama

Napišite lokalnu funkciju koja


izračunava rastojanje između dve tačke u
ravni, kada je položaj tačaka dat u
polarnim koordinatama. Pomoću nje
izračunajte rastojanje između tačaka A(2,
π/6) i B(5, 3π/4).
Rastojanje izmedju dve tačke u polarnim koordinatama može se
izračunati pomoću konusne teoreme:

Formulu za rastojanje najpre ćemo upisati kao lokalnu funkciju s


četiri argumenta i zatim pomoću nje izračunati rastojanje izmedju
tačaka A i B.
REŠENjE

d=inline('sqrt(rA^2+rB^2-2*rA*rB*cos(thetaB-thetaA))',...
'rA','thetaA','rB','thetaB’)
Redosled argumenata je definisan kao (rA,thetaA,rB,thetaB)

d(rA,thetaA,rB,thetaB)=sqrt(rA^2+rB^2-2*rA*rB*cos(thetaB-thetaA))

>> RastAdoB=d(2,pi/6,5,3*pi/4)
RastAdoB =
5.8461 Argumenti su upisani po redu datom u definiciji funkcije
Primer zadatka 6-4: Eksponencijalni rast i opadanje

Model eksponenecijalnograstailiopadanjaoređenekoličinedatjesaA (t) = A0gdesuA


(t)iA0količina u trenutku todnosnotrenutku 0, a k jekonstantaspecifičnazakonktetnuprimenu.
Napišitefunkicijukojauzpomoć tog modelapredviđakoličinuA (t) u trenutkut akojepoznato A0
i A(t1) u nekomdrugomtrenutku t1. Imeiargumentefunkcijedefinišitekao At = expRO (A0, At1,
t1, t), gdeizlazni argument At odgovaraA(t), a ulazniargumenti A0, At1, t1, t odgovarajuA0,
A(t1), t1, t.

Upotrebitefunkcijskudadoteku u komandnomprozoruzasledećadvaslučaja:
a) Godine 1980, u Meksikuježivelo 67 milionastanvnika, 1986. 79 miliona.
Procenitebrojstanovnika 2000.
b) Vremepoluraspadaradiaktivnogmaterijalaiznosi 5.8 godina.Kolikoćepreostati 7-gramskog
uzorkanakon 30 godina
Da biste upotrebili model eksponencijalnog rasta, morate prvo
izraziti vrednost konstante k preko A0, A(tl) i tl:

Kada je poznato k, model se može upotrebiti za proceduru broja


stanovnika u proizvoljnom trenutku vremena.
Funkcija expRO

function At=expRO(A0,At1,t1,t) Red sa definicijom funkcije

% expRO izracunava eksponencijalni rast i opadanje


% ulazni argumenti su:
% A0 - vrednost u trenutku 0
% At1 - vrednost u trenutku t1
% t1 - vreme t1
% t - vreme t
% izlazni argument je At - vrednost u trenutku t

Izračunavamo vrednost k
k=log(At1/A0)/t1;
At=A0*exp(k*t); Izračunavamo A(t) (dodeljujemo vrednost
izlaznoj promenljivoj)
Izvršavanje funkcije expRO u komandnom prozoru

>> expRO(67,79,6,20)

ans =

116.0332 procena broja stanovnika 2000. godine

>> expRO(7,3.5,5.8,30)

ans =

Količina materijala preostala nakon 30 godina


0.1941

>>
Primer zadatka 6-5: Kretanje projektila

Napišite funkcijsku datoteku koka izračuvana putanju proejktila. Ulazni


argumenti fuknkcije su početna brzina i ugao pod kojim je projektil ispaljen. Izlazni
argumenti su maksimanla visina i rastojanje. Sem toga, funkcija treba da nacrta
grafit putanje. Izračunajte pomoću te funkcije putanju projektila ispaljenog brzinom
od 230 m/s pod uglom od 39°.
Analiziraćemo zasebno horizontalne i vertikalne komponente kretanja projektila.
Početa brzina, υ0, može se rastaviti na horizontalnu i vertikalnu komponentu:

U vertikalnom pravcu, brzina i položaj projektila dati su:

Vreme potrebno projektilu da dostigne najvišu ačku (vy =0) i odgovarajuća visina dati su sa:

Ukupno vreme leta dvaput je duže od vremena potrebnog za dostizanje najviše tačke,
ttot = 2tlunax. U horzontalnom pravcu brzina je konstantna, a položaj projektila dat je sa:

 
U MATLAB-ovoj notaciji, ime i argumenti funkcije dati su sa: (hmax, dmax) = putanja
(v0,theta).
Funkcija putanja izracunava maksimalnu visinu i rastojanje projektila i crta putanju

function [hmax,dmax]=putanja(v0,theta)

% v0: pocetna brzina u (m/s) ulazni argumenti


% theta: ugao u stepenima

% hmax: maksimalna visina u (m)


% dmax: maksimalno rastojanje u (m) izlazni argumenti
% funkcija takodje crta grafik putanje

g=9.81
v0x=v0*cos(theta*pi/180);
v0y=v0*sin(theta*pi/180);
thmax=v0y/g;
hmax=v0y^2/(2*g);
ttot=2*thmax;
dmax=v0x*ttot;
Crtanje grafika putanje

tplot=linspace(0,ttot,200);
x=v0x*tplot;
y=v0y*tplot-0.5*g*tplot.^2;
plot(x,y)

xlabel('Rastojanje (m)')
ylabel('visina (m)')
title('PUTANjA PROJEKTILA')
Izvršavanjem skript datoteke u komandnom prozoru dobijamo rešenje i grafik

>> [h d]=putanja(230,39)

h=
1.0678e+03

d=
5.2746e+03

>>
d=inline('sqrt(rA^2+rB^2-2*rA*rB*cos(thetaB-thetaA))',...
'rA','thetaA','rB','thetaB')

Redosled argumenata je definisan kao (rA,thetaA,rB,thetaB)

d(rA,thetaA,rB,thetaB)=sqrt(rA^2+rB^2-2*rA*rB*cos(thetaB-thetaA))

>> RastAdoB=d(2,pi/6,5,3*pi/4)
RastAdoB =
5.8461
Argumenti su upisani po redu datom u definiciji funkcije
Primer zadatka 7-1: Rastojanje između dve tačke u polarnim koordinatama

Sledeći podaci su maksimalne dnevne temperature (u farenhajtima), zabeležene u


Vašingtonu tokom aprila 2002. godine: 58 73 73 53 50 48 56 73 73 66 69 63 74 82 84
91 93 89 91 80 59 69 56 64 63 66 64 74 63 69. Pomoću racionalnih logičkih operatora
utvrdite sledeće:

a) Ukupan broj dana u kojima je temperatura bila iznad 75 stepeni


b) Ukupan broj dana u kojima je temperatura bila između 65 i 80stepeni
c) Dane u mesecu u kojima je temperatura bila između 50 i 60 stepeni
Skript datoteka primer 7_1

T=[58 73 73 53 50 48 56 73 73 66 69 63 74 82 84 ... Vektor koji sadrži jedinice na mestima


91 93 89 91 80 59 69 56 64 63 66 64 74 63 69]; gde je T>=75

Tiznad75=T>=75; Zbir svih jedinica u vektoru Tiznad75

Vektor koji sadrži jedinice na mestima


NdanaTiznad75=sum(Tiznad75) gde je T>=65 I T<=80

Zbir svih jedinica u vektoru Tod65do80


Tod65do80=(T>=65)&(T<=80);
NdanaTod65do80=sum(Tod65do80)
datumuTod50do60=find((T>=50)&(T<=60)) Funkcija find daje adreseelemenata vektora
T koji imaju vrednost između 50 i 60
Skript datoteka pod nazivom primer 7_1 izvršena u komandnom prozoru

>> primer7_1

NdanaTiznad75 =
7

NdanaTod65do80 =
12

datumuTod50do60 =
1 4 5 7 21 23
>>
Struktura if - end

Na slici prikazana je šema strukture if – end . Slika


False Iskaz
prikazuje kako se komande upisuju u program, i
if
dijagram toka koji simbolično prikazuje redosled
izvršavanja komandi. Pri izvršavanju, programnajpre True
nailazi na iskaz if. Ako uslovni iskaz u iskazu if ima
Komande
vrednost true, program izvršava komande koje
neposredno slede iskazu if , sve do iskaza end. Ako je
uslovni iskaz false, program preskače grupu komandi end
između iskaza if i end, i nastavlja da izvršava komande
iza iskaza end .
Struktura uslovnog iskaza if - end
Primer zadatka 7-2: Obračun zarade radnika
Radnik je plaćen određeni iznos po satu za rad do 40 sati, a prekovremeni rad se
plaća 50% više. Napišite program u skript datoteci koji će obračunavati zaradu radnika.
Program zahteva od korisnika da unese ukupan broj sati i iznos satnice, a zatim
prikazuje ukupnu zaradu.

Rešenje

Sadržaj skript datoteke prikazan je na narednom slajdu. Program prvo izračunava


zaradu tako što množi broj radnih sati sa cenom satnice. Zatim pomoću iskaza if ispituje
da li je broj sati veći od 40. ako jeste, izvršava se sledeći red i izračunava dodatna zarada
za radne sate preko 40. Ukoliko nije, program preskače sve komande do iskaza end.
Skript datoteka primer 7_2

s=input('Unesite broj radnih sati ');


c=input('Unesite cenu satnice u $ ');
Zarada=s*c;
if s>40
Zarada=Zarada+(s-40)*0.5*c;
end
fprintf('Zarada radnika je %5.2f$', Zarada)
Skript datoteka pod nazivom primer 7_2 izvršena u komandnom prozoru u dva slučaja

>> primer7_2
Unesite broj radnih sati 35
Unesite cenu satnice u $ 8
Zarada radnika je 280.00$>>

>> primer7_2
Unesite broj radnih sati 50
Unesite cenu satnice u $ 10
Zarada radnika je 550.00$>>
Struktura if - else - end

Ova struktura omogućava da se izabere izvršavanje


jedne od dve moguće grupe komandi. Na slici se vidi False Iskaz
tok tj. redosled kojim se komande izvršavaju. U prvom if
redu nalaze se iskaz if i uslovni israz. Ako je vrednost
uslovnog izraza true, program izvršava prvu grupu True
komandi između iskaza if i else, a zatim preskače ostale Komande: Komande:
komande do iskaza end. Ako je vrednost uslovnog Grupa 1 Grupa 2
izraza false, program preskače komande do iskaza else, end
a zatim izvršava komande koje se nalaze između else i
end.
Struktura uslovnog iskaza if - else - end
Primer zadatka 7-3: Nivo vode u vodotornju

Rezervoar vodotornja ima oblik prikazan na


crtežu (donji deo je valjak, a gornji
zarubljena obrnuta kupa). Unutar
rezervoara nalazi se plovak koji pokazuje
nivo vode. Napišite funkciju koja izračunava
količinu vode u zavisnosti od položaja
(visina h) plovka. Ulazni argument funkcije
je vrednost h, a rezultat je količina vode
izražena u .
Za 0 ≤ h ≤ 19 m, količina vode je određena valjkom visine h: V=π/2.52h

Za 19 < h < 33 m, količina vode se izračunava kao zbir zapremine valjka visine 19
m i količine vode u kupi:

Ime funkcije,čiji je sadrđaj prikazan na narednom slajdu, jeste v = kolvode(h).


REŠENjE

function v = kolvode(h)
% kolvode izracunava kolicinu vode u tornju
% ulazni argument je nivo vode u metrima
% rezultat je kolicina vode u kubnim metrima
if h<=19
v=pi*12.5^2*h;
else
rh=12.5+10.5*(h-19)/14;
v=pi*12.5^2*19+pi*(h-19)*(12.5^2+12.5*rh+rh^2)/3;
end
Dva primera upotrebe funkcije u komandnom prozoru

>> kolvode(8)
ans =
3.9270e+003

>> VOL=kolvode(25.7)
VOL =
1.4115e+004
Struktura if - elseif - else - end

Na slici je prikazana struktura if – elseif – else –


end. Vidi se kako se komande upisuju u program,
a dijagram toka simbolično prikazuje redosled False Iskaz
if
kojim se komande izvršavaju. Struktura sadrži
dva uslovna iskaza (if i elseif) koji omogućavaju True
da sejedna od tri grupe komandi odabere za False Komande:
Iskaz
izvršavanje. U prvom redu nalazi se iskaz if kojem elseif Grupa 1
sledi uslovni iskaz. Ukoliko uslovni iskaz ima
vrednost true, program izvršava prvu grupu True
komandi, izmeđi iskaza if i elseif, a zatim prelazi Komande: Komande:
na end. Ako uslovni izraz u iskazu if ima vrednost Grupa 3 Grupa 2
false, program prelazi na izraz elseif ima
vrednost true, program izvršava drugu grupu end
komandi između iskaza elseif i else, a zatim
prelazi na end. U slučaju da uslovni izraz u iskazu
else ima vrednost false, program prelazi na else i
Struktura uslovnog iskaza if - elseif - else - end
izvršava treću grupu komandi, između iskaza else
i end.
Iskaz switch – case
.......... MATLAB-ov program
Iskaz switch je još jedan način upravljanja tokom rada programa.
..........
On omogućava da se za izvršavanje izabere jedna od više mogućih
grupa komandi. Struktura tog iskaza prikazana je na slici.
switch izraz switch
case vrednost1
- Prvi red se sastoji od komande koja ima oblik: .................
................. grupa komandi 1
case vrednost2
switch izraz switch
.................
grupa komandi 2
.................
Izraz u komandi switch može biti skalarna vrednost ili znakovni niz.
case vrednost3
Najčešće je to promenljiva kojoj je dodeljena skalarna vrednost ili
.................
znakovni niz. grupa komandi 3
.................
- Nakon komande switch sledi jedna ili više komandi case. Iza case vrednost4
.................
svake komande case sledi vrednost (skalar ili znakovni niz: grupa komandi 4
.................
vrednost1, vrednost2 itd.), i pridružena grupa komandi ispod
end
iskaza.
- Iza poslednje komande case može biti komanda otherwise, ..........
.......... MATLAB-ov program
nakon koje sledi grupa komandi.
- Poslednji red mora sadržati iskaz end.
Primer zadatka 7-5: Zbir vrednosti reda

a) Pomoću petlje for-end u skript datoteci, izračunajte zbir prvih n članova


reda . Izvršite skript datoteku za n=4 I n=20.
b) Funkcija sin(x) može se napisati kao Tejlerov red u obliku:
Napišite korisničku funkciju koja izračunava sin(x) pomoću tejlorovog reda. Ime
i argumenti funkcije neka budu y = Tsin(x,n). Ulazni argumenti su ugao x, izražen
u stepenima i n, broj članova reda. Upotrebite tu funkciju da biste izračunali
sin(150°) pomoću reda od 3 i 7 članova.
Skript datoteka primer 7_5a

n=input('Upisite broj clanova');


S=0; Početna vrednost zbira je nula

for k=1:n
S=S+(-1)^k*k/2^k;
end
fprintf('Zbir clanova reda je %f',S)

U svakom prolazu se izračunava vrednost


jednog člna reda, koja se dodaje zbiru
članova izračunatom u predhodnom
prolazu
Članovi reda se sabiraju u petlji. U svakom prolazu se izračunava po jedan član reda
(u prvom prolazu prvi član, u drugom prolazu drugi član itd.), a zatim dodaje zviru
prethodnih članova. Datoteka je snimljena pod primer7_5a a zatim izvršena dvaput u
komandom prozoru:

>> primer7_5
Upisite broj clanova4
Zbir clanova reda je -0.125000>>

>> primer7_5
Upisite broj clanova20
Zbir clanova reda je -0.222216>>
FUNKCIJA

function y=Tsin(x,n)
% Tsin izracunava sinus ugla pomocu Tejlerove formule
% Ulazni argumenti
% x - ugao izrazen y stepenima, n - broj clanova reda
xr=x*pi/180; Preračunavanje ugla iz radijana u stepene

y=0;
for k=0:n-1
y=y+(-1)^k*xr^(2*k+1)/factorial(2*k+1);
end
Prvi član odgovara vrednosti k=0, što znači da ako treba sabirati n članove
reda, u poslednjem prolazu moramo imati k=n-1. Primenom ove funkcije, u
komandnom prozoru je izračunat sin(150°) pomoću redova od 3 i 7 članova.

>> Tsin(150,3)
ans =
0.6523

>> Tsin(150,7)
ans =
0.5000

>>
Petlje for – end
U petljama for – end, izvršavanje komande, ili grupe komandi, ponavlja se zadati broj puta. Oblik ove
vrste petlji prikazazan je na slici

Indeksna Vrednost k u prvom Korak povećanja k


promenljiva petlje prolazu posle svakog prolaza

for k = f : s : t Vrednost k u
........... poslednjem prolazu
........... grupa MATLAB-ovih
........... komandi
end

Struktura petlje for - end


Primer zadatka 7-6: Menjanje vrednosti elemenata vektora

Vektorjedefinisannasledećinačin:
V=.

Napišiteskriptkojiudvostručujevrednostpozitvinihelemenatadeljivihs
a 3 ili 5, a podiženatrećistepenvrednostnegativnihelemenatavećih od
-5.
REŠENjE

V=[5, 17, -3, 8, 0, -1, 12, 15, 20, -6, 6, 4, -7, 16];

Promenljivoj n dodeljujemo vrednost jednaku broju


n=length(V); elemenata vektora V
for k=1:n
if V(k)>0&(rem(V(k),3)==0|rem(V(k),5)==0)
V(k)=2*V(k);
elseif V(k)<0&V(k)>-5
V(k)=V(k)^3;
end
end
Izvršavanje u komandnom prozoru

>> V

V=

10 17 -27 8 0 -1 24 30 40 -6 12 4 -7 16

>>
Petlje while – end

Petlje while – end se koriste kada je potrebno izvršavanje petlji, ali


ukupan broj prolaza nije unapred poznat. U petljama while – end,
broj prolaza nije zadat pre početka petlje. Umesto toga, petlja se
izvršava dok je ispunjen zadati uslov. Struktura petlje while end while uslovni izraz
prikazana je na slici. ...........
........... grupa MATLAB-ovih
U prvom redu se nalazi iskaz while koji sadrži uslovni izraz. Ako je ........... komandi
on false, MATLAB prelazi na iskaz end i nastavlja izvršavanje end
programa. Ukoliko je izraz true, MATLAB izvršava grupu komandi
između komandi while – end. Zatim se vraća na komandu while i
ispituje vrednost uslovnog izraza. Petlja se izvršava sve dok uslovni Struktura petlje while - end
izraz ne dobije vrednost false
Primer zadatka 7-7: Predstavljane funkcije pomoću Tejlorovog
reda
Funkcijaf(x) = može se predstaviti u oblikuTejlorovogredanasledećinačin: =.
NapišiteskriptkojiizračunavapomoćuTejlorovogreda. Ovaj program
izračunavatakoštosabiračlanoveTejlorovogreda, a zaustavlja se
kadaapsolutnavrednostdodatogčlanabudemanja od 0.0001. Upotrebitepetlju
while-and, aliograničitebrojprolazana 30. Ako u
tridesetomprolazudodatičlanreda ne budemanji od 0.001, program
prekidapetljuiprikazujeporuku da jesabranotridesetčlanova.
Pomoćunapisanogprogramaizračunajte e2, e-4, e21.
Prvih nekoliko članova Tejlorovog reda su:

Program koji pomoću tog reda izračunava vrednost funkcije prikazan je u


narednom pasusu. Prvo se od korisnika zahteva da se unese vrednost za x.
Zatim se prvom članu reda, an, dodeljuje vrednost 1, a vrednost člana an
dodeljuje se zbiru članova, s. Od drugog člana pa nadalje, pomoću petlje
while program izračunava vrednost n-tog člana reda i sabira ga sa ukupnim
brojem prethodnih članova. Program broji i ukupan broj članova, n. Uslovni
izraz u komandi while ima vrednost true sve dok je apsolutna vrednost n-to
člana reda manja od 0.0001 i dok je ukupan broj prolaza manji od 30. To znači
da se izvršavanje petlje zaustavlja ako vrednost tridesetog člana nije manja
od 0.0001.
Skripta primer7_7

x=input('Upisite x ');
n=1; an=1; S=an;
while abs(an)>=0.0001&n<=30 % pocetak petlje while-end
an=x^n/factorial(n);% izracinavanje n-tog clana
S=S+an; % sabiranje n-tog clana sa zbirom prethodnih clanova
n=n+1; % prebrojavanje ukupnog broja prolaza
End % komanda end petlje while
if n>=30 % petlja if-else-end
disp('Potrebno je vise od 30 clanova')
else
fprintf('exp(%f)=%f',x,S)
fprintf('\nBroj clanova je: %i',n)
end
Program prikazuje rezultate iskaza if-else-end. Ako je izvršavanje
petlje prestalo zato što n-ti član nije manji od 0,0001, program prikazuje
poruku o tome. Ukoliko je vrednost funkcije uspešno izračunata,
program prikazuje vrednost funkcije i ukupan broj članova. Kada se
program izvršava, borj prolaza zavisi od promenljive x. Pomoću ovog
programa (koji je snimljen u datoteci expox) izračunate su vrednosti za
e2, e-4 i e2l.
Izvršavanje u komandnom prozoru

>> primer7_7
Upisite x 2
exp(2.000000)=7.389046
Broj clanova je: 12>>
>> primer7_7
Upisite x -4
exp(-4.000000)=0.018307
Broj clanova je: 18>> primer7_7
Upisite x 21
Potrebno je vise od 30 clanova
>>
Ugnježđene petlje i ugnježđeni uslovi iskaza
Petlje I uslovni iskazi mogu se ugnježdavati jedni u
druge. To znači da petlja i/ili uslovni iskaz može
započeti (i zavrčiti se) unutar drugr petlje i/ili uslovnog
iskaza. Dubina ugnježšđavanja petlji i uslovnih iskaza
nije ograničena.

For k = 1 : n
for h = 1 : m
............. Kad god se vrednost k poveća za , ugnježđena
Grupa Ugnježđena
............. Petlja petlja se izvršava m puta. Grupa komandi se
komandi petlja
............. izvršava ukupno n x m puta.
end
end
Primer zadatka 7-8: Formiranje matrice u petlji

Napišite skript koji formira matricu N x M elemenata sledećih vrednosti: u


prvoj vrsti, vrednosti elemenata su redni brojevi kolona; vrednost svakog
elementa u prvoj koloni jednaka je rednom broju vrste. Vrednosti svih ostalih
elemenata izračunavaju se tako što se tekućem elementu dodeli zbir vrednosti
elementa iznad i ispod njega. Kada se pokrene, program najpre zahteva od
korisnika da zada vrednosti za n i m.
REŠENjE

n=input('Upisite broj vrsta ');


m=input('Upisite broj kolona ');
A=[]; % definicija prayne matrice A
for k=1:n % pocetak prve petlje for-end
for h=1:m % pocetak druge petlje for-end
if k==1 % pocetak novog iskaza
A(k,h)=h; % dodela vrednosti elementima u prvoj vrsti
elseif h==1
A(k,h)=k; % dodela vrednosti elementima u prvoj koloni
else
A(k,h)=A(k,h-1)+A(k-1,h); % dodela vrednosti ostalim elementima
end % komanda end ugnjezdjene petlje for-end
end
end
A
Izvršavanje u komandnom prozoru

>> primer7_8
Upisite broj vrsta 4
Upisite broj kolona 5

A=

1 2 3 4 5
2 4 7 11 16
3 7 14 25 41
4 11 25 50 91

>>
Primer zadatka 7-9: Podizanje novca sa računa
penzionog osiguranja
Korisnik je zaključio polisu za penziono osiguranje, na koju je
deponovao 300.000 dolara i koja donosi 5% godišnje kamate.
Korisnik osiguranja planira da podiže novac sa tog računa jednom
godišnje. Posle prve godine, podiže 25.000 dolara, a nakon toga
povećava iznose koje podiže u zavisnosti od stope inflacije. Na
primer, ako je stopa inflacije 3%, posle druge godine korisnik podiže
25.750 dolara. Izračunajte broj godina do pražnjenja računa uz
pretpostavku da je godišnja stopa infacije konstantna i iznosi 2%.
Nacrtajte grafikom koji pokazuje promenu stanja na računu u
zavusnosti od podignutog iznosa po godinama.
REŠENjE

kamata=0.05;inf=0.02;
clear P SR godina
godina(1)=0; % prvi element je godina 0
P(1)=0; % pocetni podignuti iznos
SR(1)=300000; % pocetno stanje racuna
Psledece=25000; % iznos koji se podize na kraju prve godine
SRsledece=300000*(1+kamata); % stanje racuna posle prve godine
n=2;
while SRsledece>=Psledece % petlja while ispituje da li ce sledece stanje
% racuna biti vece od sledeceg podignutog iznosa
godina(n)=n-1;
P(n)=Psledece; % iznos koji se podize godine n-1
SR(n)=SRsledece-P(n); % stanje racuna godine n-1, nakon podizanja novca
SRsledece=SR(n)*(1+kamata); % stanje racuna na kraju naredne godine
Psledece=P(n)*(1+inf); % iznos koji se podize na kraju naredne godine
n=n+1;
end
fprintf('Racun ce se isprazniti za %f godina',godina(n-1))
bar(godina,[SR',P'],2.0)
Izvršavanje u komandnom prozoru i crtanje

>> primer7_9
Racun ce se isprazniti za 15.000000 godina

You might also like