Terminale · F3
terminale
Aller plus loin · Recit

Les pages sales

Un astronome remarque en 1881 que les premières pages des tables de logarithmes sont plus noircies que les dernières. Personne ne relève pendant cinquante-sept ans. Voici l'histoire, la loi, et le script qui la vérifie sur les dix mille premières puissances de 2.

La pièce 51 des Coulisses n°6 s’est ouverte sur une observation de bibliothécaire et refermée sur une promesse de code. Voici l’une et l’autre, en entier.

1881 : personne n’écoute

Simon Newcomb est astronome, canadien de naissance, américain d’adoption, et il passe sa vie dans des tables. En 1881, il publie dans l’American Journal of Mathematics une note de deux pages qui part d’un détail matériel : dans les recueils de logarithmes qui ont beaucoup servi, les premières pages sont plus usées que les dernières. Or les premières pages sont celles des nombres commençant par 11. Newcomb en tire la conclusion qui s’impose : les nombres qu’on rencontre dans la vraie vie ne commencent pas par les neuf chiffres avec la même fréquence, et il propose même la formule.

Puis rien. Personne ne cite l’article, personne ne le teste, personne ne s’en souvient. La note dort cinquante-sept ans.

En 1938, Frank Benford, physicien chez General Electric, refait exactement la même observation sur exactement les mêmes pages sales. À la différence de Newcomb, il ne s’arrête pas là : il collecte environ vingt mille données de toutes provenances, superficies de bassins fluviaux, constantes physiques, populations de villes, numéros de rue relevés dans un journal, adresses, poids moléculaires, et il compte. La loi tient. Elle porte son nom depuis, et Newcomb y a perdu la sienne : c’est ainsi que fonctionne la mémoire scientifique, elle retient celui qui a mesuré, pas celui qui a vu.

La loi

Pour tout chiffre d{1,2,,9}d \in \{1, 2, \ldots, 9\}, la proportion des nombres d’une collection « naturelle » dont l’écriture décimale commence par le chiffre dd vaut

P(d)=log(1+1d).P(d) = \log\left(1 + \frac{1}{d}\right).

Le chiffre 11 ouvre donc 30,1%30{,}1\,\% des nombres, le chiffre 22 en ouvre 17,6%17{,}6\,\%, et le chiffre 99 seulement 4,6%4{,}6\,\%. Un nombre a plus de six fois et demie plus de chances de commencer par 11 que par 99.

En 1972, l’économiste Hal Varian propose de retourner l’observation : puisqu’une collection authentique obéit à la loi, une collection inventée la trahit. Un cerveau humain qui fabrique des faux chiffres répartit les premiers chiffres beaucoup trop équitablement, parce qu’il croit que « au hasard » veut dire « uniformément ». Les administrations fiscales et les cabinets d’audit ont fait de cette idée un outil de routine ; l’analyse de premier chiffre est aujourd’hui un réflexe sur les déclarations comptables, et elle a été employée, avec des fortunes diverses, sur des résultats électoraux. Mentir sur des nombres sans connaître le logarithme est devenu risqué.

Le tiroir promis : le script

Les Coulisses ont annoncé un programme qui teste la loi sur les puissances de 22. Le voici, et il tient en huit lignes. Aucun flottant n’intervient dans le comptage : Python manipule les entiers exacts, et le premier chiffre de 2n2^n se lit simplement en tête de son écriture.

from collections import Counter
import math

compte = Counter()
p = 1
for n in range(1, 10001):
    p *= 2                       # p vaut 2**n, en entier exact
    compte[str(p)[0]] += 1

for d in "123456789":
    frequence = compte[d] / 10000
    theorie = math.log10(1 + 1 / int(d))
    print(d, round(frequence, 4), round(theorie, 5), abs(frequence - theorie))

Sa sortie, sur les dix mille premières puissances de 22, c’est-à-dire de 212^1 jusqu’à 2100002^{10\,000}, un nombre de 30113011 chiffres. Colonnes : effectif du chiffre de tête dd sur les 1000010\,000 puissances, fréquence observée, fréquence théorique log(1+1d)\log\left(1+\frac1d\right), écart entre les deux.

ddEffectifFréquenceThéorieÉcart
11301030100,30100{,}30100,301030{,}301033,0×1053{,}0 \times 10^{-5}
22176117610,17610{,}17610,176090{,}176098,7×1068{,}7 \times 10^{-6}
33124912490,12490{,}12490,124940{,}124943,9×1053{,}9 \times 10^{-5}
449709700,09700{,}09700,096910{,}096919,0×1059{,}0 \times 10^{-5}
557917910,07910{,}07910,079180{,}079188,1×1058{,}1 \times 10^{-5}
666706700,06700{,}06700,066950{,}066955,3×1055{,}3 \times 10^{-5}
775795790,05790{,}05790,057990{,}057999,2×1059{,}2 \times 10^{-5}
885125120,05120{,}05120,051150{,}051154,7×1054{,}7 \times 10^{-5}
994584580,04580{,}04580,045760{,}045764,3×1054{,}3 \times 10^{-5}

