Table des matières
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
Nde termes à calculer. Par exempleN = 100dans 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 initialiseru = [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()
