Back
Close

Recueil d'exercices pour apprendre Python au lycée

M_C
1524K views

La suite logistique

Difficulté : de Facile à Difficile
Prérequis : Les listes

La suite est très intéressante à étudier car c'est un des exemples les plus simples qui permettent d'observer ce que l'on appelle le chaos. C'est l'équivalent en physique du double pendule : un phénomène simple et pourtant imprévisible. On pourra lire Wikipédia pour plus d'information sur la théorie du Chaos.

Le but de cette page est donc de présenter la suite logistique et toucher du doigt son coté chaotique.

Définition de la suite

Difficulté : Facile

On appelle suite logistique la suite définie pour un réel $\mu>0$ par $u_{n+1}=\mu u_n(1-u_n)$.

Créer une fonction u(mu,u0,n) qui prend en entrée le paramètre $\mu$ (mu), le premier terme $u_0$ et un entier n et renvoie en sortie la liste des termes de la suite de $u_0$ jusqu'à $u_n$.

Définition des suites

Représentation graphique I

Difficulté : Facile

Une première façon de représenter notre suite est de manière classique c'est à dire n selon les abscisses et $u_n$ selon les ordonnées.

Créer une fonction dessiner(mu,u0,n) qui affiche avec matplotlib les points associés à la suite allant de $u_0$ jusqu'à $u_n$. On pourra utiliser la fonction plt.plot(X,Y,".-",linewidth=1) pour afficher les points et les relier. Le résultat devra ressembler à image

Remarques : Il n'y a pas de vérificateur car c'est une fonction graphique.
Ne pas oublier de copier coller votre fonction u(mu,u0,n).
Pour la dernière courbe affichée, on peut voir que plus la valeur de $\mu$ augmente, plus la suite devient chaotique dans le sens où il devient difficile de prédire la valeur de $u_n$ alors que pour $\mu=1,6$, c'est très facile vu qu'elle se "stabilise" autour d'une seule valeur.

Représentation graphique 1

Représentation graphique II

Difficulté : Difficile

Nous allons à présent représenter notre suite par sa représentation dite "en escalier". Cela ressemble à ceci pour $mu=2.8$ et $u_0=0.9$ : figure2

On y représente la fonction $f(x) = \mu x(1-x)$ ainsi que la droite $y=x$. Pour dessiner cette représentation, voici la démarche :
On part de $x=u_0$, pour obtenir graphiquement la valeur de $u_1$, il suffit de regarder sur l'axe des ordonnées la valeur de $f(u_0)$. Le problème est que pouvoir refaire la même opération, il faudrait pouvoir situer $u_1$ sur l'axe des abscisses. Un première façon serait de prendre un compas et reporter la longueur mais on peut faire plus simple avec simplement une règle : On reporte horizontalement la valeur de $u_1$ sur la droite $y=x$ (puisque les points de cette droite on même abscisse et ordonnée) puis on redescend vertivalement sur l'axe des abscisses pour avoir notre valeur $u_1$ sur l'axe des abscisses.
On recommence ainsi de suite pour calculer $u_2$, $u_3$...

Dans la pratique, comme sur la figure ci-dessus, on enchaine directement les traits sans aller aux axes. Cela donne à chaque fois les deux étapes :

  • On joint verticalement le point $(u_i,u_i)$ au point $(u_i,u_{i+1})$.
  • On joint horizontalement le point $(u_i,u_{i+1})$ au point $(u_{i+1},u_{i+1})$.

A vous maintenant de compléter la fonction dessiner(mu,u0,n) pour qu'elle affiche la représentation en escalier de la suite logistique c'est à dire dessiner la foncion $f$, la droite $y=x$ et "les escaliers" formés par les termes de la suite selon la description précédente.

Remarques : On peut observer que pour les deux premiers graphiques, la suite converge vers un point, pour les deux suivantes, elle devient plus complexe et oscille entre plusieurs points. Enfin, pour la dernière, on peut voir qu'elle ne se rapproche de plus aucun point en particulier mais au contraire, s'étale sur tout un intervalle de valeurs.

Représentation graphique 2

Sensibilité aux conditions initiales

Difficulté : Moyenne

