Predavanje 17

FlipView[{Text[Style[" Branko Urošević, imqfbrankourosevic@gmail.com ",20,"Text",Italic]],Text[Style[" Faculty of Economics, University of Belgrade, NBS and CESIfo Munich",20,"Text", Italic]]}]

Algebarske jednačine i matematička analiza u WL

1. Algebarski izrazi i algebarske jednačine

Transformacija algebarskih izraza: Expand

Sve u WL bazirano je na principu izraza (expressions). Sva standarna svojstva koja očekujemo od sistema koji treba da radi matematiku (Mathematica nije slučajno dobila taj naziv) važe manje-više i u ovom programu.

Kao prvo, ogroman broj matematičkih funkcija je već implementiran u WL i one rade predvidivo. Sva postojeća pravila se implementiraju automatski, osim ako se drugačije ne naredi:

3 Sin[(π/2)]+4 Cos[2 π]

Šta bi bilo ovo:

(((1 +(Sqrt[2])))^2)

Pošto programu nismo rekli šta sa tim da radi, a u pitanju je validni izraz, on ga ostavi tako kako je. Ako hoćemo da transformišemo izraz korisno je da probamo:

(((1 +(Sqrt[2])))^2)//Expand

Expand rastavlja algebarske izraze na pojedinačne članove. Izrazi ostaju egzaktni osim ako ne damo komandu koja će ih pretvoriti u decimalni zapis:

(((1 +(Sqrt[2])))^2)//N

Kako uprostiti (Simplify) ili razložiti (Expand) algebarske izraze

WL vam omogućava da sa lakoćom manipulišete sa algebarskim izrazima. Već smo videli kako radi  Expand. Evo još jednog primera.

Expand[(((a+b))^20)]

Možemo da rastavimo na monove i veće izraze:

Expand[(((a+b+c))^30)]

Za razliku od Expand koja rastavlja algebarske izraze na prostije činioce, Simplify pokušava da svede izraz na što manji broj članova. Na primer:

Simplify[(a^20)+20 (a^19) b+190 (a^18) (b^2)+1140 (a^17) (b^3)+4845 (a^16) (b^4)+15504 (a^15) (b^5)+38760 (a^14) (b^6)+77520 (a^13) (b^7)+125970 (a^12) (b^8)+167960 (a^11) (b^9)+184756 (a^10) (b^10)+167960 (a^9) (b^11)+125970 (a^8) (b^12)+77520 (a^7) (b^13)+38760 (a^6) (b^14)+15504 (a^5) (b^15)+4845 (a^4) (b^16)+1140 (a^3) (b^17)+190 (a^2) (b^18)+20 a (b^19)+(b^20)]

Simplify radi i sa razlomcima:

Simplify[(1/(3 (1+x)))-((-1+2 x)/(6 (1-x+(x^2))))+(2/(3 (1+(1/3) (((-1+2 x))^2))))]

Sa druge strane, ukoliko bismo probali da ponovo razbijemo ovaj izraz i dobijemo prethodni, to ne bi radilo.

Expand[(1/(1+(x^3)))]

Izdvajanje članova određenog tipa pomoću Collect

Pretpostavimo da želimo da sakupimo sve članove nekog izraza i izraze propocionalne x, (x^2) i td. Za to možemo da koristimo Collect.

izraz=Collect[(((1+a+x))^4),x]

Ako želimo da izdvojimo samo član koji je proporcionalan x jedan način da to uradimo je pomoću funkcije Part:

Part[izraz,6]

Tu je, međutim, važno znati koji je redni broj člana koji nam treba. Ako nećemo da nagađamo oko toga, isto možemo da postignemo i koristeći oblike (tražimo članove koji imaju oblik nešto puta x gde god da se pojave):

Cases[izraz,Times[_,x],Infinity]

Proverimo kako to radi za različite stepene x, od 1 do 3:

Table[Cases[izraz,Times[_,(x^n)],Infinity],{n,3}]

Transformacije algebarskih izraza pomoću Replace

Pretpostavimo da imamo neki algebarski izraz, na primer (((a+b))^3) i hoćemo da u tom izrazu b zamenimo sa (((1+x))^2) +7. Najlakši način da se to uradi lokalno jeste

(((a+b))^3)/.b-> (((1+x))^2)+7

Možemo zameniti i više različitih izraza

(((a+b))^3)/.{b-> (((1+x))^2)+7,a-> 3+x}

A evo i primera sa razlomkom. Pretpostavimo da u izrazu

((2+3r-a)/(1-r+4 b))

želimo da r-2 bude zamenjeno sa a+b. Ovo dole ne bi radilo jer r-2 nije oblik koji može da se nađe u levoj strani izraza

((2+3r-a)/(1-r+4 b))/.{r-2-> a+b}

Ali, ovo bi radilo, jer oblik r postoji kao deo izraza na levoj strani:

((2+3r-a)/(1-r+4 b))/.{r-> a+b+2}

Evo šta dobijemo ako upotrebimo Simplify

Simplify[%]

