Bonjour à tous!
Dans le cadre d'un cours de physique statistique, j'ai tenté de simuler le modèle de Kac (on prend un cercle, sur lequel se trouvent N sites contenant chacun une boule, blanche ou noire. Certains sites contiennent aussi un "marqueur". A chaque pas de temps, on déplace toutes les boules d'une position sur le cercle, et celles qui arrivent sur un marqueur voient leur couleur modifiée).
Le code que j'ai tapé est le suivant :
#!/usr/bin/python
# -*- coding: UTF-8 -*-
Aleatoire = False
Marqueurs = []
Etat_initial = []
Etat_actuel = []
Taille_de_la_chaine = 20
Nombre_de_tours = 5
seuil = 20
Somme = 0
Pourcentage_blanches = []
Pourcentage_differences = []
Differences = 0
temporaire = []
i = 0
j = 0
k = 1
l = 0
m = 0
n = 0
o = 0
#Création des marqueurs
while i <= Taille_de_la_chaine - 1 :
import random
r = random.randint(1,100)
i+=1 #incrémentation
if r < seuil :
Marqueurs.append(1)
else :
Marqueurs.append(0)
print("Emplacement des marqueurs")
print(Marqueurs)
if Aleatoire:
#Création de l'état initial aléatoire :
while j<= Taille_de_la_chaine - 1:
import random
r = random.randint(1,100)
j+=1 #incrémentation
if r < 50 :
Etat_initial.append(1)
Etat_actuel.append(1)
temporaire.append(1)
else :
Etat_initial.append(0)
Etat_actuel.append(0)
temp.append(0)
else :
while j <= Taille_de_la_chaine - 1:
j+=1
Etat_initial.append(1) #On crée une liste de boules blanches
Etat_actuel.append(1)
temporaire.append(1)
print("Etat de départ")
print(Etat_initial)
print(Etat_actuel)
print(temporaire)
#
#
#
#Fin de l'initialisation
#
#
#
print("Evolution des boules")
while k <= Nombre_de_tours : #Première indentation : nombre d'évolutions
print(Etat_actuel)
print("temp =")
print(temporaire)
#On construit la variable "pourcentage de billes blanches"
while m <= Taille_de_la_chaine - 1:
Somme = Somme + Etat_actuel[m]
m+=1
#On construit la variable "pourcentage de différences"
while n <= len(Etat_initial)-1:
Differences = Differences + (temporaire[n]+Etat_initial[n])%2
n+=1
Pourcentage_blanches.append(100*Somme/(Taille_de_la_chaine))
Pourcentage_differences.append(Differences*100/(Taille_de_la_chaine))
#On fait tourner les billes et éventuellement changer leur couleur
while l <= 2*len(Etat_actuel) :
if l<= len(Etat_actuel)-1 :
Etat_actuel[l] = (temporaire[l-1] + Marqueurs[l])%2
l+=1
elif l==len(Etat_actuel) :
del(temporaire[:])
temporaire.append(Etat_actuel[0])
l+=1
else :
temporaire.append(Etat_actuel[l-len(Etat_actuel)-1])
l+=1
k+=1
print(Pourcentage_blanches)
print(Pourcentage_differences)
L'objectif est de sortir les suites "pourcentages, le reste ne sert qu'à vérifier si le code marche. (un 1 représente une boule blanche, 0 une boule noire)
Si vous le faites tourner, vous vous apercevrez qu'il ne fonctionne pas : durant les opérations d'évolution, il ne se passe rien, "temporaire" garde toujours la même valeur, et même la première étape d'évolution ne fonctionne pas correctement.
Auriez vous une idée pour le dépanner?
Merci d'avance !
Partager