% nakupna cena  = 10
% predajna cena = 15
% strata = 7
% pocet obdobi = 10

k=20;
xmax=100;
umax=30;
V=zeros(k+1,xmax+1);
v=zeros(k+1,xmax+1);

%konstrukcia hodnotovej funkcie a optimalnej spatnej vazby
V(:,:)=-inf;
V(k+1,:)=0;
z=0:1:30;
for i=k:-1:1
    for x=0:xmax
        for u=0:umax
            f=min(max(x+u-z,0),xmax);
            f0=0.7*min(x+u,z)-0.5*u-0.1*x;
            if 1/31*sum(f0+V(i+1,f+1))>V(i,x+1)
               V(i,x+1)=1/31*sum(f0+V(i+1,f+1)); 
               v(i,x+1)=u;
            end         
        end     
    end
end    

subplot(1,2,1);
j=0:1:xmax;
i=0:1:k;
[I,J]=meshgrid(i,j);
colormap('default');
w1=0:1:18;
w2=0:2:18;
[C,h]=contour(I,J,v',w1);
clabel(C,h,w2);
axis([0 20 1 30])
xlabel('obdobie')
ylabel('stavová premenná (x)')

k=20;
xmax=100;
umax=30;
V=zeros(k+1,xmax+1);
v=zeros(k+1,xmax+1);

%konstrukcia hodnotovej funkcie a optimalnej spatnej vazby
V(:,:)=-inf;
V(k+1,:)=0;
z=0:1:30;
for i=k:-1:1
    for x=0:xmax
        for u=0:umax
            f=min(max(x+u-z,0),xmax);
            f0=0.7*min(x+u,z)-0.5*u-0.3*x;
            if 1/31*sum(f0+V(i+1,f+1))>V(i,x+1)
               V(i,x+1)=1/31*sum(f0+V(i+1,f+1)); 
               v(i,x+1)=u;
            end         
        end     
    end
end    


subplot(1,2,2);
j=0:1:xmax;
i=0:1:k;
[I,J]=meshgrid(i,j);
colormap('default');
w1=0:1:11;
w2=0:2:10;
[C,h]=contour(I,J,v',w1);
clabel(C,h,w2);
axis([0 20 1 30])
xlabel('obdobie')
ylabel('stavová premenná (x)')
print -depsc2 -tiff obr8.eps