programme TIPE

Messages : 0

Inscription : 25 avr. 2019 11:47

Profil de l'utilisateur : Élève de lycée

programme TIPE

Message par tibo69 » 25 avr. 2019 12:01

Bonjour
je suis en 2ème année de prépa. Nous travaillons sur les mouvements de foule pour notre tipe, nous avons récupéré un programme python mais nous ne comprenons pas à partir du " for it in np.arange(Nt): " Pourriez vous nous éclairer sur les différentes étapes qui composent le programme à partir de la boucle en question ?
Merci par avance.

Code : Tout sélectionner

import numpy as np
import matplotlib.pyplot as plt

plt.ion()

def vOd(u):
    dist = u+L*(u<0)
#    return U*(1-np.exp(-(dist-umin)/uc))*(dist>umin)
    return U*((1-np.exp(-(dist-umin)/uc))**2)*(dist>umin)

def per(x):
    return x-L*(x>L)
#

L = 40 # Longueur des abscisses
N = 20 # Nombre de points affichés
dt = 0.5; # Vitesse de simulation
Nt = 1000 #Temps total de la simu (*dt pour le temps réel)
aux =np.zeros(Nt)
U = 1 # Vitesse souhaitée des points 
umin= 0.6
uc  = 3
#tau0 = 3.2
tau0 = 6 #temps de réaction
tau = tau0
ue = L/N #Dij : distance entre chaque points
vOdpue = 2*U*np.exp(-(ue-umin)/uc)*(1-np.exp(-(ue-umin)/uc))/uc 
kstab = tau*vOdpue
print('test',kstab)


xx = np.linspace(0.0,L-L/N,N) #talbeau de N zéros
xx+= 0.2*ue*(np.random.uniform(size=N)) # position de départ de chaque points

zz = np.zeros(np.shape(xx))
ww = np.zeros(np.shape(xx))


for it in np.arange(Nt): #pour it de 0 à Nt par intervalle de 1

    Lxx = np.roll(xx,-1) #les points arrivés en fin de graphe reviennent au départ
    uu = Lxx-xx
    uu+= L*(uu<0)
    aux[it] = uu[0]
    ww = (ww+dt/tau*uu) / (1+dt/tau)
    vv  = vOd(ww)
    xx += dt*vv
    xx = per(xx)
    plt.clf()
    plt.plot(xx,zz,'.'); 
    #plt.plot(xx[N-1],zz[N-1],'o')
    plt.axis([0.,L,-5,5]) #Repère du graphe : x->0;L ; y-> -5;5
    plt.axes().set_aspect('equal')
    texte = 't ='+ str(int(0.1*it*dt)) +'s'+  ' k = ' + str(kstab) #on affiche la variation de temps et la valeur de kstab 
    plt.xlabel(texte)
    plt.draw()
    plt.show()
    plt.pause(0.01) # pause (in seconds) to see the plot
    plt.clf() # clear figure before next plot
    print ('t ='+ str(int(0.1*it*dt)) +'s', '   Distance minimale :', np.min(uu))






Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: programme TIPE

Message par fakbill » 25 avr. 2019 15:20

Non :).
On ne peut pas faire le travail de comprehension pour vous. On peut seulement aider.
Vous avez trouvez ce code sans aucune doc?? il sort d'où??
C'est pénible de comprendre ce que fait un code sans doc... Le mieux serait de trouver un de comprendre un **algo** PUIS de le coder en python.
bref, dites nous en plus et on aidera.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Répondre