Outils pour utilisateurs

Outils du site


nsi:tds:suite_feu_foret

Suite du feu de forêt

Il s'agit d'une suite numérique dont la représentation graphique évoque un panache de fumée au-dessus d'un incendie, d'où le nom.

Définition mathématique

$\left(u_n\right)_{n\geq 0}$ dont les valeurs sont toutes dans dans $\mathbb{N}$.

Pour chaque valeur de $u_n$ on choisit la valeur la plus petite pour que, pour $1 \geq k \geq \frac{n}{2}$, $u_n$ ne soit jamais en progression arithmétique avec $u_{n-2k}$ et $u_{n-k}$.

Calcul des premiers termes

Bon… dit comme ça c'est très abstrait alors construisons les premiers termes pour comprendre.

Pour $u_0$ et $u_1$ on peut choisir $0$ sans contrainte. C'est à partir de $u_2$ que la contrainte commence à se poser.

Calcul de $u_2$

La contrainte exclut des valeurs. La contrainte s'exprime pour tous les $1 \geq k \geq \frac{n}{2}$. Donc ici, on seulement $k=1$.

Pour chaque valeur de $k$, il faut envisager $u_{n-2k}$ et $u_{n-k}$ et exclure le terme suivant…

  • avec $k = 1$ on regarde $u_{2-2\times 1} = 0$ et $u_{2- 1} = 0$. 0, 0, … $u_2$ ne pourra pas être égal à 0.

En effet, si $u_2$ était égal à 0, cela ferait 0, 0, 0 ce qui serait une progression arithmétique (+ 0 à chaque fois)

C'était la seule contrainte. On doit choisir pour $u_2$ le plus petit entier acceptable. Donc $u_2 = 1$.

Calcul de $u_3$

Là encore, on a seulement $k = 1$.

  • $k = 1$ : $u_{3-2\times 1} = 0$ et $u_{3- 1} = 1$. 0, 1, … $u_3$ ne pourra pas être égal à 2.

En effet, si $u_3$ était égal à 2, cela ferait 0, 1, 2 ce qui serait une progression arithmétique (+ 1 à chaque fois)

On doit choisir $u_3 = 0$

Calcul de $u_4$

  • $k = 1$ : $u_{4-2\times 1} = 1$ et $u_{4- 1} = 0$. 1, 0, … $u_4$ ne pourra pas être égal à -1.
  • $k = 2$ : $u_{4-2\times 2} = 0$ et $u_{4- 2} = 1$. 0, 1, … $u_4$ ne pourra pas être égal à 2.

On doit choisir $u_4 = 0$

Calcul de $u_5$

  • $k = 1$ : $u_{5-2\times 1} = 0$ et $u_{5- 1} = 0$. $\Rightarrow$ 0 exclu.
  • $k = 2$ : $u_{5-2\times 2} = 0$ et $u_{5- 2} = 0$. $\Rightarrow$ 0 exclu.

$u_5 = 1$

Calcul de $u_6$

  • $k = 1$ : $u_{6-2\times 1} = 0$ et $u_{6- 1} = 1$. $\Rightarrow$ 2 exclu.
  • $k = 2$ : $u_{6-2\times 2} = 1$ et $u_{6- 2} = 0$. $\Rightarrow$ -1 exclu.
  • $k = 3$ : $u_{6-2\times 3} = 0$ et $u_{6- 3} = 0$. $\Rightarrow$ 0 exclu.

$u_6 = 1$

Calcul de $u_7$

  • $k = 1$ : $u_{7-2\times 1} = 1$ et $u_{7- 1} = 1$. $\Rightarrow$ 1 exclu.
  • $k = 2$ : $u_{7-2\times 2} = 0$ et $u_{7- 2} = 1$. $\Rightarrow$ 2 exclu.
  • $k = 3$ : $u_{7-2\times 3} = 0$ et $u_{7- 3} = 0$. $\Rightarrow$ 0 exclu.

$u_7 = 3$

etc.

Observations

Comme vous le constatez, on commence par faire une liste de valeurs exclues puis on prend le petit entier positif qui n'est pas exclu.

On voit que pour $u_n$ on a $n \div 2$ contraintes, ce qui va exclure au pire $n \div 2$ entiers différents. Donc il suffit de chercher de $0$ à $n \div 2$ compris pour trouver le plus entier qui n'est pas exclu.

Dit autrement, on est certain que $u_n \leq n \div 2$.

Implémentation

Vous allez pouvoir procéder ainsi :

  • On se fixe un nombre N de termes à calculer. Par exemple N = 100 dans un premier temps et quand on est sûr que cela fonctionne bien, on peut passer à N = 10000 (temps de calcul beaucoup plus long !)
  • La suite sera stockée dans une liste u. On pourra initialiser u = [0, 0] pour les deux premiers termes.
  • Pour chaque nouveau terme, on commence par produire la liste des exclus. Puis on cherche le plus petit entier qui n'est pas exclu. Enfin on ajoute ce résultat à la suite de u

Quand on a u, il faut l'afficher :

import matplotlib.pyplot as plt

plt.plot(u, 'o') # 'o' pour n'afficher que des points non reliés
plt.show()
nsi/tds/suite_feu_foret.txt · Dernière modification : de goupillwiki