Transcript

MATLAB- 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

MATLAB prozori

Komandni prozor, MATLAB kalkulator

Tri tačke (...) nastavak komandne linije u sledećem redu

Zarez (,) više komandi u redu razdvaja se zarezom

Tačka i zarez (;) ne prikazuje se rezultat izvršavanja komande

Procenat (%) linija je komentar programera

Komanda clc briše komandni prozor

Editor – MATLAB prozor za pisanje programa

Grafikoni – MATLAB grafički prozor

Dokumentacija i pomoc za MATLAB

Video resursi za učenje – iz help prozora

• Osnovi Matlab• https://www.mathworks.com/videos/getting-started-with-matlab-68985.html

• https://www.mathworks.com/videos/getting-help-with-matlab-student-89558.html

• Programiranje• https://www.mathworks.com/videos/working-in-the-development-

environment-69021.html

• https://www.mathworks.com/videos/writing-a-matlab-program-101646.html

• https://www.mathworks.com/videos/writing-a-matlab-program-69023.html

Alternativa MATLAB – Octave GNU, besplatan

Primer zadatka 1-1: Trigonometrijska formula

Trigonometrijska formula data je jednačinom:

𝑐𝑜𝑠2𝑥

2=𝑡𝑎𝑛𝑥 + 𝑠𝑖𝑛𝑥

2𝑡𝑎𝑛𝑥

Proverite da li je formula ispravnatakošto ćete izračunati vrednost obe strane jednačine, uz zamenu 𝑥 =

π

5.

REŠENjE

>> x=pi/5;

>> LHS=cos(x/2)^2

LHS =

0.9045

>> RHS=(tan(x)+sin(x))/(2*tan(x))

RHS =

0.9045

>>

Definišemo x

Izračunavamo levu stranu

Izračunavamo desnu stranu

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. Poznatesu dužine svih stranica dva takva trougla, ∆C1C2C3 i ∆C1C3C4. Taj podatakse koristi za izračunavanje uglova γ1 i γ2 tih trouglova pomoću kosinusneteoreme. 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

>> R1=16;R2=6.5;R3=12;R4=9.5;

>> C1C2=R1+R2;C1C3=R1+R3;C1C4=R1+R4;

>> C2C3=R2+R3;C3C4=R3+R4;

>> Gama1=acos((C1C2^2+C1C3^2-C2C3^2)/(2*C1C2*C1C3));

>> Gama2=acos((C1C3^2+C1C4^2-C3C4^2)/(2*C1C3*C1C4));

>> Gama3=Gama1+Gama2;

>> C2C4=sqrt(C1C2^2+C1C4^2-2*C1C2*C1C4*cos(Gama3))

C2C4 =

33.5051

>>

Definišemo poluprečnike

Izračunavamo dužine stranica

Izračunavamo ϓ1, ϓ2 i ϓ3

Izračunavamo dužinu stranice C2C4

Primer zadatka 1-3: Provođenje toplote

Telo početne temperature T0 smešteno je u trenutku t = 0 u prostor konstantnetemperature Ts. Temperatura tela će se menjati prema jednačini:

𝑇 = 𝑇𝑠 + (𝑇0 − 𝑇𝑠)𝑒−𝑘𝑡

Gde je T temperatura tela u trenutku t, a k konstanta. Konzerva piva temperature120° F stavljena je u frižider unutračnje temperature 38° F. Izračunajte temperaturukonzerve 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 jednomMATLAB-ovom komandom.

REŠENjE

>> Ts=38;T0=120;k=0.45;t=3;

>> T=round(Ts+(T0-Ts)*exp(-k*t))

T =

59

>>

Zaokružujemo na najbliži ceo broj

Primer zadatka 2-1: Generisanje matrice

Pomoću komandi ones i zeros napravite matricu 4 x 5 u kojoj su prve dve vrsteispunjene nulama a sledeće dve jedinicama.

REŠENjE

>> A(1:2,:)=zeros(2,5)

A =

0 0 0 0 0

0 0 0 0 0

>> A(3:4,:)=ones(2,5)

A =

0 0 0 0 0

0 0 0 0 0

1 1 1 1 1

1 1 1 1 1

Prvo pravimo matricu 2 x 5 sa nulama

