of 112 /112
MATLAB - PRIMERI -

MATLAB - WordPress.com · tih trouglova pomoćukosinusne ... Ekvivalentna sila (sabiranje vektora) Na nosač deluju tri sile. Izračunajte ukupnu (ekvivalentnu) silu koja deluje na

  • Author
    others

  • View
    6

  • Download
    0

Embed Size (px)

Text of MATLAB - WordPress.com · tih trouglova pomoćukosinusne ... Ekvivalentna sila (sabiranje vektora)...

  • 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

    https://www.mathworks.com/videos/getting-started-with-matlab-68985.htmlhttps://www.mathworks.com/videos/writing-a-matlab-program-101646.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=50)&(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

  • 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

  • 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)-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 % 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