function [V,control]=progdyn(prix)
// Programmation dynamique pour un problème de gestion de stock
time=size(prix,'*')
etat=3 //(0,1,2)
V=zeros(etat,time);
control=V;
for i=1:etat
V(i,time)=prix(time)*(i-1); //cout a l'etat final
end
for t=time-1:-1:1
for i=1:etat
arg=[];
decision=[];
for u=-1:1
if ((i-1+u)==0 | (i-1+u)==1 | (i-1+u)==2) then
decision=[decision u]
arg=[arg -prix(t)*u+V(i+u,t+1)]
end
end
[val1,val2]=gsort(arg,'c','d')
V(i,t)=val1(1);
control(i,t)=decision(val2(1));
end
end
endfunction