%%% Simulation d'une chaîne de Markov

clf; clear; 
% Une matrice de transition 3x3 récurrente irréductible apériodique 
P=[ 1/3,1/3,1/3 ; 1/4,2/4,1/4 ; 2/5,2/5,1/5 ]; 

% Tracé d'un histogramme pour un temps grand fixé (loi de X_n).
% Cela revient juste à tester rdist puisque la loi cherchée est P^n(:,X_0).
n=500;     % temps à considérer
m=10000;   % Nombre de réalisations.
xzero=1;   % Point initial.
Q=P^n;
for i=1:m,
  realis(i)=rdist([1,2,3],Q(:,xzero));
end
figure(1)
hist(realis,3)

% Mesure invariante mu et tracé de l'erreur relative de son approximation.
% mu est bien approximée par P^n(:,X_0) quand n est grand (X_0 quelconque).
R=P^100;           
Q=R;
for i=100:5000:10000, 
 Q=Q*R;
 mu=Q(:,1);
 erreur(i)=max((mu'*P-mu')'./mu);
end
figure(2)
plot(erreur,'b-') % Tracé de l'erreur relative par pas de 100.

% Tracé d'une trajectoire particulière (une seule réal. de X(1),...,X(m)).
m=50;       % temps maximum à considérer 
X(1)=1;     % Point initial.
for i=1:m-1,
  X(i+1)=rdist([1,2,3],P(:,X(i)));
end
figure(3)
plot(X,'b*')
