On note
an et
bn respectivement le nombre de
a et de
b dans le mot
Mn .
On a :
a0=1,
a1=2,a2=5
b0=1,b1=3,b2=8
Chaque
a dans
Mn va être remplacé par
ab dans
Mn+1 donc va "engendrer" un seul
a.
Chaque
b dans Mn va être remplacé par
bab dans
Mn+1 donc va "engendrer" un seul
a.
Donc
an+1=an+bn
Chaque
a dans
Mn va être remplacé par
ab dans
Mn+1 donc va "engendrer" un seul
b.
Chaque
b dans
Mn va être remplacé par
bab dans
Mn+1 donc va "engendrer" un
b de plus.
Donc
bn+1=an+2bn.
Si on note
Ln la longueur du mot
Mn , on a :
Ln=an+bn.
En effectuant les calculs de proche en proche, on peut facilement trouver
a10,b10 et
L10.
Par exemple :
a3=a2+b2=5+8=13
b3=a2+2b2=5+2×8=21
a4=a3+b3=13+21=34
b4=a3+2b3=13+2×21=55
etc.
Pour accélérer les calculs, on peut utiliser un tableur :

Les formules à taper sont :
Dans A2 : 0, Dans B2 : 1, Dans C2 : 1 Dans D2 : = B2 + C2
Dans A3 : = A2 + 1, Dans B3 : = B2 + C2, Dans C3 : = B2 + 2*C2, Dans D3 : = B3 + C3.
Ensuite, on sélectionne les quatre cellules de A3 à D3, et on fait un "recopier vers le bas", jusqu'à la ligne 12 pour obtenir
a10,b10 et
L10.
On lit :
La longueur du mot
M10 est
L10=28657 et il contient 17711 caractères
b (
b10=17711 ).
On peut aussi faire un programme Python
qui produit vraiment les différents mots
Mn et compte le nombre de
a et le nombre de
b, et en déduit le nombre total de caractères.

Voilà ce que donne l'exécution du programme pour n = 3 et pour n = 10. On voit que le mot M10 n'est pas écrit car il prend 359 lignes ‼!
Enfin, pour aller plus loin, il est possible d'obtenir la valeur de
an et de
bn donc de
Ln en fonction de
n directement. En effet, on peut se rendre compte facilement en regardant l'écran du tableur précédent que les
an sont les termes de rangs impairs de la célèbre suite de Fibonacci et les
bn en sont les termes de rangs pairs (à partir de 2).
Pour rappel, la suite de Fibonacci, est la suite
(Fn) définie, pour tout entier naturel
n par :
F0=0,F1=1 et
Fn+2=Fn+1+Fn .
On a :
F1=1=a0
F2=1=b0
F3=2=a1
F4=3=b1
F5=5=a2
F6=8=b2
etc.
Ainsi :
an=F2n+1 et
bn=F2n+2 pour tout entier
n≥0.
On peut trouver facilement sur Wikipédia par exemple, que :
Fn=1√5×(φn−φ′n) avec
φ=1+√52 et
φ′=1−√52 (
φ est le célèbre Nombre d'Or ).
Donc :
an=1√5(φ2n+1−φ′2n+1) et
bn=1√5(φ2n+1−φ′2n+1).
On peut alors créer un programme Python qui calcule directement
an,bn et
Ln :
Voilà ce que donne l'exécution du programme pour
n=10.
