Suite logistiqueđź”—
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #!/usr/bin/env python3
# Time-stamp: <2018-07-19 10:42 ycopin@lyonovae03.in2p3.fr>
import numpy as np
import random
import matplotlib.pyplot as plt
def iteration(r, niter=100):
x = random.uniform(0, 1)
i = 0
while i < niter and x < 1:
x = r * x * (1 - x)
i += 1
return x if x < 1 else -1
def generate_diagram(r, ntrials=50):
"""
Cette fonction retourne (jusqu'Ă ) *ntrials* valeurs d'Ă©quilibre
pour les *r* d'entrée. Elle renvoie un tuple:
+ le premier élément est la liste des valeurs prises par le paramètre *r*
+ le second est la liste des points d'Ă©quilibre correspondants
"""
r_v = []
x_v = []
for rr in r:
j = 0
while j < ntrials:
xx = iteration(rr)
if xx > 0: # Convergence: il s'agit d'une valeur d'Ă©quilibre
r_v.append(rr)
x_v.append(xx)
j += 1 # Nouvel essai
return r_v, x_v
r = np.linspace(0, 4, 1000)
x, y = generate_diagram(r)
plt.plot(x, y, 'r,')
plt.xlabel('r')
plt.ylabel('x')
plt.show()
|
Source: logistique.py