# Funkcije više varijabli - primjene u ekonomiji

load(draw)$

## zadatak

Dane su cijene dvaju dobara u ovisnosti o količinama proizvodnje p1=15-Q1 i p2=10-Q2, te funkcija troškova T(Q1,Q2)=5*Q1+4*Q2+5. 
Pronađite optimalnu kombinaciju proizvodnje tako da dobit bude maksimalna. Koliko iznosi maksimalna dobit?

### rješenje

prihod

P(Q1,Q2):=expand((15-Q1)*Q1+(10-Q2)*Q2)$
P(Q1,Q2);

dobit

D(Q1,Q2):=P(Q1,Q2)-(5*Q1+4*Q2+5)$
D(Q1,Q2);

parcijalne derivacije

D1:diff(D(Q1,Q2),Q1);

D2:diff(D(Q1,Q2),Q2);

stacionarna točka: (5,3)

solve([D1=0,D2=0],[Q1,Q2]);

Maksimalna dobit se postiže za Q1=5 i Q2=3 te iznosi 29 novčanih jedinica.

hessian(D(Q1,Q2),[Q1,Q2]);

D(5,3);

### graf funkcije dobiti s istaknutom crvenom točkom maksimuma (5,3,29)

wxdraw3d(xu_grid=25,yv_grid=25,surface_hide=true,zrange=[-20,40],color=skyblue,
xlabel="Q1",ylabel="Q2",zlabel="D",
explicit(D(Q1,Q2), Q1,0,10, Q2,0,10),
color=red,point_type=7,point_size=1.2,points([[5,3,29]]),
user_preamble= "set xyplane at 0"),wxplot_size=[700,600];

## zadatak

Zadana je funkcija troškova T(Q1,Q2)=2*Q1^2+Q1*Q2+Q2^2 u ovisnosti o količinama proizvodnje za dva proizvoda.
Odredite uz koju kombinaciju proizvodnje su troškovi minimalni pri čemu je ukupna proizvodnja jednaka 20 proizvoda.

### rješenje

T(Q1,Q2):=2*Q1^2+Q1*Q2+Q2^2;

Uvrstimo uvjet Q1+Q2=20 u funkciju troškova

fun:expand(T(Q1,20-Q1));

dobivamo funkciju jedne varijable čije ekstreme tražimo na standardni način

der:diff(fun,Q1);

stacionarna točka: 5

solve(der=0,Q1);

U točki 5 je minimum

diff(fun,Q1,2);

Uvrstimo Q1=5 u uvjet Q1+Q2=20 pa dobivamo Q2=15.
Dakle, na razini proizvodnje od 20 proizvoda minimalni troškovi se postižu za Q1=5, Q2=15 i jednaki su 350 novčanih jedinica.

T(5,15);

### slika

-> Graf funkcije troškova je svijetloplava ploha.
-> Uvjet Q1+Q2=20 zapravo znači da se u domeni šećemo po crvenom pravcu.
-> Prilikom šetnje po crvenom pravcu, na plohi se šećemo samo po plavoj krivulji.
-> Vidimo da na plavoj krivulji na plohi postoji najniža crvena točka. 

wxdraw3d(xu_grid=40,yv_grid=40,surface_hide=true,view=[70,140],color=skyblue,
xlabel="Q1",ylabel="Q2",zlabel="T",
parametric_surface(u*cos(v),u*sin(v),2*u^2*cos(v)^2+u^2*cos(v)*sin(v)+u^2*sin(v)^2, u,0,20, v,0,2*%pi),
color=blue,line_width=2,parametric(u,20-u,T(u,20-u),u,0,19.8),
color=red,point_type=7,point_size=1.2,points([[5,15,350]]),
parametric(u,20-u,0,u,0,19.8),
user_preamble= "set xyplane at 0"),wxplot_size=[900,600];

## zadatak

Zadana je funkcija ponude s1(p1,p2)=10*p1^(1/2)-2*p2^2 gdje su p1 i p2 cijene po jedinici pojedinog proizvoda.
a) Za koliko se približno promijeni ponuda kada cijenu p1 na nivou p1=1, p2=2 povećamo za 0.02?
b) Za koliko se približno promijeni ponuda kada cijenu p2 na nivou p1=1, p2=2 smanjimo za 0.01?
c) Za koliko se približno promijeni ponuda kada istovremeno napravimo promjene iz a) i b) dijela zadatka?

### rješenje

s1(p1,p2):=10*sqrt(p1)-2*p2^2;

parcijalne derivacije

der1:diff(s1(p1,p2),p1);

der2:diff(s1(p1,p2),p2);

a) dio: odredit ćemo stvarnu promjenu i približnu promjenu pomoću parcijalne derivacije po varijabli p1

stvarna promjena

s1(1.02,2)-s1(1,2);

približna promjena

pr1:subst([p1=1,p2=2],der1)*0.02;

b) dio: odredit ćemo stvarnu promjenu i približnu promjenu pomoću parcijalne derivacije po varijabli p2

stvarna promjena

s1(1,1.99)-s1(1,2);

približna promjena

pr2:subst([p1=1,p2=2],der2)*(-0.01);

c) dio: odredit ćemo stvarnu promjenu i približnu promjenu pomoću diferencijala

stvarna promjena

s1(1.02,1.99)-s1(1,2);

približna promjena

pr1+pr2;

### graf zadane funkcije ponude

Na plohi je istaknuta točka u kojoj smo računali promjene funkcije.

wxdraw3d(xu_grid=20,yv_grid=20,surface_hide=true,view=[57,130],color=skyblue,
xlabel="p1",ylabel="p2",zlabel="s1",
explicit(s1(p1,p2), p1,0,5, p2,0,5),
color=red,point_type=7,point_size=1.2,points([[1,2,s1(1,2)]]),
user_preamble= "set xyplane at 0"),wxplot_size=[700,600];

## zadatak

Zadana je funkcija f(x,y)=(x+1)*e^(y^(1/2)). Izračunajte koeficijente parcijalnih elastičnosti 
funkcije f na nivou x=2, y=1 i interpretirajte rezultate.

### rješenje

f(x,y):=(x+1)*%e^sqrt(y);

parcijalne derivacije

fx:diff(f(x,y),x);

fy:diff(f(x,y),y);

parcijalne elastičnosti

elx:x/f(x,y)*fx;

ely:y/f(x,y)*fy;

koeficijenti na nivou x=2, y=1

Ako na nivou (2,1) varijablu x povećamo za 1%, vrijednost funkcije f se poveća za 0.66%.

subst([x=2,y=1],elx);

Ako na nivou (2,1) varijablu y povećamo za 1%, vrijednost funkcije f se poveća za 0.5%.

subst([x=2,y=1],ely);

### graf funkcije f

Na plohi je istaknuta točka u kojoj smo računali parcijalne elastičnosti funkcije f.

wxdraw3d(xu_grid=20,yv_grid=20,surface_hide=true,color=skyblue,
xlabel="x",ylabel="y",zlabel="f",
explicit(f(x,y), x,-5,5, y,-5,5),
color=red,point_type=7,point_size=1.2,points([[2,1,f(2,1)]]),
user_preamble= "set xyplane at 0"),wxplot_size=[700,600];

## zadatak

Izračunajte koeficijente parcijalnih elastičnosti funkcije g(x,y)=(x-y^2)^(1/2) na nivou
x=25, y=3 i interpretirajte rezultate.

### rješenje

g(x,y):=sqrt(x-y^2);

parcijalne derivacije

gx:diff(g(x,y),x);

gy:diff(g(x,y),y);

parcijalne elastičnosti

elx:x/g(x,y)*gx;

ely:y/g(x,y)*gy;

koeficijenti na nivou x=25, y=3

Ako na nivou (25,3) varijablu x povećamo za 1%, vrijednost funkcije g se poveća za 0.78125%.

subst([x=25,y=3],elx);

%,numer;

Ako na nivou (25,3) varijablu y povećamo za 1%, vrijednost funkcije g se smanji za 0.5625%.

subst([x=25,y=3],ely);

%,numer;

### graf funkcije g

Na plohi je istaknuta točka u kojoj smo računali parcijalne elastičnosti funkcije g.

wxdraw3d(xu_grid=25,yv_grid=25,surface_hide=true,view=[60,135],color=skyblue,
xlabel="x",ylabel="y",zlabel="g",
parametric_surface(u,sqrt(u)*(2*v-1),2*sqrt(u*v-u*v^2), u,0,50, v,0,1),
color=red,point_type=7,point_size=1.2,points([[25,3,g(25,3)]]),
user_preamble= "set xyplane at 0"),wxplot_size=[700,600];

## zadatak

Dana je funkcija potražnje q2(p1,p2)=2*p1*(10-p2)^(1/2). Izračunajte i interpretirajte koeficijente
parcijalne i križne elastičnosti na nivou cijena p1=5, p2=1. Jesu li proizvodi komplementi ili supstituti?

### rješenje

q2(p1,p2):=2*p1*sqrt(10-p2);

parcijalne derivacije

der1:diff(q2(p1,p2),p1);

der2:diff(q2(p1,p2),p2);

parcijalne elastičnosti

el1:p1/q2(p1,p2)*der1;

el2:p2/q2(p1,p2)*der2;