Buduća vrendost novčanog toka: zašto je važna kamata koju dobijate u banci ili u drugim investicijama

Pretpostavimo da imamo 500 evra i da smo ih oročili na godinu dana. Kamata je 3 posto godišnje i obračunava se jednom mesečno. Koliko ćemo imati novca posle jedne godine ako ne podižemo ništa sa računa? U pitanju je izračunavanje buduće vrednosti novca, veoma korisno u životu čak i ako niste ekonomista. Napišimo funkciju koja računa buduću vrednost jednog novčanog toka

buducaVrednost[orocenaSuma_,godisnjaKamata_,n_,T_]:=orocenaSuma (((1+(godisnjaKamata/n)))^(T n))

Prvi parameter u ovoj funkciji je uložena suma, drugi je nominalna godišnja kamata, treći je broj puta koliko se godišnje obračunava kamata, dok je T broj godina oročenja. U našem primeru, buduću vrednost obračunavamo ovako:

buducaVrednost[500,0.035,12,3]

Razmotrimo sada buduću vrednost ostrva Menhetn u Njujorku koje su Indijanci prodali Holandjanima 1657. godine za 5 američkih dolara ukoliko bi Indijanci sve vreme mogli da ulažu po godišnoj stopi od 10 posto (obračun jednom godišnje). Uporedite to sa situacijom ukoliko bi godišnji prinos bio 8 posto, 6 posto itd, sve do 2 posto godišnje. Prikažite tabelarno, postavite naslove i lepo formatirajte.

Grid[Prepend[Table[{n,buducaVrednost[5,n,1,2018-1657]},{n,0.1,0.02,-0.02}],{"Godišnja kamata","Vrednost u 2018 (u USD)"}],Frame->All]

Uporedimo to sa vrednošću GDP SAD.

Bogatstvo se stiče kroz kamatu na kamatu

Ispostavlja se da je razlog zašto neko može da se obogati od investiranja (ili ne) uglavnom kamata na kamatu. To je buduća vrednost novčanog toga umanjena za glavnicu i (prostu) kamatu na glavnicu. Razmotrimo situaciju u opštim brojevima prvo. Ako neku sumu ulažemo na 4 godine po kamati od k godišnje (kamata se računa jednom godišnje), onda bi kamata na kamatu bila jednaka

bv=orocenaSuma (((1+k))^4)-(orocenaSuma+4 k orocenaSuma);

ili, konkretnije

Expand[%]

Napišemo funkciju koja izračunava kamatu na kamatu za novčani tok uložen na T godina, sa kamatnom stopom godisnjaKamata, ukoliko se kamata izračunava n puta godišnje.

kamataNaKamatu[orocenaSuma_,godisnjaKamata_Real,n_Integer,T_]:=orocenaSuma (((1+(godisnjaKamata/n)))^(T n))-orocenaSuma-godisnjaKamata*orocenaSuma *T

Koji je deo buduće vrednosti Menhetna zapravo kamata na kamatu? To možemo da vidimo preko tabele

Grid[Prepend[Table[{n,buducaVrednost[5,n,1,2018-1657],((kamataNaKamatu[5,n,1,2018-1657])/(buducaVrednost[5,n,1,2018-1657]))},{n,0.1,0.02,-0.02}],{"Godišnja kamata","Vrednost u 2018 (u USD)","Udeo kamate na kamatu"}],Frame->All]

Sadašnja vrednost grupe novčanih tokova (NSV)

Ukoliko investicija ima više novčanih tokova, da bismo ih uporedili moramo znati njihovu vrednost u istom trenutku vremena. Najčešće se koristi Sadašnje vrednost, to jest vrednost u trenutku donošenja investicione odluke. Pretpostavimo da želimo da nađemo sadašnju vrednost projekta koji zahteva investiciju od 32000 evra danas (trenutak 0) i daje pozitivne novčane tokove od 16000 u godini 1 i 21000 u godini 2. Pretpostavimo, takođe, da bismo umesto u ovaj projekat mogli da uložimo u neki istog rizika koji bi imao prinos od 13 posto godišnje (to je takozvani trošak kapitala ili diskontna stopa).

U opštim brojevima, sadašnja vrednost projekta bi bila:

Fold[#2+#1/(1+r)&,Reverse[{c0,c1,c2}]]//Expand

Evo i funkcije koja bi to izračunavala

FoldList[#2+#1(1+r)&,{c0,c1,c2}]

Neka je novčani tok danas ulaganje (negativni novčani tok) od 32000 evra, pozitivan novčani tok u godini 1 je 16000, a u godini 2 je jednak 21000. Ukoliko je oportunitetni trošak r jednak 13 posto godišnje, onda je neto buduća vrednost projekta u godini 2 jednaka

nsv[cf_List,r_]:=Fold[#2+#1/(1+r)&,Reverse[cf]]

U konkretnom primeru

nsv[{-32000,16000,21000},0.13]

Vidimo da se u ovom slučaju projekat ne bi isplatio. Naime, ukoliko možemo da ostvarimo 13 posto na nekom sličnom projektu, ovaj konkretni projekat ili košta previše ili daje premalu zaradu u budućnosti.

Sadašnja vrednost projekta zavisi od cene kapitala (ukoliko je sve ostalo isto)

To se najlakše vidi ukoliko grafički predstavimo zavisnost NSV od cene kapitala r.

Plot[nsv[{-32000,16000,21000},r],{r,0,0.18},PlotLabel->Style["NSV kao funkcija cene kapitala",Blue,16],ImageSize->400]

Vidimo da je maksimalni oportunitetni troštak za koji se još isplati uložiti ovaj novac negde malo manji od 10 posto godišnje (to je tačka preseka sa x osom, odnosno nula funkcije). To je interna stopa prinosa (Internal Rate of Return ili IRR).

Da bismo našli IRR (internu stopu prinosa), treba da nađemo rešenje jednačine NSV == 0, po diskontnoj stopi r. U WL, egzaktna rešenja algebarskih jednačlina dobijaju se (,kada je to moguće) korišćenjem funkcije Solve.

Solve[nsv[{-32000,16000,21000},{r}]==0]

Sa grafikona je jasno da rešenje mora biti

%[[2]]//N

Numeričko rešenje možemo dobiti direktno pomoću NSolve

NSolve[nsv[{-32000,16000,21000},{r}]==0]

Stopa rasta u drugačijem kontekstu: populacija losova u rezervatu

Pre pet godina bilo je 325 losova u rezervatu. Sada ih je 450. Koliki je prosečan godišnji rast populacije losova u rezervatu u procentima? Kapaciteti rezervata su takvi da u njemu može da živi maksimalno 750 losova. Računajući sa prosečnim rastom, nakon koliko vremena će se popuniti kapacitet rezervata?

Neka je r  godišnji rast populacije. To znači da za pet godina populacija sa 325 naraste na 325 (((1+r))^5). Dakle, r nalazimo iz uslova

Last[NSolve[325 (((1+r))^5)==450,{r}]]

Neka je t vreme u godinama za koje populacija losova sa 450 naraste na 750. Tada važi da je

450 (((1+r))^t)==750/.{r->0.06724918187953893`}

NSolve[450 ((1.0672491818795389`)^t)==750,{t}]//Quiet

Dakle, da bi populacija porasla na 750, potrebno je da prodje nešto manje od 8 godina.

NSV projekta ukoliko su svi novčani tokovi u budućnosti, uključući i prvi

Ukoliko je prvi novčani tok u trenutku n>0 (a ne nula kao po defoltu), NSV možemo da izračunamo tako što dodefinišemo funkciju nsv time što dodamo još jedan argument n koji označava trenutak kada dobijamo prvi novčani tok. U tom slučaju:

nsv[cf_List,r_,n_Integer]/;n>0:=(1/(((1+r))^n)) Fold[#2+#1/(1+r)&,Reverse[cf]]

Na primer, ukoliko u trenutku 1 dobijamo prvi novčani tok c1, u trenutku 2 dobijamo novčani tok c2 i tako do trenutka 4, NSV u trenutku 0 (danas) bi bila

nsv[{c1,c2,c3,c4},r,1]//Expand

Primer: Vrednovanje obveznice sa fiksnom kamatnom stopom

Obveznica je dugovna hartija od vrednosti. Vlasnik obveznice sa fiksnom kamatnom stopom r, svake godine (počevši od godine 1) dobija kamatu r F (zove se kupon), a na kraju poslednju kamatu i glavnicu F. Pre izbijanja krize grčkog duga kupili smo grčku državnu obveznicu sa kamatom 5 posto godišnje i glavnicom 100 evra. Kolika je vrednost te obveznice ukoliko je diskontna odnosna tržišna diskontna stopa 5 posto, kao i ukoliko je ta stopa 21 posto. Vreme do dospeća je 15 godina.

Prvo nalazimo novčane tokove za ovu obveznicu. Kuponi su:

ConstantArray[0.05 100,15]

Glavnica se isplaćuje tek na kraju. To se može predstaviti kao vektor sa 14 nula i na kraju brojem 100. Jedan način da se to unese u WL jeste pomoću funkcije PadLeft

PadLeft[{100},15]

cfObveznice=ConstantArray[0.05 100,15]+PadLeft[{100},15]

U mirno vreme, kada je diskontna stopa bila 5 posto, ova obveznica bi vredela:

nsv[cfObveznice,0.05,1]

Vidimo da kada je kamatna stopa obveznice jednaka diskontnoj, tržišna vrednost obveznice je jednaka glavnici. Sa druge strane, posle izbijanja krize, vrednost obveznice dramatično pada:

nsv[cfObveznice,0.21,1]

Naći diskontnu stopu za koju bi cena obveznice bila 75 evra:

Kako naći mesečnu ratu kredita za auto

Pretpostavimo da želimo da kupimo kola na kredit i da hoćemo da izračunamo ratu za kredit. Kamata je fiksna, plaća se fiksna mesečna rata koja na godišnjem nivou iznosi 9 posto. FInansiramo sumu od 10000 evra, a kredit treba da isplatimo u 48 rata. Koliko iznosi jedna rata ukoliko isplata kredita počinje prvog narednog meseca (mesec broj 1).

Nepoznatu mesečnu ratu c nalazimo iz uslova da je neto sadašnja vrednost kredita jednaka finansiranoj sumi. Pri tome, diskontuje se korišćenjem kamatne stope od 9 posto godišnje:

nsv[ConstantArray[c,48],0.09/12,1]==10000

Odatle nalazimo da je mesečna rata ovog kredita jednaka

Solve[{40.1847818851796` c==10000},{c}]

Sistemi linearnih jednačina: primer slavske večere

U tabeli su date nutritivne vrednosti (u gramima) dela slavske trpeze u 100 grama hrane.

Grid[{{,"Masti","Proteini","Ugljeni hidrati"},{"Sarma",5,5,11},{"Jagnjetina",20,25,0},{"Hleb",0,10,50}},Frame->All]

Ivan je planirao da jede dobro, ali kontrolisano. On želi da unese 700 grama hrane, a da od toga bude 90 grama proteina i 50 grama masti. Koliko koje hrane Ivan treba da pojede?

Obeležimo sa sarma količinu sarme u stotinama grama, sa jagnjetina jagnjetine, a sa hleb,  hleba. Tada Ivan treba da reši sledeći sistem jednačina

sistem={sarma+jagnjetina+hleb==7,5 sarma +25 jagnjetina+10 hleb== 90, 5 sarma +20jagnjetina +0 hleb ==50};Column[sistem]

Rešavamo ga ovako:

Solve[sistem,{sarma,jagnjetina,hleb}]

Dakle, Ivan treba da pojede 200g sarme, 200g jagnjetine i 300g hleba.

Kako kroz dve tačke provući pravu

Kroz dve tačke {2,5}, {3,4} treba provući pravu liniju. Nađite jednačinu te prave a onda pronađite tačku na toj pravoj čija je x koordinata jednaka 11. Predstavite sve grafički. Jednačina prave je

Clear[f]; f[x_]:=a x +b

Iz uslova da prava mora da prođe kroz te dve tačke nalazimo da a i b moraju da zadovolje sledeći sistem linearnih jednačina:

{f[2]==5,f[3]==4}

Solve[{2 a+b==5,3 a+b==4},{a,b}]

Jednačina ove prave linije je data izrazom

a x +b/.{a->-1,b->7}

f[x_]:=a x +b/.{a->-1,b->7}

U tački x=11, vrednost funkcije je

f[11]

Evo i grafičkog prikaza

Show[Plot[f[x],{x,2,12},AxesOrigin->{0,0}],ListPlot[{{2,5},{3,4},{11,-4}},PlotStyle->Red]]

Nelinearne jednačine: određivanje ravnotežne cene i količine na osnovu preseka krive ponude i tražnje

Poznato je da se ravnotežna cena i količina neke robe na tržištu mogu dobiti izjednačavanjem u preseku krive ponude i krive tražnje. Pretpostavimo da je kriva tražnje Qd==20-(p^2) a kriva ponude Qs==11+8 p. Predstaviti grafički krive ponude i tražnje i naći tačku preseka, odnosno ravnotežu na tržištu.

ContourPlot[{q==20-(p^2),q==11+8 p},{p,0.1,3},{q,0.1,40},PlotLegends->{"tražnja","ponuda"}]

Ravnotežna tačka se nalazi na osnovu izjednačavanja ponude i tražnje

ponudaTraznja=Solve[{q==20-(p^2),q==11+8 p},{p,q}]

Jasno je da je samo drugo rešenje ono ispravno. Jednostavan način da izdvojimo rešenje sa pozitivnim vrednostima bi bio:

Solve[{q==20-(p^2),q==11+8 p},{p,q}][[2]]

ili

Cases[ponudaTraznja,{_->pos1_/;pos1>0,_->pos2_/;pos2>0}]

Rekonstrukcija krive na osnovu podataka

U praksi je često potrebno na osnovu skupa tačaka pronaći krivu koja “leži” tim podacima. Na osnovu podataka u Sheet 1 fajla podaci17.xlsx, proveriti da li se funkcionalna zavisnost može približno opisati pomoću kvadratne funkcije. Unesimo prvo podatke (bez naslova):

podaci=Import[][[1]]//Rest

Jedan način da na osnovu podataka dobijemo funkcionalnu zavisnost koja ih približno opisuje jeste da nađemo najbolji fit (regresiju). Razmotrimo fit kvadratne funkcije a +b x +c (x^2).

model=LinearModelFit[podaci,{x,(x^2)},{x}]

Model je dat preko izraza

model[x]

Show[ListPlot[podaci,PlotStyle->Red],Plot[model[x],{x,11.2`,19.5`}]]

Mada u ovom slučaju podaci potpuno leže na modelskoj krivoj, u opštem slučaju to se neće desiti. Uvek postoji greška merenja, pa će modelska kriva dati tipično biti dobijena kao ona koja minimizuje sumu kvadrata odstupanja od modela (odnosno minimizuje ukupnu grešku).

Nejednačine

U ekonomiji i finansijama nejednačine se tipično koriste da se definiše oblast u kojoj se traži optimum neke funkcije, npr, budžetska ograničenja. Takođe, potrošnja nikad nije negativna. Za rešavanje nejednačina koristimo Reduce:

Reduce[{3 + 2*x < 8}, {x}]

Dalje se fokusiramo na grafičko predstavljanje nejednakosti, korisno ako želimo da znamo kako izgleda oblast definisanosti nekog problema optimizacije.

Kako izgleda oblast definisana putem nejednačine (x^2)+2 (y^2) <= 1? Ovde x i y mogu biti proizvoljne vrednosti. Vidimo da je to konveksan skup (ukoliko je f konveksna, skup tipa f <= nesto je uvek konveksan).

RegionPlot[x^2+2y^2<=2,{x,-2,2},{y,-2,2}]

Sa druge strane, pošto funkcija x^2+y^3 nije konveksna, onda ni skup x^2+y^3<2 neće biti konveksan.

RegionPlot[x^2+y^3<2,{x,-2,2},{y,-2,2}]

Najzad, presek konveksnog i nekonveksnog skupa nije obavezno konveksan

RegionPlot[x^2+y^3<2&&x+y<1,{x,-2,2},{y,-2,2}]

dok je presek dva konveksna skupa konveksan

RegionPlot[x^2+y^2<2&&x+y<1,{x,-2,2},{y,-2,2}]

2. Matematička analiza

Pojam limesa: kontinualno obračunavanje kamate

Pretpostavimo da plavoj boji dodajemo žutu, pa tako dobijenoj boji ponovo dodamo žutu, i to ponovimo više puta. Šta ćemo dobiti posle dovoljno mnogo iteracija? Očigledno je da boja konvergira ka žutoj. Možemo reći da je žuta limes ove operacije.

NestList[Blend[{Yellow,#}]&,Blue,30]

Evo primera iz ekonomije. Pretpostavimo da je godišnja kamatna stopa na neko ulaganje jednaka r, i da se obračunava n puta godišnje. U tom slučaju, jedan uložen evro posle godinu dana dao bi:

(((1+(r/n)))^n)

Čemu će težiti ovaj izraz kada kamatu obračunavamo neprekidno, odnosno kada n -> ∞? To možemo izračunati koriščenjem funkcije Limit

Jedan koristan limes u ekonomiji je limes kontinualnog obračuna kamate. Dakle, ako kontinualno obračunavamo kamatu imamo da

Limit[(((1+(r/n)))^n),n-> ∞]

Pretpostavimo da smo pozajmili 500 evra u banci. Kamata je 9 posto godišnje, i obračunata je kontinualno. Koliko bi bio naš dug posle godinu dana? Uporedite sa slučajem kada je ista kamata obračunata mesečno. Što se tiče mesečnog obračuna kamate, dobili bismo

bvMesecno=500 (((1+(0.09/12)))^12)

dok bi u slučaju kontinualnog obračuna dug bio:

bvKontinualno=500Exp[0.09]

Dug bi bio veći ukoliko bi banka kontinualno obračunavali kamatu. Za zadatu nominalnu kamatnu stopu, efektivna kamatna stopa je najveća ukoliko kamatu obračunavamo kontinualno, a najmanje ako je obračunavamo jednom godišnje.

Definicija prvog izvoda

Jedan od najkorisnijih pojmova u matematici je pojam izvoda. To je stopa rasta neke funkcije u limesu kada se nezavisna promenljiva promeni beskonačno malo. U ekonomiji, kad god pričamo o marginalnoj korisnosti, marginalnom trošku, ili analizi osetljivosti mi zapravo računamo izvod neke funkcije. U WL to se radi trivijalno, koristeći funkciju D (od Derivative).

Izvod je po definiciji limes količnika infinitezimalne promene vrednosti funkcije u odnosu na vrednost nezavisne promenljive.

Limit[(f[x+Δx]-f[x])/Δx,Δx-> 0]//TraditionalForm

Nađimo izvod funkcije (x^2) po x. Trebalo bi svi da se sećamo da je to 2 x. Ali, ne moramo da pamtimo, naravno. Evo kako bismo to izračunali. Funkcija se zove D (od Derivative ili izvod). Prvo ide funkcija koju diferenciramo pa posle lista promenljivih po kojima diferenciramo.

D[(x^2),{x}]

Po gornjoj definiciji, ukoliko je f = (x^2), imamo da je (f[x + Δx] - f[x])/Δx jednaka:

Expand[(((x+Δx))^2)-(x^2)]/Δx

Simplify[Expand[(((x+Δx))^2)-(x^2)]/Δx]

U limesu kada Δx -> 0 dobijamo 2 x.

Primena izvoda

Na slici su četiri šolje za kafu. U jednu od njih se konstantnom brzinom sipa kafa.

U koordinatnom sistemu je prikazan graf zavisnosti dubine kafe u šolji od vremena. Na y osi je dubina kafe, a na x osi je vreme. Koja je šolja u pitanju. Obrazloži

FlipView[{,Text[Style[" Jasno je da je brzina rasta nivoa kafe u šolji veća što je šolja uža. Analizirajući grafik vidimo da se brzina rasta u početku smanjuje, što znači da se šolja širi od dna nagore. Posle toga, negde oko sredine grafika, rast ubrzava, što znači da se šolja sužava. Ovakvom opisu odgovara Bobanova šolja.","Text"]]}]

Trka formule 1

Ako pri ulasku u krivinu vozač formule 1 usporava, a pri izlasku iz krivine ubrzava, skicirati grafik zavisnosti pređenog puta od vremena od vremena ulaska od žute zastavice (pretposlednje pre krivine) do početka crveno-belog natpisa posle krivine. Odgovor obrazložiti.

FlipView[{,Text[Style[" Pred ulazak u krivinu brzina se smanjuje, pa put sporije raste, a pri izlasku se opet brzina povećava, pa pređeni put brže raste.","Text"]]}]

Primeri izračunavanja prvog izvoda i izvoda višeg reda

Primetimo da se izvod složene funkcije računa ovako:

D[f[g[x]],x]

Evo prvih izvoda nekih elementarnih funkcija

D[#,x]&/@{(x^n),Log[x],Exp[x],Sin[x],Cos[x],(a^x)}

Ovde umesto slota dođe jedna po jedna funkcija kojoj računamo prvi izvod.

Prvi izvod možemo da napišemo i ovako (ovo će biti korisno za posle):

D[(x^2),{x,1}]

Cifra 1 tu govori da je u pitanju upravo prvi izvod. Drugi izvod bi onda bio:

D[(x^2),{x,2}]

Evo kako možemo da izračunamo druge i treće izvode elementarnih funkcija

D[#,{x,2}]&/@{(x^n),Log[x],Exp[x],Sin[x],Cos[x],(a^x)}

Vizualizacija funkcija i njihovih izvoda pomoću kul Manipulate

Na naredne dva slajda želim da vam pokažem kako da vizualizujemo funkcije i njihove izvode, ali i da naučimo nešto korisno o Manipiulate. Na prvom grafiku korisnik ima mogućnost izbora funkcije pomoću promenljive func. Red izvoda kontroliše promenljiva n.

Manipulate[Plot[Evaluate[D[func@x,{x,n}]],{x,0,4 π}],{func,{Sin,Cos,Exp,Tan}},{n,Range[0,3]}]

Ovo radi kad imamo predefinisane glave funkcije,odnosno funkcije kao što su Sin, Cos, itd. Možemo nešto slično da uradimo i sa bilo kom drugom funkcijom. Za to nam treba da definišemo listu čistih funkcija. Međutim, postoji jedan problem. Naime, imena dugmića imaju naziv koji odgovara glavi, npr Function[{t},t-2 (t^2)] a ne samo t-2 (t^2). To je problematično.

Manipulate[Plot[Evaluate[D[func@x,{x,n}]],{x,-4 π,4 π},PlotRange-> All],{func,{Function[{t},t-2 (t^2)],Function[{t},t Sin[t]],Function[{t},(t^2)Sin[t]]}},{n,Range[0,3]}]

Da bismo se toga rešili, za svaku od funkcija uvedemo nadimak (alias) ovako Function[{t},t-2 (t^2)]->t-2 (t^2), i slično za ostale. Sada dugmići izgledaju bolje:

Manipulate[Plot[Evaluate[D[func@x,{x,n}]],{x,-4 π,4 π},PlotRange-> All],{func,{Function[{t},t-2 (t^2)]->t-2 (t^2),Function[{t},t Sin[t]]->t Sin[t],Function[{t},(t^2)Sin[t]]->(t^2) Sin[t]}},{n,Range[0,3]}]

Nastavak

Ali, ovaj kod možemo dalje da unapredimo. Jedna od stvari koji nije idealna jeste da prethodni izraz sadrži puno ponavljanja istog oblika. Naime, lista

{Function[{t},t-2 (t^2)]->t-2 (t^2),Function[{t},t Sin[t]]->t Sin[t],Function[{t},(t^2)Sin[t]]->(t^2) Sin[t]}

može da se, preglednije, dobije tako što mapiramo funkciju Function[{t},#]->#& na listu {t-(t^2),t Sin[t],(t^2)Sin[t]}

Function[{t},#]->#&/@{t-(t^2),t Sin[t],(t^2)Sin[t]}

Najzad, dobijamo izraz koji je lako generalisati ako želimo da promenimo listu funkcija koje želimo da predstavimo grafički:

Manipulate[Plot[Evaluate[D[func@x,{x,n}]],{x,-4 π,4 π},PlotRange-> All],{func,Function[{t},#]->#&/@{t-(t^2),t Sin[t],(t^2)Sin[t]}},{n,Range[0,3]}]

Put za Niš

Dok vozite za Niš, kompjuter u vašim fensi kolima beleži na svakih 6 minuta (ili 0.1 deo sata), pređeni put od vašeg stana u Beogradu. Podaci o tome nalaze se u podaci17.xlsx fajlu, u Sheetu broj 2. Nacrtajte na dva različita grafika pređeni puta i brzinu kretanja.

put=Rest[Import["C:\\Users\\Branko Urosevic\\Dropbox\\Branko Urosevic\\operaciona2\\downloads\\podaci17.xlsx"][[2]]]

Možemo sada da napravimo model na osnovu ovih podataka pređenog puta kao funkcije vremena. Koristimo regresiju (do trećeg stepena po t)

s=LinearModelFit[put,{t,(t^2),(t^3)},{t}]

Pređeni put, brzina i ubrzanje kao kao funkcije vremena bi, po ovom modelu bile jednake

{s[t],s'[t],s''[t]}//Column

Vidimo da se izvod, dakle, može računati i preko oznake s’[t]. Pošto merenja nivu previše gusta, fit nije izvrsan, posebno u početnom delu.

Show[ListPlot[put,PlotStyle->Red],Plot[s[t],{t,0.0,1.8}],PlotLabel->"Pređeni put"]

Procenjena brzina bi bila

Plot[s'[t],{t,0,1.8},PlotLabel->"Brzina kao funkcija vremena"]

Kao i sa slike a stvarnom pređenom putu, vidimo da je brzina bila najmanja na izlasku iz Beograda, a najveća negde sredinom putovanja.

Putanja, brzina, i ubrzanje satelita prilikom kretanja oko Zemlje

Izvodi nalaze ogromne primene u raznim naukama. Prvo su uvedeni, od strane Leibnitz-a i Newton-a u fizici. Pomoću pojmova izvoda definiše se recimo, brzina kretanja tela. Evo primera.

Pretpostavimo da se neki satelit kreće tako da su njegove koordinate x i y funkcije vremena i date izrazima:

x[t_]:=21 Cos[((2π)/24) t]

y[t_]:=17 Sin[((2π)/24) t]

Naći putanju (trajektoriju) ovog satelita (to je satelit koji za 24 sata izrotira oko Zemlje, takozvani stacionarni satelit). To možemo naći koriščenjem ParametricPlot:

ParametricPlot[{x[t],y[t]},{t,0,24}]

Vidimo da se satelit kreće po elipsi (to je tipično slučaj). Kako da izračunamo brzinu satelita? Brzina govori o tome koliko brzo se menjaju koordinate sa vremenom. Naime, brzina je vektor i njene komponente su:

D[{x[t],y[t]},t]

Veličina vektora brzine i ubrzanje satelita

Veličina vektora brzine data je njegovom normom (dužinom). O veličini vektora govorićemo više na narednom predavanju. Za sada samo izračunajmo veličinu vektora brzine. Ona je takođe funkcija vremena i data je izrazom:

brzinaSatelita[t_]:=Norm[D[{x[t],y[t]},t]]

Sada možemo videti kako se veličina brzine satelita menja u toku 24 sata:

Plot[Evaluate[brzinaSatelita[t]],{t,0,24}]

Vidimo da je brzina satelita periodična funkcija vremena. Nije teško sagledati da je veličina brzine najmanja kada se satelit nalazi na najudaljenijim tačkama putanje (elipse) dok je najveća kada se nalazi na najbližim tačkam zemlji.

Ubrzanje je drugi izvod od funkcije koordinata. Ubrzanje govori o tome koliko brzo se menja brzina sa vremenom. U slučaju kretanja satelita, imali bismo da je veličina vektora ubrzanja data izrazom:

ubrzanjeSatelita[t_]:=Norm[D[{x[t],y[t]},{t,2}]]

Plot[Evaluate[ubrzanjeSatelita[t]],{t,0,24}]

Vidimo da je i ubrzanje periodična funkcija.

Analiza osetljivosti vrednosti projekta u odnosu na promenu oportunitetnog troska y

Pretpostavimo da želimo da investiramo u projekat koji ima sledeće novčane tokove (oportunitetni je y=0.06): početno ulaganje je 31400 evra, a pozitivni novčani tokovi u godinama 1 do 3 su, respektivno: 10000, 12000, i 19000 evra. Sadašnja vrednost projekta, to jest fer vrednost tog projekta danas, bila bi:

nsv0=nsv[{-31400,10000,12000,19000},0.06]

Ukoliko bi se oportunitetni trošak povećao za jedan procentni poen, sa 6 sa 7 procenata, nova vrednost projekta bi bila:

nsv1=nsv[{-31400,10000,12000,19000},0.07]

pa bi razlika vrednosti projekta, u apsolutnom iznosu, iznosila:

nsv1-nsv0

Procentualno, smanjenje vrednosti bi bilo jednako, stoga:

(((nsv1-nsv0))/nsv0)

Relativna promena neke funkcije f[x] u odnosu na malu promenu veličine x od Δx može se predstaviti, aproksimativno, kao proizvod te promene, Δx i prvog izvoda od logaritma funkcije f[x], to jest kao:

osetljivost= D[Log[f[x]],x]Δx

Upoređenje egzaktne promene vrednosti investicije i linearne aproksimacije osetljivosti

Izraz za osetljivost govori za koliko se procenata promeni, grubo govoreći, vrendost nekog investicionog projekta ukoliko se vrednost diskontne stope promeni za 1 procentni poen. U slučaju našeg ulaganja, osetljivost u odnosu na promenu diskontne stope od Δy=0.01 (to jest, 1 posto) bi bila izračunata približno  koristeći sledeći izraz:

0.01((D[nsv[{-31400,10000,12000,19000},y],y])/(nsv[{-31400,10000,12000,19000},y]))/.{y-> 0.06}

Dakle, vidimo da povečanje diskontne stope za jedan procentni poen dovodi do pada vrednosti projetka od preko 15 procenata. To se relativno dobro poklapa sa egzaktnom promenom vrednosti projekta. 

Poklapanje je još puno bolje ukoliko merimo osetljivost na promenu od 0.1 procenat a ne 1 procenat. U tom slučaju, egzaktna promena vrednosti bi bila

(((nsv[{-31400,10000,12000,19000},0.061]-nsv[{-31400,10000,12000,19000},0.06]))/(nsv[{-31400,10000,12000,19000},0.06]))

dok približni metod baziran na osetljivosti daje

0.001((D[nsv[{-31400,10000,12000,19000},y],y])/(nsv[{-31400,10000,12000,19000},y]))/.{y-> 0.06}

Primećujemo da je linearna aproksimacija na kojoj je bazirano korišćenje prvog izvoda utoliko bolja ukoliko je promena nezavisne promenljive manja.

Parcijalni izvodi: Marginalni trošak

Videli smo kako se lako računaju izvodi funkcije jedne promenljive. Isto tako se lako računaju prvi i viši izvodi funkcije više promenljivih, takozvani parcijalni izvodi. U računanju parcijalnih izvoda, uvek se sve promenljive drže fiksno, odnosno tretiraju kao konstante, osim promenljive po kojoj se diferencira.

Pretpostavimo da imamo proizvodnu tehnologiju za koju je funkcija ukupnog troška data sledećim izrazom (ovde su q1 i q2 količine iskorišćenih dobara 1 i 2):

ukupniTrosak=40+(q1^2)+2 (q2^2);

Naći marginalni trošak prvog i drugog dobra ukoliko znamo da su potrošene količine ta dva dobra date sa q1-> 5 odnosno q2-> 6 jedinica, respektivno. Nađimo prvo opšti izraz za vektor marginalnih troškova

marginalniTrosak={D[ukupniTrosak,q1],D[ukupniTrosak,q2]}

Ima još načina da se uradi to isto. Na primer, ukupniTrosak možemo diferencirati (jednom) po listi promenljivih {q1,q2}. Opet dobijamo, naravno, isti rezultat kao i gore:

marginalniTrosak=D[ukupniTrosak,{{q1,q2},1}]

Prednost je da na ovaj način ne moramo više puta da ponavljamo izraz za D. Evo i trećeg načina:

marginalniTrosak=Grad[ukupniTrosak,{q1,q2}]

Ovde smo iskoristili pojam gradijenta i funkciju Grad koja izračunava prvi izvod neke funkcije po svim komponentava vektora koji zadamo kao drugi argument.

Numerički primer za marginalni trošak i pojam marginalne korisnosti

Za konkretne vrednost dobijamo da su marginalni troškovi dati sledećim vektorom:

marginalniTrosak/.{q1->5,q2->6}

Drugim rečima, ako smanjimo potrošnju prve komponente za jednu jedinicu, smanjićemo trošak za 10 jedinica. Sa druge strane, ukoliko bismo smanjili potrošnju druge komponente za jednu jedinicu, smanjili bismo trošak za 24 jedinice. U eri zatezanja kajša, više se, ako možemo, isplati malo smanjiti drugi input.

Još jedan primer u ekonomiji vezan za izračunavanje parcijalnih izvoda jeste marginalna korisnost. Pretpostavimo da je funkcija korisnosti data izrazom:

u=(Sqrt[c1])+2 (Sqrt[c2]);

Ukoliko je naša trenutna alokacija dobara, c1-> 4, c2 -> 3, naći marginalnu korisnost prvog i drugog dobra (odnosno za koliko bi nam se povećala korisnost ukoliko bismo povećali potrošnju prvog odnosno drugog dobra za jednu jedinicu).

marginalnaKorisnost=D[u,{{c1,c2},1}]

marginalnaKorisnost/.{c1->4,c2->3}

Mali muzički poklon

https://www.youtube.com/watch?v=Us4DnlB9xeU