Aucun écart ne dépasse 9,2×1059{,}2 \times 10^{-5}. Une collection de données réelles, même excellente, colle rarement à mieux que le centième ; ici, la concordance est de l’ordre du dix-millième, sur neuf colonnes à la fois. Ce n’est plus une tendance statistique, c’est un théorème qui se montre.

Pourquoi les puissances de 2 obéissent si bien

En une phrase : parce que log2\log 2 est irrationnel.

Détaillons-la, elle en vaut la peine. Le paragraphe 7.1 du cours a établi que la partie entière de logN\log N compte les chiffres de NN. Sa partie fractionnaire, elle, dit lesquels : si logN=m+f\log N = m + f avec mm entier et f[0;1[f \in [0\,;1[, alors N=10m×10fN = 10^{m} \times 10^{f}, et comme 110f<101 \leqslant 10^{f} < 10, le premier chiffre de NN est 10f\lfloor 10^{f} \rfloor. Le premier chiffre vaut donc dd exactement quand

logdf<log(d+1),\log d \leqslant f < \log(d+1),

un intervalle de longueur log(d+1)logd=log(1+1d)\log(d+1) - \log d = \log\left(1 + \frac1d\right). Toute la loi de Benford est là : c’est la longueur d’un intervalle, lue à travers un logarithme.

Reste à savoir comment se répartissent les ff. Pour N=2nN = 2^{n}, on a logN=nlog2\log N = n \log 2, et la partie fractionnaire en jeu est celle de nlog2n \log 2. Un théorème d’équirépartition dû à Hermann Weyl (1916) affirme que si α\alpha est irrationnel, la suite des parties fractionnaires de nαn\alpha se répartit uniformément dans [0;1[[0\,;1[ : à la longue, elle passe dans chaque sous-intervalle une proportion du temps égale à sa longueur, exactement. Avec α=log2\alpha = \log 2, irrationnel (la démonstration tient en trois lignes, et elle est donnée dans la page des tiroirs du numéro 6), la proportion des nn pour lesquels 2n2^{n} commence par dd tend vers log(1+1d)\log\left(1+\frac1d\right).

Autrement dit : les puissances de 22 ne suivent pas la loi de Benford approximativement, parce que la vie est ainsi faite. Elles la suivent exactement, à la limite, et pour une raison arithmétique.

Un piège de flottant, en prime

On peut écrire le même comptage sans jamais former 2n2^{n}, en n’utilisant que la mantisse, comme le fait l’exercice 31 de l’Atelier, Le premier chiffre du géant :

tete = math.floor(10 ** ((n * math.log10(2)) % 1))

Sur les dix mille premières puissances, cette version et la version exacte donnent le même résultat partout, sauf une fois. L’exception est n=3n = 3 : la partie fractionnaire de 3log23\log 2 vaut 0,9030890{,}903\,089\ldots, et 100,90308910^{0{,}903\,089\ldots} vaut 88 tout rond, mais le flottant le calcule légèrement en dessous et la partie entière tombe à 77. Un seul chiffre faux sur dix mille, et il concerne 23=82^{3} = 8, le plus petit cas qu’on aurait pu vérifier de tête.

C’est très exactement la question 4 de ce même exercice 31, et c’est le prix de la méthode : elle lit le premier chiffre d’un nombre qu’on ne pourrait pas écrire, mais elle le lit à travers un logarithme approché, et un logarithme approché ne sait pas distinguer « juste en dessous d’une puissance de dix » de « juste au-dessus ». Le calcul exact ne peut pas se tromper ; il ne peut simplement pas aller aussi loin.

Sources

  • Pièce 51 des Coulisses n°6, Les pages sales et le chiffre 1 ; cours F3, paragraphe 7.1 ; Atelier F3, exercice 31 Le premier chiffre du géant.
  • S. Newcomb, « Note on the frequency of use of the different digits in natural numbers », American Journal of Mathematics, 1881. F. Benford, « The law of anomalous numbers », Proceedings of the American Philosophical Society, 1938. H. Varian, « Benford’s law », The American Statistician, 1972.
  • Tous les nombres de cette page ont été recalculés en Python, le comptage des premiers chiffres étant fait sur les entiers exacts 21,,2100002^{1}, \ldots, 2^{10\,000}.
← Retour au chapitre F3