Dodajemo vrste 3 i 4 sa jedinicama

Primer zadatka 2-2: Generisanje matrice

REŠENjE

>> AR=zeros(6,6)

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

Prvo pravimo matricu 6 x 6 sa nulama

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

>> AR(3:4,:)=ones(2,6)

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)

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

Trećoj i četvrtoj koloni dodeljujemo broj 1

Trećoj i četvrtoj vrsti dodeljujemo broj 1

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 četirikolone prve dve vrste matrice B, poslednje četiri kolone četvrte vrste matrice A elementima od 5 do 8vektora 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 sistemjednačina možemo napisati u matričnom obliku AX = B ili XC = D:

4 −2 62 8 26 10 3

𝑥𝑦𝑧

= 840

ili 𝑥 𝑦 𝑧4 2 6−2 8 106 2 3

= 8 4 0

REŠENjE

>> A = [4 -2 6; 2 8 2; 6 10 3];

>> B = [8; 4; 0];

>> X = A\B

X =

-1.8049

0.2927

2.6341

>> Xb = inv(A)*B

Xb =

-1.8049

0.2927

2.6341

Rešavanje sistema u obliku AX = B

Rešavanje deljenjem sleva X = A \ B

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

>> C = [4 2 6; -2 8 10; 6 2 3];

>> D = [8 4 0];

>> Xc = D/C

Xc =

-1.8049 0.2927 2.6341

>> Xd = D*inv(C)

Xd =

-1.8049 0.2927 2.6341

>>

Rešavanje sistema u obliku AC = D

Rešavanje deljenjem zdesna X = D \ C

Rešavanje pomoću matrice inverzne matrici C: X =D∗ 𝐶−1

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). UDekartovom koordinatnom sistemu, dvodimenzionalan vektor Fmož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 sukomponente od F u smeru ose x odnosno y, a i i j jedinični vektori u timsmerovima. Ako su poznati Fx i Fy, onda se F i θ mogu izračunati kao:

F = Fx2 + Fy2 i tanθ =

Fy

Fx

Ukupna (ekvivalentna) sila koja delujena nosač dobija sesabiranjem sila koje na njega deluju. MATLAB -ovo rešenje ima 3koraka:

• Napišite svaku silu kao vektor sa dva elemnta: prvi je x komponentnavektora, a drugi je njegova komponenta u smeru ose y.

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

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

REŠENjE

>> F1M = 400; F2M = 500; F3M=700;

>> Th1 = -20*pi/180; Th2 = 30*pi/180; Th3 = 143*pi/180;

>> F1 = F1M*[cos(Th1) sin(Th1)]

F1 =

375.8770 -136.8081

>> F2 = F2M*[cos(Th2) sin(Th2)]

F2 =

433.0127 250.0000

>> F3 = F3M*[cos(Th3) sin(Th3)]

F3 =

-559.0449 421.2705

Definišemo promenljive jednake jačini svake sile

Definišemo vektore tri sile

Definišemo promenljive jednake uglu (u radijanima) svakog vektora sile

>> Ftot = F1+F2+F3

Ftot =

249.8449 534.4625

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

FtotM =

589.9768

>> Th = (180/pi)*atan(Ftot(2)/Ftot(1))

Th =

64.9453

>>

Izračunavamo komponente vektora rezultujuće (ekvivalentne) sile

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

Izračunavamo ugao (u stepenima) vektora rezultujuće sile

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 zapomeranje mase m. Kada se izmeri F )m je poznato), koeficijent trenja se dobija iz formule:

µ =𝐹

𝑚𝑔(𝑔 = 9,81𝑚/𝑠2)

U sledećoj tabeli datii su rezultati merenja F u šest eksperimenata. Odredite koeficijent trenja usvakom eksperimentu i njegovu prosečnu vrednost u svim eksperimentima.

Eksperiment br. 1 2 3 4 5 6

Masa m (kg) 2 4 5 10 20 50

Sila F (N) 12,5 23,5 30 61 117 294

mF

trenje

REŠENjE

>> m = [2 4 5 10 20 50];

>> F = [12.5 23.5 30 61 117 294];

>> g = 9.81;

>> mi = F./(m*g)

mi =

