Enoncé du problème n° 111
On note M0le mot ab et pour tout entier naturel n, le mot Mn+1 se construit à partir du mot Mn en remplaçant tous les a par ab et tous les b par bab.
Ainsi, M0=ab, M1=abbab et M2=abbabbababbab.
- Quelle est la longueur du mot M10 ?
- Combien de b contient le mot M10 ?
Correction du problème n° 111
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.
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 ).

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.

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.