%Aca demostramos como funciona el proceso de Markov del borracho absorbente %simulando varias jugadas/borrachos regidas por la %probabilidad de transiciĆ³n %la matriz de transicion en forma canonica es M=[ 0 1/2 0 1/2 0 1/2 0 1/2 0 0 0 1/2 0 0 1/2 0 0 0 1 0 0 0 0 0 1]; %defino la suma acumulada de probabilidades para asignar numeros %aleatorios que cumplan con las probabilidades. Esto es necesario %solo en la simulacion, no en la solucion matematica del problema %de Markov MAc=cumsum(M,2); nst=length(M); % cuantos estados tengo %voy a hacer ns pasos en la cadena de Markov ns=20; %elijo una condicion inicial cualquiera para el sistema %nc veces voy a jugar (ie repito el experimento) nc=1e5; %dimensiono el vector pos=zeros(ns,nc); %elijo como condicion inicial algun estado transitorio. pos(1,:)=1; %siempre el primero %probas iniciales, for st=1:nst; p(st,1)=length(find(pos(1,:)==st))/nc; end %evolucion de los pasos de Markov, for i=2:ns; %voy a hacer la transicion con probabilidad dada por M %tiro nc numeros al azar, una para cada jugada/realizacion rands=rand(nc,1); % me fijo a que transicion corresponde, aca uso la proba % acumulada que defini arriba. for st=1:nst ip{st}=find(rands < MAc(pos(i-1,:),st)); rands(ip{st})=NaN;%'borro' pos(i,ip{st})= st; end %ahora calculo las probas, a cada paso, contando %en donde esta. for st=1:nst; p(st,i)=length(find(pos(i,:)==st))/nc; end end %termino mi ciclo de n pasos. %ahora empiezo a analizar un poco los resultados figure(1) % mirar en pantalla completa plot(0:ns-1,p','o-'); xlabel('paso n de la cadena'); ylabel('probabilidad'); legend('1','2','3','casa','antro') title(['Problemas de la caminata - ' num2str(nc) ' borrachos'])