IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python Marches aléatoires en milieux aléatoires


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 15
    Par défaut Python Marches aléatoires en milieux aléatoires
    Bonjour,
    Je suis en master de mathématiques et j'ai un projet sur python à rendre à propos des marches aléatoires en milieux aléatoires. Je suis complètement perdu et ne sais pas comment avancer... Pourriez vous m'aider stp ? Je peux vous envoyer par mail le sujet si nécessaire...

    La question est:

    " Créer un code Python permettant de simuler la marche aléatoire en milieu aléatoire et d'illustrer les lois fortes des grands nombres et la normalité asymptotique. On pourra éventuellement utiliser la fonction solve de Python pour trouver la valeur de k tel que E(p^k) = 1 où p= (1-A/A) et on se place dans le cas particulier où A prend deux valeurs b avec probabilité a et 1-b avec probabilité 1-a avec a et b > 1/2

    Merci par avance
    Images attachées Images attachées

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    "Creer un code Python permettant de simuler la marche aleatoire en milieu aleatoire" Point et je coupe la phrase là. Commencez déjà par ca, avant de penser comportement asymptotique... Et ensuite présentez ce que vous avez essayez, on ne pourra vous aider qu'à partir de là

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 15
    Par défaut Suite
    Bonjour, justement j'essaye déjà de comprendre le principe d'une marche aléatoire en milieu aléatoire et comment la modéliser sous python...
    Merci
    Arthur

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Salut,

    Citation Envoyé par arthurronda Voir le message
    justement j'essaye déjà de comprendre le principe d'une marche aléatoire en milieu aléatoire et comment la modéliser sous python...
    Avec un peu de recherche sur Internet vous trouveriez des tuto. qui vous expliquent "le principe d'une marche aléatoire en milieu aléatoire". C'est juste des maths qui n'ont rien à voir avec la programmation. Tant que vous n'aurez pas compris cette partie là, vous ne pourrez écrire aucun code. De plus en cherchant un peu sur Internet, vous devriez aussi trouver des codes Python (car c'est un exercice régulièrement proposé).

    Dans tous les cas, ici, on ne pourra vous aider qu'à partir du moment où vous aurez du code à montrer (c'est un forum de programmation Python).
    Pour le reste, vous avez aussi des forums de maths à solliciter si vous ne vous en sortez pas (cherchez un peu sur Internet, çà se trouve).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Voici une base pour vous faire comprendre. Analysez la bien, vous verrez il n'y a rien de très difficile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    import random
    import sys
    import time
     
    Nt = 20 ### Nombre d'itérations en temps
    L = 11 ### Taille du domaine spatial
     
    X = [0]*L  ### le domaine spatial
    pos = int(L/2)
    X[pos] = 1  ### Je met une particule au milieu
    print(X, end='')
     
    p = 0.5 ### probabilité de se déplacer à droite, sinon je vais à gauche
     
    for i in range(Nt):
        time.sleep(0.5)
        X[pos] = 0
        if random.random() < p :
            pos += 1
        else :
            pos-=1
        pos = max(0,pos)
        pos = min(pos,L-1) ### Pour eviter que la particule sorte de ton domaine
        X[pos] = 1
        sys.stdout.write('\r'+str(X))  ### Permet de réécrire sur la meme ligne (pour faire une animation), vous pouvez aussi faire print si vous voulez afficher à la suite
     
     
    print()

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 15
    Par défaut Marche aléatoire
    i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    mport random
    def random_walk(n,a,b):
    	x = 0
     
    	for i in range(n):
        	U = random.random()
        	V = random.random()
     
        	if U < a:
            	P = b
     
        	else:
            	P = 1-b
     
        	if V < P:
            	x = x+1
        	else:
            	x = x-1
     
    	return(x/n)
    random_walk(10**6,0.55,0.9)
    J'ai voulu faire ça pour simuler la marche aléatoire mais ça ne convient pas ...

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par arthurronda Voir le message
    i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    mport random
    def random_walk(n,a,b):
    	x = 0
     
    	for i in range(n):
        	U = random.random()
        	V = random.random()
     
        	if U < a:
            	P = b
     
        	else:
            	P = 1-b
     
        	if V < P:
            	x = x+1
        	else:
            	x = x-1
     
    	return(x/n)
    random_walk(10**6,0.55,0.9)
    J'ai voulu faire ça pour simuler la marche aléatoire mais ça ne convient pas ...

    Vous avez vraiment tester ce code tel quel ? Car déjà, à mon avis, il plante. Faut réouvrir un tuto au chapitre qui parle de l'indentation...

    Pour le problème E(p^k), c'est un autre problème et ce n'est jamais bon de mélanger les problèmes.
    Prenez une loi plus simple pour commencer déjà, et voyez déjà si cela fonctionne correctement.

    @daniel : pour le seed, on s'en fiche après tout si ca fait du pseudo aléatoire. Meme c'est mieux pour débugger, car ca assure la reproductibilité de la simulation. Et quand notre ami en sera là, c'est qu'il aura déjà résolu bien d'autres problèmes avant.

  8. #8
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    @lg_53 : il y a un biais statistique, il faut faire varier seed() !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    from termcolor import cprint
    from typing import List
    from random import seed, random
    import time
     
    Nt: int = 20  # Nombre d'itérations en temps
    L: int = 11  # Taille du domaine spatial
     
    X: List[int] = [0]*L  # le domaine spatial
    pos: int = int(L/2)
    X[pos] = 1  # Je met une particule au milieu
    cprint(X, 'green')
     
    p: float = 0.5  # probabilité de se déplacer à droite, sinon je vais à gauche
     
    for i in range(Nt):
        time.sleep(0.5)
        X[pos] = 0
        seed(Nt * i)
        if random() < p:
            pos += 1
        else:
            pos -= 1
        pos = max(0, pos)
        pos = min(pos, L-1)  # Pour eviter que la particule sorte de ton domaine
        X[pos] = 1
        # Permet de réécrire sur la meme ligne (pour faire une animation), vous pouvez aussi faire print si vous voulez afficher à la suite
        # sys.stdout.write('\r'+str(X))
        cprint(X, 'green')

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 15
    Par défaut
    Bonsoir,

    Merci pour votre réponse. Je cherche également comment réécrire E(p^k) comme une fonction * k car python ne sait pas résoudre E(p^k) = 1 tel qu'elle (multiples générateurs).
    Merci par avance
    Cordialement
    Arthur Ronda

Discussions similaires

  1. marche aléatoire simple
    Par pitchu dans le forum R
    Réponses: 0
    Dernier message: 25/09/2014, 22h03
  2. Réponses: 5
    Dernier message: 07/12/2012, 18h57
  3. \oldstylenums{} marche aléatoirement à la compilation
    Par Tom Cantor dans le forum Mathématiques - Sciences
    Réponses: 7
    Dernier message: 16/01/2011, 17h56
  4. Programme multi processus qui marche aléatoirement
    Par Anonymouse dans le forum Linux
    Réponses: 1
    Dernier message: 13/10/2007, 20h56
  5. Réponses: 2
    Dernier message: 13/12/2006, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo