User Tools

Site Tools


Sidebar

* [[http://www.labri.fr/perso/melancon|Me as a researcher]] --- * [[start|Home]] * [[proj_techno:start|Projets technologiques - Licence 3 Informatique]] 4TIN601U * [[proj_CMI_L2:start|Projet de programmation - CMI ISI]] 4TCM401U * [[MIAGE:processus_stoch_simulation|Processus stochastiques et simulation - MIAGE et e-MIAGE]] 4TYE814U / 4TYE808U ---- * **Fête de la Science** - [[mathc2+:analyse|"Analyse de réseau appliquée aux réseau sociaux"]] ---- * Master U de Bx * [[http://www.labri.fr/perso/melancon/Visual_Analytics_Course/|Visual Analytics]] * [[e-miage_ubx_i|e-MIAGE U de Bx]] * [[estia:estia|ESTIA DataViz / Data Science]] * [[Enseignements passés]] ---- * [[http://www.labri.fr/perso/melancon|Research]] ---- * [[admin:Site admin]]

A PCRE internal error occured. This might be caused by a faulty plugin
miage_solution:miage_solution_impl_deux_etats

====== Master 4TYE814U/4TYE808U MIAGE & e-MIAGE -- Processus stochastiques et simulation ====== ===== Séance de travaux dirigé ===== ==== Exercice - Chaînes à deux états ==== === Implémentation matricielle === La matrice de la chaîne est: $$M = \left[ \begin{matrix} 1-p & \quad & p\\ q & \quad & 1-q\\ \end{matrix} \right] $$ où $p$ et $q$ sont donnés. <code> import numpy import random p = 0.3 q = 0.4 M = numpy.matrix([[1-p, p], [q, 1-q]]) # on choisit l'etat de depart au hasard, a pile ou face distribution_init = numpy.matrix([0.3, 0.7]) P = numpy.identity(2) nouv_dist = numpy.dot(distribution_init, P) N = 10 for i in range(N): print numpy.dot(distribution_init, P) P = numpy.dot(P, M) print numpy.dot(distribution_init, P) </code> On affiche la suite de distributions: $\pi$, $\pi \cot M$, $\pi \cdot M^2$, \ldots, $\pi \cdot M^N$ qui doit se "stabiliser" vers la distribution théorique $[\frac{q}{p+q}, \frac{p}{p+q}]$. === Implémentation "Marche aléatoire" === On simule les transitions sur la chaîne et on comptabilise les passages sur les états. <code> def Bernouilli(r): return 1 if random.random() < r else 0 frequence_etats = [0.0, 0.0] dist_init = [0.5, 0.5] etat = Bernouilli(dist_init[0]) def transition(etat): if etat == 0: return Bernouilli(p) else: return Bernouilli(1-q) nb_pas = 100000 for i in range(nb_pas): frequence_etats[etat] += 1 if i % 10000 == 0: print map(lambda x: x/(i+1), frequence_etats) etat = transition(etat) </code> --- [[miage:td_analytique|Retourner au TD]]

miage_solution/miage_solution_impl_deux_etats.txt · Last modified: 2017/03/28 12:22 by melancon