// TP4 - Exercice 2
//
// Simulation de la chaîne de Markov de matrice de transition Q=
//  0.1  0.9
//  0.3  0.7


N = 50000; // Nombre de pas de la simulation

Q = [0.1,0.9 ; 0.3,0.7]; // La matrice de transition

X = grand(N,'markov',Q,1); // On simule N pas de la chaîne de Markov
                           // partant de 1.


// On calcule une approximation de Q par la formule
// Q(i,j) ~ (nombre de transition i->j) / (nombre de passage en i)
Q_approx = zeros(2,2);
for i=1:2
  for j=1:2
	Q_approx(i,j) = sum((X(1:$-1)==i) .* (X(2:$)==j)) / sum(X(1:$-1)==i);
  end
end


disp("L estimation de la matrice de transition obtenue par observation de la trajectoire est :")
disp(Q_approx)
disp("La valeur théorique est :")
disp(Q)


// Les probabilités invariante de la chaîne sont les probabilités
// se trouvant dans le noyau de Q'-I. Par le calcul, le noyau
// de Q'-I est l'ensemble des vecteurs de la forme (t,3t).
// La seule probabilité ayant cette forme est (1/4, 3/4).


// On calcule une appproximation de la mesure invariante par la formule
// µ(i) ~ (Nombre de passage en i)/N
m_inv = [0,0]
for i=1:2
  m_inv(i) = sum(X==i)/N
end


disp("L estimation de la mesure invariante obtenue par observation de la trajectoire est :")
disp(m_inv)
disp("La valeur théorique est :")
disp([0.25,0.75])
