• Aucun résultat trouvé

Q6 p = R + (L - 2*R)*np.random.rand(1

N/A
N/A
Protected

Academic year: 2022

Partager "Q6 p = R + (L - 2*R)*np.random.rand(1"

Copied!
3
0
0

Texte intégral

(1)

import math

import numpy as np import random

import matplotlib.pyplot as plt

# Q1 Construit une particule aléatoire entre 0 et L

# Q2 Une particule.

# Q3 Vérifie que la particule ne déborde pas de [0,L].

# Q4 Vérifie que la nouvelle ne chevauche pas les précédentes.

# Q5 Vérifie qu'il y a la place pour cette particule.

# Q6 p = R + (L - 2*R)*np.random.rand(1)

# Q7 Une boucle infinie

# Q8 O(N**2)

# Q9

def placement1D(N:int, R:float, L:float) ->

[np.ndarray]:

def possible(c:np.ndarray) -> bool:

if c[0] < R or c[0] > L - R:

return False for p in res:

if abs(c[0] - p[0]) < 2*R:

return False return True

res = []

while len(res) < N:

p = L * np.random.rand(1) if possible(p):

res.append(p) else:

res = []

return res

1

(2)

# Q10 sans tri préalable

def placement1Drapide(N, R, L):

libre = L - 2*N*R

liste_p = [libre*random.random() for k in range(N)]

for i in range(N):

for j in range(N):

if i != j and liste_p[j] >=

liste_p[i]:

liste_p[j] += 2*R liste_p[i] += R

return liste_p

# Q10 avec tri préalable

def placement1DrapideBis(N, R, L):

libre = L - 2*N*R

liste_p = [libre*random.random() for k in range(N)]

liste_p.sort()

for k in range(N):

liste_p[k] += (2*k+1)*R return liste_p

# Q11

# sans tri préalable : quadratique

# avec tri préalable : O(n.ln(n)) def affiche(N, R, L):

liste = placement1DrapideBis(N, R, L) plt.plot([0,L],[0,0], color = 'k') plt.axis('equal')

for p in liste:

c1, c2 = p - 1 , p + 1

plt.plot([c1, c2], [0,0], color = 'r', linewidth = 5)

# Q12

2

(3)

def histogramme(N, R, L):

particules = []

for k in range(50000):

particules += placement1DrapideBis(N, R, L)

plt.hist(particules, range = (R, L - R), bins = 20)

histogramme(2, 1, 10)

# les extrémités sont surreprésentées par rapport

# au centre dans un rapport de 3/2

# Q13

def placement(D:int, N:int, R:float, L:float) -

> [np.ndarray]:

quatreR2 = 4*R**2

def possible(c:np.ndarray) -> bool:

for p in res:

if sum((c[i] - p[i])**2 for i in range(D)) < quatreR2:

return False return True

res = []

while len(res) < N:

p = R + (L - 2*R) * np.random.rand(D) if possible(p):

res.append(p) else:

res = []

return res

# Q14 le vecteur vitesse est constant

3

Références

Documents relatifs

[r]

• Dans la mesure où la tension est la même aux bornes de toutes les branches de l'assemblage, l'addition des courants ne dépend pas de l'ordre des compo- sants du modèle. ◊

◊ remarque : l'inductance est plus grande avec le noyau de fer feuilleté (aimantation induite) ; elle est un peu plus faible avec un noyau de métal non feuilleté (champ magnétique

• Pour le calcul des incertitudes sur cette relation théorique, même si on a utilisé des résistances théorique- ment égales, il faut tenir compte du fait qu'on a utilisé

◊ remarque : lʼaction secondaire dʼun champ extérieur non uniforme sur un dipôle est une force qui tend à entraîner le dipôle vers les champs forts sʼil est orienté

Déterminer une primitive de chacune des fonctions suivantes sur

We shall employ Theorem I and Proposition I for obtaining an existence theo- rem for the parabolic equation (3) with initial-boundary conditions (4).. Therefore, to

Pour toutes les planètes en orbite autour du soleil, le rapport entre le arré de leur.. période de révolution et le ube du demi-gr and axe de leur orbite a la