Difficulté d'analyse

melwin8 Messages postés 1 Date d'inscription vendredi 10 février 2012 Statut Membre Dernière intervention 29 février 2012 - 29 févr. 2012 à 12:49
MichelFJM Messages postés 18 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 29 mai 2013 - 2 mars 2012 à 16:56
Bonjour,

Je suis un débutant en programmation et en reprise d'étude. J'ai beaucoup de mal à analyser et à convertir en algorithme.
Donc j'aurais besoin d'aide dans un premier temps pour m'orienter et ensuite éventuellement corriger ou améliorer le programme.
Ensuite, si quelqu'un connait une méthode pour apprendre justement à analyser ce que l'on souhaite programmer.

Je dois élaborer un petit programme en python qui simule une chaîne de Markov.
Le système est composé de 3 états. Il y a des probabilités identique de transitions entre chaque états.
Il y a aussi des probabilités de rester sur le même état.

Pour les variables:
- matrice: matrice 3*3 décrivant les probabilités de transition.
- tableau: distribution initiale, état de départ.
- Nombre : le nombre de pas à effectuer
Fonctions:
- Transition (etat,matrice) : prend l'état de la chaîne et retourne un état de la chaîne.
- randomWalk (matrice, tableau, nombre): calcule les fréquences de passage sur chacun des états pour obtenir les valeurs théoriques de la limite de la chaîne.

1 réponse

MichelFJM Messages postés 18 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 29 mai 2013
2 mars 2012 à 16:56
Bonjour

Il existe de nombreuses librairies toutes faites qui traitent de statistique. Il faut aussi voir du coté du logiciel "R" , qui peut aussi être appelé depuis le python.
Si tu veux commencer à partir de rien, je te propose d'executer :

import random
def OneStep(state,transitionMatrix) :
      col=transitionMatrix[state]
      rnd=random.uniform(0., 1.)
      for i,proba in enumerate(col) :
         if rnd<proba : return i
         rnd-=proba
def walk(state,c,n) :
     occured=[0,0,0]
     for i in n :
       state=OneStep(state,c)
       occured[state]+=1
     return occured
walk(0,c,1000)

Fred
0
Rejoignez-nous