Maintenant, nous allons nous intéresser au caractère chaotique de cette suite. On a pu voir grâce aux représentations précédentes que la suite devient de moins en moins stable au fur et à mesure que $mu$ augmente. Pour de faibles valeurs, elle converge vers une limite, puis lorsque $\mu$ augmente entre 3 et 3,5, elle commence à osciller entre plusieurs points pour finalement se répartir sur tout un intervalle lorsque $mu$ devient trop grand. Ce n'est pourtant pas en ce sens que l'on emploie le terme chaotique pour cette suite (même si cela y contribue).

En effet, un suite est dite chaotique lorsqu'elle est sensible aux conditions initiales. Concrètement, cela signifie que si on part de deux conditions initiale très proches $u_0$ et $u_0+\epsilon$, on ne sera pas forcément proche (voir même très éloignées) pour des valeurs suivantes de $(u_n)$.

Prenons un exemple non chaotique : je considère la suite dont la relation de récurrence est $u_{n+1}=0.9 u_n-4$.
Si je commence avec $u_0=3$ alors $u_{50}=-39.77838766608525$.
Si je commence avec $u_0=2.9999999999$ alors $u_{50}=-39.778387666085756$.
La différence n'est pas flagrante...

Pour notre suite : Pour $\mu=4$ Si je commence avec $u_0=0.9$ alors $u_{50}=0.5600367632223772$.
Si je commence avec $u_0=0.89999999999$ alors $u_{50}=0.2903856953167539$.
On est parti de nombres extrêmement proches et pourtant les résultats sont très éloignés. C'est pour cela qu'on dit que cette suite est chaotique.
Cela pose un problème concret pour le calcul : Si vous faites ces calculs avec votre calculatrice, vous ne trouverez pas les mêmes résultats. En effet, la calculatrice n'ayant pas les mêmes chiffres significatifs que python, vous aurez des résultats fondamentalement différents.

Modifier votre fonction dessiner(mu,u0,n)précédente (la seconde si possible mais ça peut être la première si vous n'avez pas réussi à écrire la seconde) pour qu'elle affiche la suite commençant par $u_0$ et d'une autre couleur la suite commençant par $u_0 + 10^{-13}$.

Remarque : Pour l'affichage, on a pris différentes valeurs de $\mu$ pour voir s'accentuer au fur et à mesure de son augmentation le côté chaotique de la suite. En effet, pour de petites valeurs, on ne distingue pas les deux suites alors que lorsque $\mu$ se rapproche de 4, on les distingue bien.
Pour encore mieux voir le phénomène, vous pouvez modifier encore votre fonction pour n'afficher que les 30 dernieres valeurs de la suite pour bien voir que l'évolution est très différentes.

Sensibilité aux conditions initiales

Diagramme de bifurcation

Difficulté : Difficile

On a vu sur les représentations précédentes que plus $mu$ augmente, plus les valeurs que prend la suite s'étalent sur l'intervalle [0;1] : Pour $mu=1,6$ ou $mu=2.8$, elle converge, pour $mu=3.2$ elle oscille autour de deux valeurs, pour $mu=3.5$ elle oscille autour de 4 valeurs et pour $mu=4$, elle semble osciller entre toutes les valeurs.

Pour avoir une idée de l'évolution lorsque $mu$ augmente, on pourrait tracer toutes les représentations graphiques et en faire un film mais plus simplement, on va tracer ce qu'on appelle le diagramme de bifurcation selon le protocole suivant :

En abscisse, on fait varier $mu$ entre 2 et 4 avec un pas de 0.001, et pour chaque $\mu$, on affiche les 100 termes $u_201, u_202,..., u_300$ arrondis à 0.001 près.

Pour $\mu$ entre 2 et 3.56, on obtient le début de diagramme suivant : bifurcation

Compléter le programme suivant pour qu'il affiche le diagramme de bifurcation entre 2 et 4.

Sensibilité aux conditions initiales

Prolongements possibles

On pourra observer les comportements d'autres suites comme par exemple $u_{n+1}=\mu sin(u_n)$ ou $u_{n+1}=\mu- u_n^2$.

Un prolongement possible est aussi l'étude de la fonction logistique $f(x)=\mu x(1-x)$ mais sur l'ensemble des nombres complexes. On obtient alors l'ensemble de Mandelbrot.

Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io