0.63710 0.59888 0.61162 0.62181 0.59633 0.59939

>> mi_sr = mean(mi)

mi_sr = 0.61086

>>

Upisujemo vrednost mase m u vektor

Upisujemo vrednost sile F u vektor

Izračunavamo vrednosti mi u svakomeksperimentu pomoću operacija nadpojedinačnim elementima

Srednju vrednost elementa vektora miizračunavamo pomoću funkcije mean

Primer zadatka 3-4: Kretanje dve čestice

Voz i automobil približavaju se pružnom prelazu. Utrenutku t=0 voz je 400 stopa južno od prelaza i kreće sebrzinom od 54 milje na sat (1 milja – 5280 stopa). Uistomtrenutku automobile je 200 stopa zapadno odprelazaikreće se ka njemu brzinom 28 milja na sat, uzubrzanje od 4 stope/ 𝑠2 .Izračunati položaj voza iautomobila, rastojanje između njih i brzinu voza u odnosuna automobil u svakoj sekundi tokom sledećih 10 sekundi.

Za prikazivanje napraviti matricu 11 x 5, u kojojsvaka vrsta sadrži u prvoj koloni vreme, a u sledeće četirikolone položaj voza, položaj auta, rastojanje između voza iauta i brzinu voza u odnosu na auto.

x

y

V = 54mi/h

V = 28m/ha = 4ft/s

Pređeni put objekta koji se pravolinijski kreće konstantnim ubraznjem, dat jesa s = s0 + v0t +

1

2at2, 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 + 1

2a(auto)t2 (auto)

Rastojanje između voza i auto iznosi d = 𝑥2 + 𝑦2.

Brzina voza je konstantna i vektorski zapisana iznosi: vvoz = v0vozj. Automobilubrzava 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 zatimizračunati položaj voza i automobila, rastojanje između njih i brzinu voza u odnosuna automobil u svakoj sekundi unutar tog vremenskog intervala.

REŠENjE

>> v0voz = 54*5280/3600;v0auto = 28*5280/3600;aauto = 4;

>> t = 0:10;

>> y = -400 + v0voz*t;

>> x = -200 + v0auto*t + 0.5*aauto*t.^2;

>> d = sqrt(x.^2 + y.^2);

>> vauto = v0auto + aauto*t;

>> brzina_vozRauto = sqrt(vauto.^2+v0voz^2)

