Introduction
La suite logistique est un système dynamique discret permettant de modéliser l’évolution d’une population. Plus précisément, on considère la suite
Le terme
Simulation
L’animation GeoGebra suivante représente les termes de cette suite.
Il est en particulier intéressant de prendre l’indice
Comportement asymptotique
Si
-
Lorsque
, on voit clairement que converge vers . -
Lorsque
, la suite converge vers un point fixe non nul de (elle est mononotone à partir d’un certain rang si tandis que les suites et sont adjacentes à partir d’un certain rang lorsque ). -
Lorsque
, les choses se compliquent. La suite admet d’abord un cycle-limite1 de longueur , puis de longueur , , … Tous les cycles de longueur une puissance de apparaissent jusqu’à une certaine valeur de à partir de laquelle commence le chaos : l’évolution asymptotique de la suite est “imprévisible”2 et dépend grandement de la condition initiale. Néanmoins, il existe certains intervalles isolés de valeurs de pour lesquelles la suite converge à nouveau vers un cycle-limite. On peut montrer que l’apparition des longueurs des cycles-limites suit un certain ordre appelé ordre de Charkovski.
Diagramme de Feigenbaum
Pour mieux comprendre ce qui précède, on trace les valeurs d’adhérences3 de la suite
Les résultats sont cohérents avec ce qui a été décrit précédemment. On observe notamment le doublement de la longeur du cycle limite à partir de
On peut zoomer pour voir plus précisément ce qui se passe pour
On peut aussi remarquer en zoomant qu’on obtient également des cycles de longeur qui ne sont pas des puissances de
Le principe de doublement de la longueur du cycle reste encore valable. Dans la figure suivante, on voit apparaître successivement des cycles de longeur4
Code Python
Voilà la fonction Python utilisée pour le tracé du diagramme de Feigenbaum.
from numpy import linspace
from matplotlib.pyplot import scatter, show, xlim, ylim
def f(r, x):
return r * x * (1 - x)
def feigenbaum(r1, r2, nb, N):
r_range = linspace(r1, r2, nb)
x = []
y = []
for r in r_range:
u = .1
for _ in range(N):
u = f(r, u)
for _ in range(N):
u = f(r, u)
x.append(r)
y.append(u)
scatter(x, y, marker='.', s=1)
xlim(r1, r2)
ylim(0, 1)
show()
-
On dira qu’une suite
admet un cycle-limite de longueur si les suites extraites pour convergent. ↩ -
Bien entendu, les valeurs des termes de la suite sont encore calculables par récurrence donc l’évolution de la suite est encore “prévisible”. Mais il n’existe plus de comportement asymptotique aussi régulier qu’un cycle-limite. ↩
-
On appelle valeur d’adhérence d’une suite toute limite éventuelle d’une de ses suites extraites. ↩
-
Je concède qu’il faille faire preuve d’imagination… ↩