koeficijent parcijalne elastičnosti

Ako na nivou cijena p1=5, p2=1 cijenu p2 povećamo za 1%, potražnja za drugim proizvodom se smanji za 0.06%.
Drugi proizvod je stoga normalno dobro.

subst([p1=5,p2=1],el2);

%,numer;

koeficijent križne elastičnosti

Ako na nivou cijena p1=5, p2=1 cijenu p1 povećamo za 1%, potražnja za drugim proizvodom se poveća za 1%.
Proizvodi su supstituti.

subst([p1=5,p2=1],el1);

### graf funkcije potražnje q2

Na plohi je istaknuta točka u kojoj smo računali parcijalne elastičnosti.

wxdraw3d(xu_grid=25,yv_grid=25,surface_hide=true,view=[60,300],color=skyblue,
xlabel="p1",ylabel="p2",zlabel="q2",
explicit(q2(p1,p2),p1,0,10, p2,0,10),
color=red,point_type=7,point_size=1.2,points([[5,1,q2(5,1)+0.05]]),
user_preamble= "set xyplane at 0"),wxplot_size=[700,600];

## zadatak

Zadana je funkcija proizvodnje Q(L,K)=2*L^0.25*K^0.5 u ovisnosti o radu L i kapitalu K.
a) Odredite funkciju granične produktivnosti rada i interpretirajte rezultat na nivou L=10, K=5.
b) Odredite funkciju granične produktivnosti kapitala i interpretirajte rezultat na nivou L=10, K=5.
c) Provjerite da je Q homogena funkcija. Kakav tip prinosa određuje zadana funkcija proizvodnje?
d) Za koliko se promijeni količina proizvodnje ako rad i kapital povećamo za 10%?
e) Odredite jednadžbu izokvante L=L(K) na nivou proizvodnje Q=81.

### rješenje

Q(L,K):=2*L^0.25*K^0.5;

a) dio
Ako na nivou L=10, K=5 rad povećamo za jednu jedinicu, proizvodnja će se povećati za 0.2 jedinice.

QL:diff(Q(L,K),L);

subst([L=10,K=5],QL);

b) dio
Ako na nivou L=10, K=5 kapital povećamo za jednu jedinicu, proizvodnja će se povećati za 0.8 jedinica.

QK:diff(Q(L,K),K);

subst([L=10,K=5],QK);

c) dio
Q je homogena funkcija sa stupnjem homogenosti 0.75.
Kako je stupanj homogenosti manji od 1, zadana funkcija proizvodnje ima padajuće prinose.

assume(a>0,L>0,K>0);

ratsimp(Q(a*L,a*K)/Q(L,K));

d) dio
Ako rad i kapital povećamo za 10%, proizvodnja se poveća za 7.41%.

1.1^0.75;

e) dio

solve(Q(L,K)=81,L);

### graf funkcije proizvodnje

Na slici je prikazana i izokvanta (crvena krivulja) te pripadna plava krivulja na plohi na kojoj je proizvodnja jednaka 81.

wxdraw3d(xu_grid=25,yv_grid=25,surface_hide=false,
xlabel="L",ylabel="K",zlabel="Q",
color=red,line_width=2,parametric(43046721/(16*u^2),u,0,u,116,200),
color=skyblue,line_width=1,explicit(Q(L,K),L,0,200, K,0,200),
color=blue,line_width=2,parametric(43046721/(16*u^2),u,81.05,u,116,200),
user_preamble= "set xyplane at 0"),wxplot_size=[700,600];

## zadatak

Zadana je funkcija proizvodnje Q(L,K)=3*L^0.5*K u ovisnosti o radu L i kapitalu K.
a) Ako jedna jedinica rada košta 10 eura, jedna jedinica kapitala 15 eura, a poduzeće
ima na raspolaganju 20000 eura, nađite kombinaciju rada i kapitala za koju se uz
maksimalno iskorištenje budžeta ostvaruje maksimalna proizvodnja. 
Koliko iznosi maksimalna proizvodnja?
b) Na istoj slici prikažite budžetsko ograničenje i izokvantu na nivou maksimalne proizvodnje.
Što vrijedi?

### rješenje

Q(L,K):=3*L^0.5*K;

Iz uvjeta 10*L+15*K=20000 izrazimo jednu varijablu pomoću preostale i uvrstimo u funkciju Q.

solve(10*L+15*K=20000,L);

Dobivamo funkciju jedne varijable čije ekstreme tražimo na standardni način.

fun:Q(2000-3/2*K,K);

Stacionarna točka: K=8000/9

der:ratsimp(diff(fun,K));

solve(der=0,K);

U K=8000/9 je lokalni maksimum

der2:ratsimp(diff(fun,K,2));

