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