>> tabela = [t' y' x' d ' brzina_vozRauto']

Definišemo promenljive za početne brzine (u stopama po sekundi) i ubrzanje

Generišemo vektor t

Izračunavamo položaje voza i automobila

Izračunavamo brzinu kretanja automobila

Izračunavamo rastojanje između voza i automobila

Izračunavamo brzinu kretanjavoza u odnosu na automobil

Vreme (t)Položaj voza (u stopama,

ft)

Položaj auta (u stopama,

ft)

Rastojanjeizmeđu voza i

auta (ft)

Brzina voza u odnosu naauto (ft/s)

Primer zadatka 4-1: Visina i površina silosa

Valjkasti silos poluprečnika r ima sfernikrov (kupolu) poluprečnika R. Visina valjkastogdela je H. Napišite program (skript datoteku)koji određuje visinu H i površinu silosa za datevrednosti r, R i zapremine V.

Pomiću programa izračunajte visinu ipovršinu silosa poluprečnika r = 30 stopa, R =45 stopa i zapremine 120000 kubnih stopa.Promenljivama r, R I V dodelite vrednosti ukomandnom prozoru.

Zapreminu silosa ćemo izračunati sabiranjem zapreminavaljkastog dela i zapremine kupole. Zapremina valjka je data sa:

Vcyl = πr2H

A zapremina kupole sa:

Vcap = 1

3π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 = 𝑉−Vcap

𝜋𝑟2

Površinu silosa dobijamo sabiranjem površine valjkastog dela i površinekupole.

S = Scyl + Scap = 2 πr2H + 2 πRh

Skript datoteka silos

teta = asin(r/R);

h = R*(1-cos(teta));

V_kupola = pi*h^2*(3*R-h)/3;

H = (V-V_kupola)/(pi*r^2);

S = 2*pi*(r*H+R*h);

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

fprintf('\n Povrsina silosa je: %f kv m', S)

izračunavanje ugla teta

izračunavanje visine krova h

izračunavanje visine valjkastog dela H

izračunavanje zapremine kupole

izračunavanje površine S

Komandni prozor u kome se pokreće predhodno kreirana datoteka silos

>> r = 30;

>> R = 45;

>> V = 200000;

>> silos

Visina H je: 64.727400 m

Povrsina silosa je: 15440.777753 kv m>>

Dodeljivanje vrednosti promenljivama

Pokretanje skript datoteke silos

Primer zadatka 4-2: Težište složene površine

Napišite skript datoteku koja izračunavakoordinate težišta složene površine (složenupovršinu je lako izdeliti na delove čija su težištapoznata). Korisnik treba da izdeli površinu nadelove i za svaki deo izračuna koordinate težišta(dva broja) i površinu (jedan broj). Kada se skriptpokrene, zahtevaće od korisnika da upiše tribroja u jednu vrstu matrice. Korisnik upisujeonoliko vrsta koliko ima delova. Deo kojipretstavlja otvor ima negativnu povešinu.Rezultat programa su koordinate težišta površineprikazane na slici.

Dimenzije u mm

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 ioduzimanjem površine tri dela na desnoj strani slike. Na slici suoznačeni položaji i kordinate težišta i površina svakog dela.

Kordinate ത𝑋 i ത𝑌 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, 𝑚𝑚2 za površinu

Skript datoteka teziste

% Program izracunava koordinate tezista slozene povrsine

clear C xs ys As

C = input('Unesi matricu cija svaka vrsta ima tri elementa\nU svaku vrstu upisi x i y koordinate tezista i povrsinu dela\n');

xs = C(:,1)';

ys = C(:,2)';

As = C(:,3)';

A = sum(As);

x = sum(As.*xs)/A;

y = sum(As.*ys)/A;

fprintf("Koordinate tezista su: (%f, %f)",x,y)

generišemo vektor vrstu za x koordinatu težista svakog dela (prva kolona matrice C)

Izračunavamo koordinate težišta složene površine

Izračunavamo ukupnu površinu

generišemo vektor vrstu za y koordinatu težista svakog dela (druga kolona matrice C)

generišemo vektor vrstu površinusvakog dela (treća kolona matrice C)

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

60+140/3 220 140*60/2

100 100/pi -pi*50^2/2

150 95 -40*150

105 145 -50*50]

Koordinate tezista su: ( 85.387547, 131.211809 )

Upisivanje podataka za matricu CSvaka vrsta ima tri elementa: x, y i A

pojedinačnih delova složene površine

Primer zadatka 5-1: Iscrtavanje funkcije i njenih izvoda

Na istom grafikonu nacrtajte funkciju 𝑦 = 3𝑥3 − 26𝑥 + 10injenprvi Idrugiizvod, 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 𝑦 = 3𝑥3 − 26𝑥 + 10injenogprvog I drugogizvoda

Primer zadatka 5-2: Mehanizam klip - klipnjača - radilica

Mehanizam klip – klipnjača – radilica ima mnogo primena u tehnici. U mehanizmuprikazanom na slici, radilica rotira konstantnom brzinom 500 o/min.

Izračunajte i nacrtajte položaj, brzinu i ubrzanje klipa za jedan obrt radilice. Postavitecva tri grafikona na istu stranicu. Zadajte θ = 0°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 Pitagorineteoreme:

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 = -r ሶ𝜃sinθ -𝑟2𝜃𝑠𝑖𝑛2𝜃

2(𝑐2− 𝑟2𝑠𝑖𝑛2𝜃)1/2

Drugi izvod x po vremenu daje ubrzanje klipa:

x = -r ሶ𝜃cosθ -4𝑟2𝜃2𝑐𝑜𝑠2𝜃 𝑐2− 𝑟2𝑠𝑖𝑛2𝜃 + (𝑟2 ሶ𝜃𝑠𝑖𝑛2𝜃)2

4(𝑐2− 𝑟2𝑠𝑖𝑛2𝜃)3/2

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) zafunkciju:

𝑓 𝑥 =𝑥4 3𝑥 + 5

(𝑥2 + 1)2