subst(K=8000/9,der2),numer;

Uvrstimo K=8000/9  u uvjet 10*L+15*K=20000 pa dobivamo L=2000/3.

solve(10*L+15*8000/9=20000,L);

maksimalna proizvodnja

mp:Q(2000/3,8000/9);

izokvanta na nivou maksimalne proizvodnje

solve(Q(L,K)=mp,K);

budžetsko ograničenje je tangenta na izokvantu na nivou maksimalne proizvodnje

wxdraw2d(grid=true,color=red,line_width=2,xlabel="L",ylabel="K",
explicit(4000/3-2/3*L,L,0,2000),color=blue,
explicit(1095635431/(47738*sqrt(L)),L,100,4000));

### graf funkcije proizvodnje

-> crveni pravac je budžetsko ograničenje
-> kada se u domeni šećemo samo po crvenom pravcu, na plohi se zapravo šećemo po ljubičastoj krivulji
-> vidimo da na ljubičastoj krivulji postoji najviša točka
-> izokvanta u toj najvišoj točki na plohi (zelena krivulja) je izokvanta na nivou maksimalne proizvodnje uz zadano budžetsko ograničenje
-> plava krivulja je zapravo izokvanta spuštena u domenu i ona je tangencijalna na budžetsko ograničenje

wxdraw3d(xu_grid=45,yv_grid=45,surface_hide=false,
xlabel="L",ylabel="K",zlabel="Q",view=[60,25],
color=red,line_width=2,parametric(2000-3/2*u,u,0,u,0,4000/3),
color=blue,line_width=2,parametric(u,68853.04/(3*u^0.5),0,u,300,2000),
color=skyblue,line_width=1,explicit(Q(L,K),L,0,2000, K,0,1300),
color=purple,line_width=2,parametric(2000-3/2*K,K,Q(2000-3/2*K,K),K,0,1335),
color=forest_green,parametric(u,68853.04/(3*u^0.5),68853.04,u,320,2000),
user_preamble= "set xyplane at 0"),wxplot_size=[1000,750];

## zadatak

Neka je cijena jedinice rada 1 euro, jedinice kapitala 2 eura, a fiksni troškovi iznose 10 eura.
Funkcija proizvodnje u ovisnosti o radu L i kapitalu K dana je s Q(L,K)=0.5^0.5*L*K^0.5.
Na nivou proizvodnje Q=8 pronađite optimalnu kombinaciju rada i kapitala tako da troškovi budu
minimalni. Koliko iznose minimalni troškovi?

### rješenje

funkcija proizvodnje

Q(L,K):=sqrt(0.5)*L*K^0.5;

funkcija troškova

T(L,K):=L+2*K+10;

Tražimo ekstreme funkcije T uz uvjet Q(L,K)=8.
Izrazimo iz uvjeta varijablu L i uvrstimo u funkciju T.

solve(Q(L,K)=8,L);

fun:T(45239074/(3998607*sqrt(K)),K);

Dobivamo funkciju jedne varijable čije ekstreme tražimo na standardni način.

der:diff(fun,K);

solve(der=0,K),numer;

U stacionarnoj točki K=2 je zaista lokalni minimum.
Iz geometrijskih razloga je jasno da je to ujedno i globalni uvjetni minimum.

der2:diff(fun,K,2);

subst(K=2,der2),numer;

Uvrstimo K=2 u uvjet Q(L,K)=8 i dobivamo L=8.

solve(Q(L,2)=8,L);

Minimalni troškovi na nivou proizvodnje Q=8 se postižu za L=8, K=2 i iznose 22 eura.

T(8,2);

### graf funkcije troškova

-> Uvjet Q(L,K)=8 je crvena krivulja u domeni.
-> Kada se u domeni šećemo po crvenoj krivulji, na plohi se šećemo po plavj krivulji.
-> Vidimo da postoji najniža točka na plavoj krivulji i pripadna crvena točka u domeni 
   u kojoj se postižu minimalni troškovi.

wxdraw3d(xu_grid=30,yv_grid=30,surface_hide=false,
xlabel="L",ylabel="K",zlabel="T",view=[65,18],
color=red,line_width=2,parametric(8/(sqrt(0.5)*sqrt(u)),u,0,u,0.33,20),
point_type=7,point_size=1.2,points([[8,2,0]]),
color=skyblue,line_width=1,explicit(T(L,K),L,0,20, K,0,20),
color=blue,line_width=2,parametric(8/(sqrt(0.5)*sqrt(u)),u,T(8/(sqrt(0.5)*sqrt(u)),u),u,0.33,20),
points([[8,2,T(8,2)]]),user_preamble= "set xyplane at 0"),wxplot_size=[700,600];