Liens avec le nombre d'or
Trop long ; pas lu
On fait des expériences mathématiques pour montrer le lien entre le nombre d'or et les représentations de Zeckendorf, en particulier pour les opérations de décalage : incrémentation et décrémentation.
Du code Python illustre les découvertes.
Introduction
Des phrases piégeuses
- \(\sqrt{a+b} \neq \sqrt a + \sqrt b\), en général, sauf si \(a\) ou \(b\) est nul.
- \(\frac a b + \frac c d \neq \frac{a+b}{c+d}\)
Trouver l'intruse
Pour simplifier, on considère deux nombres strictement positifs (ou des fonctions très simples).
- La somme des dixièmes est égale au dixième de la somme.
- Le produit des puissances est égal à la puissance du produit.
- La racine d'un quotient est égale au quotient des racines.
- La somme des dérivées est égale à la dérivée de la somme.
- La somme des arrondis est égale à l'arrondi de la somme.
Réponse
- Que pensez-vous de l'arrondi de \(1.618\) ? \(2\)
- Que pensez-vous de l'arrondi de \(2×1.618=3.236\) ? \(3\)
- Que pensez-vous de 2 fois l'arrondi de \(1.618=3.236\) ? \(4\)
De manière générale, l'arrondi d'une somme n'est pas égal à la somme des arrondis.
Une suite géométrique
Il n'y a pas que la suite de Fibonacci (\(F_0=0\) et \(F_1=1\)) qui respecte la règle \(u_n = u_{n-1} + u_{n-2}\) pour \(n>1\). Il y a aussi :
- La suites de Lucas (\(L_0=2\) et \(L_1=1\)).
On peut se poser la question : existe-t-il une suite géométrique \((u)\) qui vérifie également la règle \(u_n = u_{n-1} + u_{n-2}\) pour \(n>1\) ?
Réponse
Déjà, la suite constante nulle vérifie la propriété.
On suppose qu'une autre telle suite géométrique existe, alors \(u_n = u_0×q^n\) (avec \(u_0\neq 0\)), on a :
- \(u_0 = u_0\)
- \(u_1 = u_0×q\)
- \(u_2 = u0×q^2\), mais d'après la règle on déduit
Que l'on simplifie par \(u_0\) que l'on a supposé non nul. On déduit que \(q\) est solution de l'équation \(x^2 = x + 1\). Il y a deux solutions. On note \(\varphi\) la solution positive. On a :
On déduit que \(\dfrac {-1}{\varphi}\) est l'autre solution de l'équation \(x^2+x+1\).
On peut également vérifier que
Des expériences
Un tour de magie ?
Expérience 1
from math import sqrt
phi = (1 + sqrt(5)) / 2
u = 1
for _ in range(13):
print(u, end=", ")
u = round(u * phi)
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377,
On est tenté de penser que l'arrondi de \(\varphi^n\) est un nombre de Fibonacci...
Expérience 2
from math import sqrt
phi = (1 + sqrt(5)) / 2
a, b = 2, 1 # Les nombres de Lucas
for n in range(80):
x = phi ** n
if round(x) != a:
print(n, end=", ")
a, b = b, a + b
0, 1, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
Alors non, c'était les nombres de Lucas, et avec deux erreurs pour les petits indices (0 et 1). Ensuite, à partir de 69, les erreurs de précisions des flottants sont trop importantes.
Expérience 3
from math import sqrt
phi = (1 + sqrt(5)) / 2
for n in range(68):
for m in range(n + 1):
x = phi ** n
y = phi ** m
# Test avec les nombres de Lucas
if round(x) + round(y) != round(x + y):
print((n, m), end=", ")
(1, 1), (2, 1), (2, 2), (4, 1), (4, 2),
Ici, on constate que, sauf pour les petits indices, l'arrondi d'une somme est égal à la somme de l'arrondi. À partir de 68, on a le problème des flottants...
Et les nombres de Fibonacci ?
Expérience 4
from math import sqrt
phi = (1 + sqrt(5)) / 2
a, b = 0, 1 # Les nombres de Fibonacci
for n in range(80):
x = phi ** n / sqrt(5)
if round(x) != a:
print(n, end=", ")
a, b = b, a + b
71, 72, 73, 74, 75, 76, 77, 78, 79,
On constate que
Explication
En réalité, si on note \(\varphi'=\dfrac{-1}{\varphi}\)
Et comme \(\varphi'\) est entre \(-1\) et \(0\), ses puissances deviennent négligeables. De sorte qu'on peut prendre l'arrondi du premier morceau.
De même
Mais la chose remarquable... d'après l'expérience 1 :
- l'arrondi de \(F_n × \varphi\), c'est \(F_{n+1}\), pour \(n>0\)
- l'arrondi de \(\dfrac{F_{n+1}}{\varphi}\), c'est \(F_{n}\), pour \(n\geqslant 0\)
from math import sqrt
phi = (1 + sqrt(5)) / 2
u = 1
for n in range(13):
print(u, end=", ")
v = round(u * phi)
assert u == round(v / phi)
u = v
L'autre chose qu'on remarque, en adaptant l'expérience 3 avec les nombres de Fibonacci :
from math import sqrt
phi = (1 + sqrt(5)) / 2
for n in range(68):
for m in range(n + 1):
x = phi ** n / sqrt(5)
y = phi ** m / sqrt(5)
# Test avec les nombres de Fibonacci
if round(x) + round(y) != round(x + y):
print((n, m), end=", ")
(0, 0), (1, 1), (2, 0), (4, 0), (66, 0), (67, 0),
Si on oublie
- les erreurs avec les flottants à partir de 66
- l'indice 0 (on le savait déjà \(0\neq 1\))
- le doublon à l'indice 1
(\(2\varphi \approx 3 \neq 2\))
Alors pour deux nombres non nuls de Fibonacci distincts et leur valeur approchée \(\dfrac{\varphi^n}{\sqrt 5}\), on a la chose surprenante : l'arrondi de la somme est égal à la somme de l'arrondi !
Lien avec Zeckendorf
Le lien avec les représentations de Zeckendorf ?
On a constaté que
- l'arrondi de \(F_n × \varphi\), c'est \(F_{n+1}\)
- l'arrondi de \(\dfrac{F_{n+1}}{\varphi}\), c'est \(F_{n}\)
- Avec des nombres de Fibonacci distincts non nuls, on pouvait intervertir arrondi et somme.
Il est naturel de considérer une représentation de Zeckendorf : \(F_{i_1} + F_{i_2} + \cdots + F_{i_k}\) et de s'interroger sur :
- \(F_{i_1+1} + F_{i_2+1} + \cdots + F_{i_k+1}\) (incrémentation des indices)
- \(F_{i_1-1} + F_{i_2-1} + \cdots + F_{i_k-1}\) (décrémentation des indices)
On ajoutera la question : que faire pour le bit initial ?
Réponse naturelle :
- \(F_0=0\) devient \(F_1\) par incrémentation, nous l'ajouterons en tant que nouveau \(F_2\) qui était vide avec le décalage !
- Par décrémentation, que faire d'un \(F_2\) éventuel ? Il devient un \(F_1\) qui vaut un. Ajoutons-le comme un nouveau \(F_2\), quitte à utiliser la fonction
zeckendorf_ajout_uns'il était déjà présent pour éviter un doublon !
On constatera ensuite que ce choix naturel était le bon !
Expérience
On peut facilement coder une fonction zeckendorf_inc qui prend en paramètre une représentation de Zeckendorf sous forme d'un tableau de bits et qui renvoie une représentation incrémentée de 1.
def zeckendorf_inc(bits):
"""
Renvoie l'incrémentation de la représentation donnée par bits
/!\ avec ajout de 1 au bit 0, car F_0 devient F_1=F_2 qui vaut 1
"""
ans = [1]
for b in bits:
ans.append(b)
return ans
De même pour zeckendorf_dec et on rapelle qu'on ne perd pas le bit initial en l'ajoutant à nouveau si besoin, car \(F_2\) devient \(F_1\) qui vaut également 1 !
def zeckendorf_dec(bits):
"""
Renvoie la décrémentation de la représentation donnée par bits
/!\ Sans perdre l'information du bit en 0 !
"""
ans = []
for i, b in enumerate(bits):
if i > 0:
ans.append(b)
if bits[0] == 1:
zeckendorf_ajout_un(ans) # Modification en place
return ans
Expérience
C'était un peu long à présenter, mais la question intéressante est la suivante :
Si on prend deux représentations de Zeckendorf d'un entier \(n\), et qu'on leur fait subir une incrémentation (ou une décrémentation), obtiendrons-nous deux évaluations différentes ?
import random
inc = dict()
dec = dict()
for _ in range(10000):
bits = [random.randrange(2) for _ in range(10)]
n = zeckendorf_eval(bits)
if n not in inc:
inc[n] = dict()
dec[n] = dict()
bits_inc = zeckendorf_inc(bits)
p = zeckendorf_eval(bits_inc)
if p not in inc[n]:
inc[n][p] = 0 # compteur d'images
inc[n][p] += 1
bits_dec = zeckendorf_dec(bits)
m = zeckendorf_eval(bits_dec)
if m not in dec[n]:
dec[n][m] = 0 # compteur d'images
dec[n][m] += 1
print("Dictionnaire d'incrémentation", inc)
print()
print("Dictionnaire de décrémentation", dec)
# Vérification de l'unicité des images
for n in inc:
if len(inc[n]) != 1:
print(f"Erreur {inc[n]=}")
if len(dec[n]) != 1:
print(f"Erreur {dec[n]=}")
Dictionnaire d'incrémentation {165: {268: 85}, 118: {192: 103}, 128: {208: 80}, 155: {252: 67}, 103: {168: 80}, 170: {276: 68}, 97: {158: 84}, 111: {181: 59}, 126: {205: 86}, 107: {174: 51}, 53: {87: 36}, 115: {187: 96}, 37: {61: 64}, 213: {346: 30}, 39: {64: 50}, 149: {242: 58}, 150: {244: 43}, 81: {132: 61}, 43: {71: 36}, 24: {40: 34}, 82: {134: 66}, 79: {129: 68}, 80: {131: 35}, 36: {59: 27}, 138: {224: 36}, 113: {184: 103}, 29: {48: 47}, 77: {126: 55}, 117: {190: 33}, 196: {318: 46}, 94: {153: 59}, 148: {241: 33}, 84: {137: 68}, 182: {296: 16}, 55: {90: 56}, 169: {275: 23}, 90: {147: 46}, 131: {213: 79}, 28: {46: 18}, 35: {58: 38}, 127: {207: 53}, 156: {254: 19}, 105: {171: 87}, 215: {349: 41}, 86: {140: 36}, 157: {255: 58}, 19: {32: 36}, 161: {262: 39}, 180: {292: 18}, 119: {194: 50}, 89: {145: 49}, 145: {236: 33}, 106: {173: 53}, 163: {265: 53}, 99: {161: 53}, 69: {113: 69}, 65: {106: 59}, 64: {105: 37}, 147: {239: 63}, 112: {182: 70}, 52: {85: 41}, 71: {116: 72}, 110: {179: 76}, 168: {273: 84}, 42: {69: 52}, 231: {375: 13}, 158: {257: 66}, 60: {98: 50}, 142: {231: 54}, 14: {24: 30}, 11: {19: 25}, 95: {155: 64}, 121: {197: 76}, 183: {297: 43}, 203: {330: 17}, 201: {326: 32}, 129: {210: 92}, 48: {79: 45}, 154: {250: 46}, 212: {344: 35}, 98: {160: 56}, 10: {17: 13}, 56: {92: 43}, 13: {22: 30}, 61: {100: 70}, 73: {119: 70}, 87: {142: 41}, 96: {156: 19}, 124: {202: 75}, 120: {195: 68}, 26: {43: 35}, 23: {38: 30}, 67: {110: 22}, 135: {220: 28}, 144: {234: 43}, 108: {176: 73}, 173: {281: 74}, 47: {77: 61}, 136: {221: 73}, 74: {121: 79}, 192: {312: 45}, 38: {63: 31}, 102: {166: 76}, 171: {278: 51}, 221: {359: 17}, 34: {56: 48}, 123: {200: 73}, 223: {362: 31}, 58: {95: 50}, 179: {291: 41}, 76: {124: 66}, 194: {315: 50}, 205: {333: 28}, 202: {328: 55}, 189: {307: 67}, 27: {45: 32}, 217: {352: 36}, 51: {84: 33}, 132: {215: 48}, 146: {237: 38}, 195: {317: 32}, 200: {325: 28}, 160: {260: 88}, 174: {283: 42}, 137: {223: 79}, 62: {101: 35}, 188: {305: 38}, 207: {336: 57}, 92: {150: 73}, 167: {271: 51}, 7: {12: 7}, 204: {331: 31}, 93: {152: 38}, 181: {294: 60}, 75: {122: 22}, 30: {50: 35}, 230: {373: 15}, 21: {35: 35}, 72: {118: 37}, 159: {258: 42}, 166: {270: 43}, 100: {163: 80}, 209: {339: 33}, 197: {320: 46}, 140: {228: 45}, 40: {66: 48}, 141: {229: 51}, 152: {247: 94}, 175: {284: 41}, 139: {226: 77}, 153: {249: 63}, 116: {189: 72}, 41: {67: 21}, 218: {354: 25}, 18: {30: 31}, 49: {80: 35}, 172: {279: 27}, 178: {289: 48}, 104: {169: 56}, 0: {1: 10}, 85: {139: 46}, 198: {321: 14}, 50: {82: 58}, 17: {29: 24}, 63: {103: 91}, 31: {51: 28}, 184: {299: 53}, 133: {216: 60}, 134: {218: 80}, 83: {135: 33}, 59: {97: 27}, 187: {304: 34}, 88: {144: 8}, 32: {53: 52}, 114: {186: 42}, 228: {370: 16}, 186: {302: 53}, 125: {203: 48}, 91: {148: 46}, 206: {334: 20}, 20: {33: 16}, 109: {177: 23}, 227: {368: 11}, 162: {263: 47}, 199: {323: 43}, 193: {313: 25}, 54: {88: 7}, 210: {341: 49}, 101: {165: 26}, 222: {360: 16}, 176: {286: 44}, 151: {245: 26}, 208: {338: 27}, 22: {37: 26}, 45: {74: 59}, 191: {310: 40}, 78: {127: 56}, 164: {266: 22}, 6: {11: 19}, 5: {9: 15}, 224: {364: 13}, 3: {6: 20}, 211: {343: 10}, 70: {114: 36}, 8: {14: 16}, 44: {72: 43}, 66: {108: 61}, 68: {111: 60}, 220: {357: 14}, 46: {76: 20}, 57: {93: 31}, 25: {42: 21}, 229: {372: 14}, 226: {367: 19}, 12: {21: 11}, 16: {27: 22}, 2: {4: 14}, 1: {3: 15}, 130: {211: 25}, 9: {16: 19}, 216: {351: 18}, 190: {309: 25}, 214: {347: 14}, 4: {8: 11}, 33: {55: 9}, 225: {365: 18}, 219: {355: 5}, 143: {232: 6}, 15: {25: 14}, 122: {199: 20}, 185: {300: 15}, 177: {288: 9}}
Dictionnaire de décrémentation {165: {102: 85}, 118: {73: 103}, 128: {79: 80}, 155: {96: 67}, 103: {64: 80}, 170: {105: 68}, 97: {60: 84}, 111: {69: 59}, 126: {78: 86}, 107: {66: 51}, 53: {33: 36}, 115: {71: 96}, 37: {23: 64}, 213: {132: 30}, 39: {24: 50}, 149: {92: 58}, 150: {93: 43}, 81: {50: 61}, 43: {27: 36}, 24: {15: 34}, 82: {51: 66}, 79: {49: 68}, 80: {50: 35}, 36: {22: 27}, 138: {85: 36}, 113: {70: 103}, 29: {18: 47}, 77: {48: 55}, 117: {72: 33}, 196: {121: 46}, 94: {58: 59}, 148: {92: 33}, 84: {52: 68}, 182: {113: 16}, 55: {34: 56}, 169: {105: 23}, 90: {56: 46}, 131: {81: 79}, 28: {17: 18}, 35: {22: 38}, 127: {79: 53}, 156: {97: 19}, 105: {65: 87}, 215: {133: 41}, 86: {53: 36}, 157: {97: 58}, 19: {12: 36}, 161: {100: 39}, 180: {111: 18}, 119: {74: 50}, 89: {55: 49}, 145: {90: 33}, 106: {66: 53}, 163: {101: 53}, 99: {61: 53}, 69: {43: 69}, 65: {40: 59}, 64: {40: 37}, 147: {91: 63}, 112: {69: 70}, 52: {32: 41}, 71: {44: 72}, 110: {68: 76}, 168: {104: 84}, 42: {26: 52}, 231: {143: 13}, 158: {98: 66}, 60: {37: 50}, 142: {88: 54}, 14: {9: 30}, 11: {7: 25}, 95: {59: 64}, 121: {75: 76}, 183: {113: 43}, 203: {126: 17}, 201: {124: 32}, 129: {80: 92}, 48: {30: 45}, 154: {95: 46}, 212: {131: 35}, 98: {61: 56}, 10: {6: 13}, 56: {35: 43}, 13: {8: 30}, 61: {38: 70}, 73: {45: 70}, 87: {54: 41}, 96: {59: 19}, 124: {77: 75}, 120: {74: 68}, 26: {16: 35}, 23: {14: 30}, 67: {42: 22}, 135: {84: 28}, 144: {89: 43}, 108: {67: 73}, 173: {107: 74}, 47: {29: 61}, 136: {84: 73}, 74: {46: 79}, 192: {119: 45}, 38: {24: 31}, 102: {63: 76}, 171: {106: 51}, 221: {137: 17}, 34: {21: 48}, 123: {76: 73}, 223: {138: 31}, 58: {36: 50}, 179: {111: 41}, 76: {47: 66}, 194: {120: 50}, 205: {127: 28}, 202: {125: 55}, 189: {117: 67}, 27: {17: 32}, 217: {134: 36}, 51: {32: 33}, 132: {82: 48}, 146: {90: 38}, 195: {121: 32}, 200: {124: 28}, 160: {99: 88}, 174: {108: 42}, 137: {85: 79}, 62: {38: 35}, 188: {116: 38}, 207: {128: 57}, 92: {57: 73}, 167: {103: 51}, 7: {4: 7}, 204: {126: 31}, 93: {58: 38}, 181: {112: 60}, 75: {46: 22}, 30: {19: 35}, 230: {142: 15}, 21: {13: 35}, 72: {45: 37}, 159: {98: 42}, 166: {103: 43}, 100: {62: 80}, 209: {129: 33}, 197: {122: 46}, 140: {87: 45}, 40: {25: 48}, 141: {87: 51}, 152: {94: 94}, 175: {108: 41}, 139: {86: 77}, 153: {95: 63}, 116: {72: 72}, 41: {25: 21}, 218: {135: 25}, 18: {11: 31}, 49: {30: 35}, 172: {106: 27}, 178: {110: 48}, 104: {64: 56}, 0: {0: 10}, 85: {53: 46}, 198: {122: 14}, 50: {31: 58}, 17: {11: 24}, 63: {39: 91}, 31: {19: 28}, 184: {114: 53}, 133: {82: 60}, 134: {83: 80}, 83: {51: 33}, 59: {37: 27}, 187: {116: 34}, 88: {55: 8}, 32: {20: 52}, 114: {71: 42}, 228: {141: 16}, 186: {115: 53}, 125: {77: 48}, 91: {56: 46}, 206: {127: 20}, 20: {12: 16}, 109: {67: 23}, 227: {140: 11}, 162: {100: 47}, 199: {123: 43}, 193: {119: 25}, 54: {33: 7}, 210: {130: 49}, 101: {63: 26}, 222: {137: 16}, 176: {109: 44}, 151: {93: 26}, 208: {129: 27}, 22: {14: 26}, 45: {28: 59}, 191: {118: 40}, 78: {48: 56}, 164: {101: 22}, 6: {4: 19}, 5: {3: 15}, 224: {139: 13}, 3: {2: 20}, 211: {131: 10}, 70: {43: 36}, 8: {5: 16}, 44: {27: 43}, 66: {41: 61}, 68: {42: 60}, 220: {136: 14}, 46: {29: 20}, 57: {35: 31}, 25: {16: 21}, 229: {142: 14}, 226: {140: 19}, 12: {8: 11}, 16: {10: 22}, 2: {1: 14}, 1: {1: 15}, 130: {80: 25}, 9: {6: 19}, 216: {134: 18}, 190: {118: 25}, 214: {132: 14}, 4: {3: 11}, 33: {21: 9}, 225: {139: 18}, 219: {135: 5}, 143: {88: 6}, 15: {9: 14}, 122: {76: 20}, 185: {114: 15}, 177: {110: 9}}
Comment lire ce résultat ? Sur 10000 expériences avec des tableaux de 10 bits :
Dictionnaire d'incrémentation {165: {268: 85}, 118: {192: 103}, 128: {208: 80}, ...- L'antécédent \(n=165\) a donné 85 fois l'image \(268\) par incrémentation. Aucune autre image.
- L'antécédent \(n=118\) a donné 103 fois l'image \(192\) par incrémentation. Aucune autre image.
- L'antécédent \(n=128\) a donné 80 fois l'image \(208\) par incrémentation. Aucune autre image.
- ... Dictionnaire de décrémentation {165: {102: 85}, 118: {73: 103}, 128: {79: 80}, ...`
- L'antécédent \(n=165\) a donné 85 fois l'image \(102\) par décrémentation. Aucune autre image.
- L'antécédent \(n=118\) a donné 103 fois l'image \(103\) par décrémentation. Aucune autre image.
- L'antécédent \(n=128\) a donné 80 fois l'image \(79\) par décrémentation. Aucune autre image.
- ...
On a même testé l'unicité pour tous avec une clause assert. C'est engageant !
Ceci n'est qu'une expérience, et non une preuve !
Exercice
Exercice
Démontrer que l'incrémentation (ou la décrémentation) d'une valeur \(n\) ne dépend pas de la représentation choisie.
Indice
- Commencer à montrer que le résultat ne change pas en utilisant une seule transition \(F_n = F_{n-1} + F_{n-2}\).
- Évoquer que le graphe des représentations est connexe ! (Présenté en page d'accueil !)
Ces fonctions sont-elles connues ?
Créons la suite des valeurs pour nos fonctions :
# Suite du test
n_max = max(inc)
inc_list = [None for _ in range(n_max + 1)]
dec_list = [None for _ in range(n_max + 1)]
for n in inc:
for y in inc[n]: # il n'y aura qu'un seul tour de boucle !
inc_list[n] = y
for y in dec[n]: # il n'y aura qu'un seul tour de boucle !
dec_list[n] = y
print(inc_list)
print(dec_list)
[1, 3, 4, 6, 8, 9, 11, 12, 14, 16, 17, 19, 21, 22, 24, 25, 27, 29, 30, 32, 33, 35, 37, 38, 40, 42, 43, 45, 46, 48, 50, 51, 53, 55, 56, 58, 59, 61, 63, 64, 66, 67, 69, 71, 72, 74, 76, 77, 79, 80, 82, 84, 85, 87, 88, 90, 92, 93, 95, 97, 98, 100, 101, 103, 105, 106, 108, 110, 111, 113, 114, 116, 118, 119, 121, 122, 124, 126, 127, 129, 131, 132, 134, 135, 137, 139, 140, 142, 144, 145, 147, 148, 150, 152, 153, 155, 156, 158, 160, 161, 163, 165, 166, 168, 169, 171, 173, 174, 176, 177, 179, 181, 182, 184, 186, 187, 189, 190, 192, 194, 195, 197, 199, 200, 202, 203, 205, 207, 208, 210, 211, 213, 215, 216, 218, 220, 221, 223, 224, 226, 228, 229, 231, 232, 234, 236, 237, 239, 241, 242, 244, 245, 247, 249, 250, 252, 254, 255, 257, 258, 260, 262, 263, 265, 266, 268, 270, 271, 273, 275, 276, 278, 279, 281, 283, 284, 286, 288, 289, 291, 292, 294, 296, 297, 299, 300, 302, 304, 305, 307, 309, 310, 312, 313, 315, 317, 318, 320, 321, 323, 325, 326, 328, 330, 331, 333, 334, 336, 338, 339, 341, 343, 344, 346, 347, 349, 351, 352, 354, 355, 357, 359, 360, 362, 364, 365, 367, 368, 370, 372, 373, 375]
[0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, 23, 24, 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 30, 31, 32, 32, 33, 33, 34, 35, 35, 36, 37, 37, 38, 38, 39, 40, 40, 41, 42, 42, 43, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 51, 52, 53, 53, 54, 55, 55, 56, 56, 57, 58, 58, 59, 59, 60, 61, 61, 62, 63, 63, 64, 64, 65, 66, 66, 67, 67, 68, 69, 69, 70, 71, 71, 72, 72, 73, 74, 74, 75, 76, 76, 77, 77, 78, 79, 79, 80, 80, 81, 82, 82, 83, 84, 84, 85, 85, 86, 87, 87, 88, 88, 89, 90, 90, 91, 92, 92, 93, 93, 94, 95, 95, 96, 97, 97, 98, 98, 99, 100, 100, 101, 101, 102, 103, 103, 104, 105, 105, 106, 106, 107, 108, 108, 109, 110, 110, 111, 111, 112, 113, 113, 114, 114, 115, 116, 116, 117, 118, 118, 119, 119, 120, 121, 121, 122, 122, 123, 124, 124, 125, 126, 126, 127, 127, 128, 129, 129, 130, 131, 131, 132, 132, 133, 134, 134, 135, 135, 136, 137, 137, 138, 139, 139, 140, 140, 141, 142, 142, 143]
A-t-on une chance de trouver une formule directe ? (Sans tricher avec OEIS)
Indice
Dans le cas particulier d'une somme à un seul terme \(F_n\), combien vaut son incrémentation ? Sa décrémentation ? Cela se généralise-t-il ?
Le premier réflexe est de tracer une courbe représentative pour chacune.
xychart-beta
title "Courbes"
line [1, 3, 4, 6, 8, 9, 11, 12, 14, 16, 17, 19, 21, 22, 24, 25, 27, 29, 30, 32, 33, 35, 37, 38, 40, 42, 43, 45, 46, 48, 50, 51, 53, 55, 56, 58, 59, 61, 63, 64, 66, 67, 69, 71, 72, 74, 76, 77, 79, 80, 82, 84, 85, 87, 88, 90, 92, 93, 95, 97, 98, 100, 101, 103, 105, 106, 108, 110, 111, 113, 114, 116, 118, 119, 121, 122, 124, 126, 127, 129, 131, 132, 134, 135, 137, 139, 140, 142, 144, 145, 147, 148, 150, 152, 153, 155, 156, 158, 160, 161, 163, 165, 166, 168, 169, 171, 173, 174, 176, 177, 179, 181, 182, 184, 186, 187, 189, 190, 192, 194, 195, 197, 199, 200, 202, 203, 205, 207, 208, 210, 211, 213, 215, 216, 218, 220, 221, 223, 224, 226, 228, 229, 231, 232, 234, 236, 237, 239, 241, 242, 244, 245, 247, 249, 250, 252, 254, 255, 257, 258, 260, 262, 263, 265, 266, 268, 270, 271, 273, 275, 276, 278, 279, 281, 283, 284, 286, 288, 289, 291, 292, 294, 296, 297, 299, 300, 302, 304, 305, 307, 309, 310, 312, 313, 315, 317, 318, 320, 321, 323, 325, 326, 328, 330, 331, 333, 334, 336, 338, 339, 341, 343, 344, 346, 347, 349, 351, 352, 354, 355, 357, 359, 360, 362, 364, 365, 367, 368, 370, 372, 373, 375]
line [0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9, 10, 11, 11, 12, 12, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, 23, 24, 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 30, 31, 32, 32, 33, 33, 34, 35, 35, 36, 37, 37, 38, 38, 39, 40, 40, 41, 42, 42, 43, 43, 44, 45, 45, 46, 46, 47, 48, 48, 49, 50, 50, 51, 51, 52, 53, 53, 54, 55, 55, 56, 56, 57, 58, 58, 59, 59, 60, 61, 61, 62, 63, 63, 64, 64, 65, 66, 66, 67, 67, 68, 69, 69, 70, 71, 71, 72, 72, 73, 74, 74, 75, 76, 76, 77, 77, 78, 79, 79, 80, 80, 81, 82, 82, 83, 84, 84, 85, 85, 86, 87, 87, 88, 88, 89, 90, 90, 91, 92, 92, 93, 93, 94, 95, 95, 96, 97, 97, 98, 98, 99, 100, 100, 101, 101, 102, 103, 103, 104, 105, 105, 106, 106, 107, 108, 108, 109, 110, 110, 111, 111, 112, 113, 113, 114, 114, 115, 116, 116, 117, 118, 118, 119, 119, 120, 121, 121, 122, 122, 123, 124, 124, 125, 126, 126, 127, 127, 128, 129, 129, 130, 131, 131, 132, 132, 133, 134, 134, 135, 135, 136, 137, 137, 138, 139, 139, 140, 140, 141, 142, 142, 143]
Incroyable, deux fonctions qui semblent linéaires ! Mais le coefficient directeur n'est pas entier et il faudra surement faire intervenir un arrondi ou une troncature.
Pour trouver le coefficient, rappelons qu'un cas particulier est \(\text{INC}(F_n) = F_{n+1} \approx \varphi F_n\), ainsi le coefficient \(\varphi\) est tout indiqué ! Et son inverse pour \(\text{DEC}\).
Formules
On finit par exhiber deux formules qui sont correctes :
- $\text{INC}(n)$, c'est `#!py int((n + 1) * phi)`
- $\text{DEC}(n)$, c'est `#!py int((n + 1) / phi)`
Lien avec le mot de Fibonacci
# Les indices du mot infini de Fibonacci commencent à 1, d'où le # initial
MOT_FIB = "#01101001011000100110101000010001100101010010101100000100001..."
A000201 = [None, 1, 3, 4, 6, 8, 9, 11, 12, 14, 16, 17, 19, 21, 22, 24, 25, 27, 29, 30, 32, 33, 35, 37, 38, 40, 42, 43, 45, 46, 48, 50, 51, 53, 55, 56, 58, 59, 61, 63, 64, 66, 67, 69, 71, 72, 74, 76, 77, 79, 80, 82, 84, 85, 87, 88, 90, 92, 93, 95, 97, 98, 100, 101, 103, 105, 106, 108, 110, 111, 113, 114, 116, 118, 119, 121, 122, 124, 126, 127, 129, 131, 132, 134, 135, 137, 139, 140, 142, 144, 145, 147, 148, 150, 152, 153, 155, 156, 158, 160, 161, 163, 165, 166, 168, 169, 171, 173, 174, 176, 177, 179, 181, 182, 184, 186, 187, 189, 190, 192, 194, 195, 197, 199, 200, 202, 203, 205, 207, 208, 210, 211, 213, 215, 216, 218, 220, 221, 223, 224, 226, 228, 229, 231, 232, 234, 236, 237, 239, 241, 242, 244, 245, 247, 249, 250, 252, 254, 255, 257, 258, 260, 262, 263, 265, 266, 268, 270, 271, 273, 275, 276, 278, 279, 281, 283, 284, 286, 288, 289, 291, 292, 294, 296, 297, 299, 300, 302, 304, 305, 307, 309, 310, 312, 313, 315, 317, 318, 320, 321, 323, 325, 326, 328, 330, 331, 333, 334, 336, 338, 339, 341, 343, 344, 346, 347, 349, 351, 352, 354, 355, 357, 359, 360, 362, 364, 365, 367, 368, 370, 372, 373, 375]
A01950 = [None, 2, 5, 7, 10, 13, 15, 18, 20, 23, 26, 28, 31, 34, 36, 39, 41, 44, 47, 49, 52, 54, 57, 60, 62, 65, 68, 70, 73, 75, 78, 81, 83, 86, 89, 91, 94, 96, 99, 102, 104, 107, 109, 112, 115, 117, 120, 123, 125, 128, 130, 133, 136, 138, 141, 143, 146, 149, 151, 154, 157]
Ces deux suites de nombres sont célèbres :
- La première A000201, la suite basse de Wythoff, donne l'indice du
n-ième 0 dans le mot infini de Fibonacci. - La seconde A005206, c'est exactement la suite G de Hofstadter
Et si vous avez résolus les problèmes précédents, vous les avez déjà rencontrées !
On remarquera que la suite haute de Wythoff, celle qui donne l'indice du n-ème 1 (départ à 1) dans le mot de Fibonacci est A001950
En résumé
A000201[n] == INC(n - 1) == int(n * phi); indices des 0A01950[n] == n + INC(n - 1) == int(n * phi**2); indices des 1A05206[n] == DEC(n) == int((n + 1) / phi); suite G de Hofstadter
Lien avec la fractale présentée
Si on note les représentations minimales de manière condensée en binaire, le tableau de bits devient, avec les bits de poids faibles à droite, cette fois.
| \(n\) | z_min |
|---|---|
| $0 $ | 0 |
| $1 $ | 1 |
| $2 $ | 10 |
| $3 $ | 100 |
| $4 $ | 101 |
| $5 $ | 1000 |
| $6 $ | 1001 |
| $7 $ | 1010 |
| $8 $ | 10000 |
| $9 $ | 10001 |
| $10 $ | 10010 |
| $11 $ | 10100 |
| $12 $ | 10101 |
| $13 $ | 100000 |
| $14 $ | 100001 |
| \(\cdots\) | ... |
Si on fait la concaténation de ces chaines de caractères, on obtient...
01101001011000100110101000010001100101010010101100000100001...
Il s'agit encore du mot infini de Fibonacci !
Ce tableau est également totalement équivalent à la fractale présentée plus tôt.