Ulaz u funkciju je x, a izlaz f(x). Pomoću funkcije izračunajte 𝑓 𝑥 zax = 6.

Funkcijska datoteka za funkciju f(x)

function y = pog6jedan(x)

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

Dodeljivanje vrednosti izlaznom argumentu

Red sa definicijom funkcije

Obratite pažnju na to da je matematički izraz u funkcijskojdatoteci napisan za izvršavanje nad pojedinačnim elementima ulaznogargumenta. Zato će i y biti vektor ako je x vektor. Snimite funkciju azatim, ako treba, ptanju pretraživanja izmenite tako da obuhvati idirektorijum 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) kojapretvara temperaturu izraženu u stepenima F u temperaturu ustepenima 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činepravougaone (4.5 x 2.25m) aluminijumske (α=23*106 1/°C)ploče ako senjena temperatura promeni sa 40°F na 92°F.

Funkcija za konverziju stepeni F u stepene C

function C = FuC(F)

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

Red sa definicijom funkcije

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);

a2=a1+alfa*a1*deltaT;

b2=b1+alfa*b1*deltaT;

PromenaPovrsine=a2*b2-a1*b1;

fprintf("Promena povrsine je %6.5f kvadratnih metara",PromenaPovrsine)

Izračunavamo razliku temperature pomoču funkcije FUC

Izračunavamo novu dužinu i širinu

Izračunavamo promenu površine

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 kojaizračunava rastojanje između dve tačke uravni, kada je položaj tačaka dat upolarnim koordinatama. Pomoću njeizrač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:

𝑑 = 𝑟𝐴2 + 𝑟𝐵

2 − 2𝑟𝐴𝑟𝐵cos (𝜃𝐴 − 𝜃𝐵)

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’)

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

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

Argumenti su upisani po redu datom u definiciji funkcije

Primer zadatka 6-4: Eksponencijalni rast i opadanje

Model eksponenecijalnograstailiopadanjaoređenekoličinedatjesaA (t) =A0 𝐸

𝑘𝑡 gdesuA (t)iA0količina u trenutku todnosnotrenutku 0, a kjekonstantaspecifičnazakonktetnuprimenu.

Napišitefunkicijukojauzpomoć tog modelapredviđakoličinuA (t) u trenutkut akojepoznatoA0 i A(t1) u nekomdrugomtrenutku t1. Imeiargumentefunkcijedefinišitekao At = expRO (A0,At1, t1, t), gdeizlazni argument At odgovaraA(t), a ulazniargumenti A0, At1, t1, todgovarajuA0, 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-gramskoguzorkanakon 30 godina

Da biste upotrebili model eksponencijalnog rasta, morate prvoizraziti vrednost konstante k preko A0, A(tl) i tl:

𝑘 =1

𝑡1𝑙𝑛𝐴(𝑡1)

𝐴0

Kada je poznato k, model se može upotrebiti za proceduru brojastanovnika u proizvoljnom trenutku vremena.

Funkcija expRO

function At=expRO(A0,At1,t1,t)

% 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

k=log(At1/A0)/t1;

At=A0*exp(k*t);

Red sa definicijom funkcije

Izračunavamo vrednost k

Izračunavamo A(t) (dodeljujemo vrednost izlaznoj promenljivoj)

Izvršavanje funkcije expRO u komandnom prozoru

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

ans =

116.0332

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

ans =

0.1941

>>

procena broja stanovnika 2000. godine

Količina materijala preostala nakon 30 godina

Primer zadatka 6-5: Kretanje projektila

Napišite funkcijsku datoteku koka izračuvana putanju proejktila. Ulazniargumenti fuknkcije su početna brzina i ugao pod kojim je projektil ispaljen. Izlazniargumenti su maksimanla visina i rastojanje. Sem toga, funkcija treba da nacrtagrafit putanje. Izračunajte pomoću te funkcije putanju projektila ispaljenog brzinomod 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:

𝑣𝜃𝑥= 𝑣0 cos 𝜃 i 𝑣0𝑦 = 𝑣0sin(𝜃)

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

𝑣𝑥 = 𝑣0 − 𝑔𝑡 i 𝑦 = 𝑣0𝑦𝑡 −1

2𝑔𝑡2

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

