simulaciones matlab_unexpo_blog_yoratzi_jesus
DESCRIPTION
Codigo en matlab para simular cadenas de markov.TRANSCRIPT
Simulaciones MatLab
Los ejemplos siguientes trataran sobre cadenas de Markov de tipo Ergódica, estos tipos de cadenas converge a un estado de equilibrio y presentan propiedades para el rápido calculo de este estado de equilibrio.
1) Cadena de Markov ergódica no regular la cual no converge
Código en Matlab:
P = [ 0 1 ;1 0]
t_all = [];
i_all = [];
figure(1)
clf
for i = 1:100
t = P^i
t_all = [t_all t(:)];
i_all = [i_all ones(4,1)*i];
subplot(211)
char(t,i)
subplot(212)
plot(i_all',t_all','.-')
xlabel('discrete time steps')
ylabel('probability')
title('evolution of transition probs. for each element')
pause
end
2) Cadena de Markov ergódica, con cero elementos en su matriz de transición inicial, pero no siempre por lo cual sigue siendo regular
P = [ 1/2 1/2 ;1 0]
t_all = [];i_all = [];figure(1)clffor i = 1:100 t = P^i t_all = [t_all t(:)]; i_all = [i_all ones(4,1)*i]; subplot(211) char(t,i) subplot(212) plot(i_all',t_all','.-') xlabel('discrete time steps') ylabel('probability') title('evolution of transition probs. for each element') pauseend
3) Entrenamiento de Ninjas al estilo Markov
Entrenamiento: Nivel 1: Aprende a leer a tu oponente
Los ninjas del clan Rhozan acaban de enterarse de la súbita reaparición de un Viejo enemigo del clan, los ninjas del clan Zentsu
Los ninjas del clan Rhozan deben entrenar para pelear!
Una habilidad critica es conocer a tu oponente, conocer sus tendencias y aprender sus patrones! El viejo maestro ninja, es el ultimo del clan Rhozan que ha luchado con los ninjas del clan Zentsu y el describe a sus discípulos los diferentes estilos de combate cuerpo a cuerpo del clan enemigo en términos de un proceso de cadenas de Markov
En la primera lección, el maestro describe un estilo de lucha de 3 posiciones, compuesto de
1) Golpe (línea roja)2) Patada (Línea amarilla) 3) Golpe del halcón volador( Línea azul)
A continuación apreciaremos como los ninjas del clan Zentsu pelearan, dadas las probabilidades de como mezclan sus diferentes ataques: golpe, patada y ataque especial:
% Ninja A, Estilo Honda (Especializado en Golpear)
a= .9b = .3c = .2P = [ a (1-a)/2 (1-a)/2; (1-b)/2 b (1-b)/2; (1-c)/2 (1-c)/2 c ;]
% Ninja B, Estilo Chun Li (Especializado en Patadas)
a= .1b = .9c = .3P = [ a (1-a)/2 (1-a)/2; (1-b)/2 b (1-b)/2; (1-c)/2 (1-c)/2 c ;]
%Ninja C, Estilo Capitán Falcon (Especializado en Ataque especial)
a= .1b = .2c = .9P = [ a (1-a)/2 (1-a)/2; (1-b)/2 b (1-b)/2; (1-c)/2 (1-c)/2 c ;]
% Maestro clan Zentsu: Estilo Supremo (Equilibrio con cada ataque)
a = .33333b = .333333c = .333333P = [ a (1-a)/2 (1-a)/2; (1-b)/2 b (1-b)/2; (1-c)/2 (1-c)/2 c ;]
Código en Matlab para cada ninja
Usaremos la misma base de código pero ajustando los valores para cada uno de los 4 escenarios:
t_all = [];
i_all = [];
figure(1)
clf
for i = 1:100
t = P^i
t_all = [t_all t(:)];
i_all = [i_all ones(size(t_all,1),1)*i];
subplot(211)
char(t(:),i)
subplot(212)
plot(i_all',t_all','.-')
xlabel('pasos de tiempo discreto)
ylabel('probabilidad')
title('evolución de las probabilidades de transición para cada elemento')
axis([0 max(max(i_all)) min(min(t_all))-.5 max(max(t_all))+.5])
pauseend