𝑡ℎ𝑚𝑎𝑥 =𝑣0𝑦𝑔

i ℎ𝑚𝑎𝑥 =𝑣0𝑦2

2𝑔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:𝑥 = 𝑣0𝑥𝑡

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)

% theta: ugao u stepenima

% hmax: maksimalna visina u (m)

% dmax: maksimalno rastojanje u (m)

% 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;

ulazni argumenti

izlazni argumenti

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')

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

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

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 6963 74 82 84 91 93 89 91 80 59 69 56 64 63 66 64 74 63 69. Pomoću racionalnih logičkihoperatora 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 ...

91 93 89 91 80 59 69 56 64 63 66 64 74 63 69];

Tiznad75=T>=75;

NdanaTiznad75=sum(Tiznad75)

Tod65do80=(T>=65)&(T<=80);

NdanaTod65do80=sum(Tod65do80)

datumuTod50do60=find((T>=50)&(T<=60))

Vektor koji sadrži jedinice na mestima gde je T>=75

Zbir svih jedinica u vektoru Tiznad75

Zbir svih jedinica u vektoru Tod65do80

Vektor koji sadrži jedinice na mestima gde je T>=65 I T<=80

Funkcija find daje adreseelemenata vektoraT 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

>>

Iskazif

Komande

False

True

end

Struktura if - end

Na slici prikazana je šema strukture if – end . Slikaprikazuje kako se komande upisuju u program, idijagram toka koji simbolično prikazuje redosledizvršavanja komandi. Pri izvršavanju, programnajprenailazi na iskaz if. Ako uslovni iskaz u iskazu if imavrednost true, program izvršava komande kojeneposredno slede iskazu if , sve do iskaza end. Ako jeuslovni iskaz false, program preskače grupu komandiizmeđu iskaza if i end, i nastavlja da izvršava komandeiza 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 radse plaća 50% više. Napišite program u skript datoteci koji će obračunavati zaraduradnika. Program zahteva od korisnika da unese ukupan broj sati i iznos satnice, azatim prikazuje ukupnu zaradu.

Rešenje

Sadržaj skript datoteke prikazan je na narednom slajdu. Program prvoizračunava zaradu tako što množi broj radnih sati sa cenom satnice. Zatim pomoćuiskaza if ispituje da li je broj sati veći od 40. ako jeste, izvršava se sledeći red iizračunava dodatna zarada za radne sate preko 40. Ukoliko nije, program preskače svekomande 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$>>

Iskazif

Komande:Grupa 2

False

True

end

Komande:Grupa 1

Struktura if - else - end

Ova struktura omogućava da se izabere izvršavanjejedne od dve moguće grupe komandi. Na slici se viditok tj. redosled kojim se komande izvršavaju. U prvomredu nalaze se iskaz if i uslovni israz. Ako je vrednostuslovnog izraza true, program izvršava prvu grupukomandi između iskaza if i else, a zatim preskače ostalekomande do iskaza end. Ako je vrednost uslovnogizraza false, program preskače komande do iskaza else,a zatim izvršava komande koje se nalaze između else iend.

Struktura uslovnog iskaza if - else - end

Primer zadatka 7-3: Nivo vode u vodotornju

Rezervoar vodotornja ima oblik prikazan nacrtežu (donji deo je valjak, a gornjizarubljena obrnuta kupa). Unutarrezervoara nalazi se plovak koji pokazujenivo vode. Napišite funkciju koja izračunavakoličinu vode u zavisnosti od položaja(visina h) plovka. Ulazni argument funkcijeje vrednost h, a rezultat je količina vodeizražena u 𝑚3.

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:

𝑉 = 𝜋12. 5219 +1

3𝜋(ℎ − 19)(12. 52 + 12.5 ∙ 𝑟ℎ + 𝑟ℎ

2)

gde je 𝑟ℎ = 12.5 +10,5

14(ℎ − 19)

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

Iskazif

Iskazelseif

Komande:Grupa 3

Komande:Grupa 2

Komande:Grupa 1

False

False

True

True

end

Struktura uslovnog iskaza if - elseif - else - end

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 redosledkojim se komande izvršavaju. Struktura sadržidva uslovna iskaza (if i elseif) koji omogućavajuda sejedna od tri grupe komandi odabere zaizvršavanje. U prvom redu nalazi se iskaz if kojemsledi uslovni iskaz. Ukoliko uslovni iskaz imavrednost true, program izvršava prvu grupukomandi, izmeđi iskaza if i elseif, a zatim prelazina end. Ako uslovni izraz u iskazu if ima vrednostfalse, program prelazi na izraz elseif imavrednost true, program izvršava drugu grupukomandi između iskaza elseif i else, a zatimprelazi na end. U slučaju da uslovni izraz u iskazuelse ima vrednost false, program prelazi na else iizvršava treću grupu komandi, između iskaza elsei end.

.......... MATLAB-ov program

..........

switch izraz switchcase vrednost1..................................case vrednost2..................................case vrednost3..................................case vrednost4..................................

end.......... .......... MATLAB-ov program

grupa komandi 1

grupa komandi 2

grupa komandi 3

grupa komandi 4

Iskaz switch – case

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ćihgrupa komandi. Struktura tog iskaza prikazana je na slici.

- Prvi red se sastoji od komande koja ima oblik:

switch izraz switch

Izraz u komandi switch može biti skalarna vrednost ili znakovni niz.Najčešće je to promenljiva kojoj je dodeljena skalarna vrednost iliznakovni niz.

- Nakon komande switch sledi jedna ili više komandi case. Izasvake komande case sledi vrednost (skalar ili znakovni niz:vrednost1, vrednost2 itd.), i pridružena grupa komandi ispodiskaza.

- Iza poslednje komande case može biti komanda otherwise,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 σ𝑘=𝑛𝑎 (−1)𝑘𝑘

2𝑘. Izvršite skript datoteku za n=4 I n=20.

b) Funkcija sin(x) može se napisati kao Tejlerov red u obliku: σ𝑘=0∞ (−1)𝑘𝑥2𝑘+1

(2𝑘+1)!

Napišite korisničku funkciju koja izračunava sin(x) pomoću tejlorovog reda. Ime iargumenti funkcije neka budu y = Tsin(x,n). Ulazni argumenti su ugao x, izraženu stepenima i n, broj članova reda. Upotrebite tu funkciju da biste izračunalisin(150°) pomoću reda od 3 i 7 članova.

Skript datoteka primer 7_5a

n=input('Upisite broj clanova');

S=0;

for k=1:n

S=S+(-1)^k*k/2^k;

end

fprintf('Zbir clanova reda je %f',S)

Početna vrednost zbira je nula

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 članreda (u prvom prolazu prvi član, u drugom prolazu drugi član itd.), a zatim dodaje zviruprethodnih članova. Datoteka je snimljena pod primer7_5a a zatim izvršena dvaput ukomandom 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;

y=0;

for k=0:n-1

y=y+(-1)^k*xr^(2*k+1)/factorial(2*k+1);

end

Preračunavanje ugla iz radijana u stepene

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, ukomandnom 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

>>

for k = f : s : t...................... grupa MATLAB-ovih........... komandi

end

Indeksna promenljiva petlje

Vrednost k u prvom prolazu

Korak povećanja k posle svakog prolaza

Vrednost k u poslednjem prolazu

Petlje for – end

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

Struktura petlje for - end

Primer zadatka 7-6: Menjanje vrednosti elemenata vektora

Vektorjedefinisannasledećinačin:

V = 5, 17, −3, 8, 0, −1, 12, 15, 20, −6, 6, 4, −7, 16 .

Napišiteskriptkojiudvostručujevrednostpozitvinihelemenatadeljivihsa 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];

n=length(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

Promenljivoj n dodeljujemo vrednost jednaku broju elemenata vektora V

Izvršavanje u komandnom prozoru

>> V

V =

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

>>

while uslovni izraz...................... grupa MATLAB-ovih........... komandi

end

Struktura petlje while - end

Petlje while – end

Petlje while – end se koriste kada je potrebno izvršavanje petlji, aliukupan broj prolaza nije unapred poznat. U petljama while – end,broj prolaza nije zadat pre početka petlje. Umesto toga, petlja seizvršava dok je ispunjen zadati uslov. Struktura petlje while endprikazana je na slici.

U prvom redu se nalazi iskaz while koji sadrži uslovni izraz. Ako jeon false, MATLAB prelazi na iskaz end i nastavlja izvršavanjeprograma. Ukoliko je izraz true, MATLAB izvršava grupu komandiizmeđu komandi while – end. Zatim se vraća na komandu while iispituje vrednost uslovnog izraza. Petlja se izvršava sve dok uslovniizraz ne dobije vrednost false

Primer zadatka 7-7: Predstavljane funkcije pomoću Tejlorovog reda

Funkcijaf(x) = 𝑒𝑥može se predstaviti u oblikuTejlorovogredanasledećinačin: 𝑒𝑥

= σ𝑛=0∞ 𝑥𝑛

𝑛!.

Napišiteskriptkojiizračunava 𝑒𝑥 pomoćuTejlorovogreda. Ovaj programizračunava 𝑒𝑥 takoštosabiračlanoveTejlorovogreda, a zaustavlja sekadaapsolutnavrednostdodatogčlanabudemanja od 0.0001. Upotrebitepetljuwhile-and, aliograničitebrojprolazana 30. Ako utridesetomprolazudodatičlanreda ne budemanji od 0.001, programprekidapetljuiprikazujeporuku da jesabranotridesetčlanova.

Pomoćunapisanogprogramaizračunajte e2, e-4, e21.

Prvih nekoliko članova Tejlorovog reda su:

𝑒𝑥 = 1 + 𝑥 +𝑥2

2!+𝑥3

3!+ ⋯

Program koji pomoću tog reda izračunava vrednost funkcije prikazanje u narednom pasusu. Prvo se od korisnika zahteva da se unese vrednost zax. Zatim se prvom članu reda, an, dodeljuje vrednost 1, a vrednost člana andodeljuje se zbiru članova, s. Od drugog člana pa nadalje, pomoću petljewhile program izračunava vrednost n-tog člana reda i sabira ga sa ukupnimbrojem prethodnih članova. Program broji i ukupan broj članova, n. Uslovniizraz 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. Toznači da se izvršavanje petlje zaustavlja ako vrednost tridesetog člana nijemanja 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šavanjepetlje prestalo zato što n-ti član nije manji od 0,0001, programprikazuje poruku o tome. Ukoliko je vrednost funkcije uspešnoizračunata, program prikazuje vrednost funkcije i ukupan broj članova.Kada se program izvršava, borj prolaza zavisi od promenljive x. Pomoćuovog programa (koji je snimljen u datoteci expox) izračunate suvrednosti 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

>>

For k = 1 : nfor h = 1 : m

.............

.............

.............end

end

Grupakomandi

Ugnježđenapetlja

Petlja

Ugnježđene petlje i ugnježđeni uslovi iskaza

Petlje I uslovni iskazi mogu se ugnježdavati jedni udruge. To znači da petlja i/ili uslovni iskaz možezapočeti (i zavrčiti se) unutar drugr petlje i/ili uslovnogiskaza. Dubina ugnježšđavanja petlji i uslovnih iskazanije ograničena.

Kad god se vrednost k poveća za , ugnježđena petlja se izvršava m puta. Grupa komandi se

izvršava ukupno n x m puta.

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 svakogelementa u prvoj koloni jednaka je rednom broju vrste. Vrednosti svih ostalihelemenata izračunavaju se tako što se tekućem elementu dodeli zbir vrednostielementa iznad i ispod njega. Kada se pokrene, program najpre zahteva odkorisnika 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čunapenzionog osiguranja

Korisnik je zaključio polisu za penziono osiguranje, na koju jedeponovao 300.000 dolara i koja donosi 5% godišnje kamate.Korisnik osiguranja planira da podiže novac sa tog računa jednomgodišnje. Posle prve godine, podiže 25.000 dolara, a nakon togapovećava iznose koje podiže u zavisnosti od stope inflacije. Naprimer, ako je stopa inflacije 3%, posle druge godine korisnik podiže25.750 dolara. Izračunajte broj godina do pražnjenja računa uzpretpostavku da je godišnja stopa infacije konstantna i iznosi 2%.Nacrtajte grafikom koji pokazuje promenu stanja na računu uzavusnosti 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


Recommended