Vous êtes sur le blog de David Madore, qui, comme le
reste de ce site web, parle de tout et
de n'importe quoi (surtout de n'importe quoi, en fait),
des maths à
la moto et ma vie quotidienne, en passant
par les langues,
la politique,
la philo de comptoir, la géographie, et
beaucoup de râleries sur le fait que les ordinateurs ne marchent pas,
ainsi que d'occasionnels rappels du fait que
je préfère les garçons, et des
petites fictions volontairement fragmentaires que je publie sous le
nom collectif de fragments littéraires
gratuits. • Ce blog eut été bilingue à ses débuts (certaines
entrées étaient en anglais, d'autres en français, et quelques unes
traduites dans les deux langues) ; il est
maintenant presque exclusivement en
français, mais je ne m'interdis pas d'écrire en anglais à
l'occasion. • Pour naviguer, sachez que les entrées sont listées par
ordre chronologique inverse (i.e., la plus récente est en haut).
Cette page-ci rassemble les entrées publiées en
juin 2015 : il y a aussi un tableau par
mois à la fin de cette page, et
un index de toutes les entrées.
Certaines de mes entrées sont rangées dans une ou plusieurs
« catégories » (indiqués à la fin de l'entrée elle-même), mais ce
système de rangement n'est pas très cohérent. Le permalien de chaque
entrée est dans la date, et il est aussi rappelé avant et après le
texte de l'entrée elle-même.
You are on David Madore's blog which, like the rest of this web
site, is about everything and
anything (mostly anything, really),
from math
to motorcycling and my daily life, but
also languages, politics,
amateur(ish) philosophy, geography, lots of
ranting about the fact that computers don't work, occasional reminders
of the fact that I prefer men, and
some voluntarily fragmentary fictions that I publish under the
collective name of gratuitous literary
fragments. • This blog used to be bilingual at its beginning
(some entries were in English, others in French, and a few translated
in both languages); it is now almost
exclusively in French, but I'm not ruling out writing English blog
entries in the future. • To navigate, note that the entries are listed
in reverse chronological order (i.e., the most recent is on top).
This page lists the entries published in
June 2015: there is also a table of months
at the end of this page, and
an index of all entries. Some
entries are classified into one or more “categories” (indicated at the
end of the entry itself), but this organization isn't very coherent.
The permalink of each entry is in its date, and it is also reproduced
before and after the text of the entry itself.
Je parlais dans l'entrée
précédente de la chambre des Lords et de sa réforme de 1999
(consistant à en faire partir presque tous les pairs héréditaires), et
j'ai brièvement mentionné une autre réforme consistant, en 2009, à en
séparer la partie judiciaire
(les Law
Lords) qui sont devenus une
nouvelle Cour
suprême du Royaume-Uni. En cherchant des documentaires sur ce
sujet (j'aimerais pouvoir dire que YouTube me les a intelligemment
suggérés, mais non, j'ai ses recommandations basées sur ce que je
regarde sont décidément merdiques, et j'ai dû chercher moi-même), je
suis tombé sur quelques vidéos qui m'ont intéressé et qui pourraient
plaire à mes lecteurs ayant quelques heures à perdre.
Voici un
documentaire de la BBC sur cette nouvelle Cour
suprême du Royaume-Uni, qui est intéressant (au-delà du cadre
spécifiquement britannique) dans la manière dont les juges racontent
la façon dont ils conçoivent
leur rôle, leur indépendance, leur
façon de travailler (je peux me tromper, mais j'ai l'impression que
les juges français, qu'ils soient judiciaires, administratifs ou
constitutionnels, sont rarement aussi diserts). Mais
surtout, cette
conversation (débat n'étant sans doute pas le bon mot) entre Ruth
Bader Ginsburg, qui siège à la Cour Suprême des États-Unis, et la
Baronne Hale de Richmond, qui siège à la Cour Suprême du Royaume-Uni
(au moment de cette discussion, à la chambre des Lords dans sa
fonction judiciaire) et qu'on voit d'ailleurs dans le documentaire
précédemment mentionné. Il y est question de toutes sortes de choses,
notamment de la différence entre les États-Unis et le Royaume-Uni dans
l'approche du rôle de la fonction judiciaire, de la sélection des
juges et de leur
indépendance[#], mais aussi du
sexisme qu'elles ont pu subir, et de pas mal de petites anecdotes
amusantes (comme la raison pour laquelle Brenda Hale est devenue la
baronne Hale of Richmond). Les oratrices sont toutes les
deux extraordinaires, et très amusantes à écouter. Je suis aussi
tombé sur cet
exposé de la même baronne Hale sur la Convention européenne des
Droits de l'Homme, l'interprétation de plus en plus large qu'en fait —
et on sait que ça ne plaît pas à tout le monde au Royaume-Uni — la
Cour qui siège à Strasbourg, et les limites que peut avoir cette
extension (et aussi les difficultés pour les juges britanniques de
suivre et de prévoir l'interprétation que fera la Cour européenne des
Droits de l'Homme).
Ajout () :
Parmi les anecdotes racontées dans une de ces vidéos (je ne sais plus
laquelle), il y a le fait que la baronne Hale, qui est, ainsi que tous
ses collègues nommés avant la création de la Cour Suprême du
Royaume-Uni, membre de la chambre des Lords, même si elle n'a pas le
droit d'y siéger effectivement avant de prendre sa retraite en tant
que juge, n'a pas le droit de vote (pour la chambre des Communes).
L'un de ses collègues, dans la même situation, trouve que c'est
particulièrement injuste que son métier de juge (in
fine) le prive du droit de vote, et envisage de déposer un recours
contre le Royaume-Uni devant la Cour européenne des Droits de l'Homme.
Ce qui soulève une subtilité juridique amusante : avant de pouvoir
faire ce recours, il doit avoir épuisé toutes ses voies de recours
internes, ce qui signifie en particulier, devant la Cour Suprême du
Royaume-Uni, où la majorité de ses collègues est dans précisément
cette situation ! — comment une cour peut-elle statuer impartialement
lorsqu'il s'agit précisément de décider si le traitement des juges de
cette cour est contraire aux droits de l'Homme ?
[#] J'ai beaucoup aimé
la remarque suivante : quand on a retiré
au Lord Haut
Chancelier de Grande-Bretagne, et qui est, de fait, le
ministre de la Justice du Royaume-Uni, ses fonctions judiciaires (en
même temps que ses fonctions législatives de président de la chambre
des Lords), il y a eu deux points de vue différents : l'un consistant
à dire que c'était un progrès pour l'indépendance judiciaire (c'était
bien le but de la réforme), mais un autre consistant à dire que
c'était une attaque contre l'indépendance judiciaire, puisque
cela voulait dire que les juges n'auraient plus l'un des leurs au sein
du gouvernement pour faire valoir leur point de vue.
Quelques réflexions à 0.02¤ sur les traditions du Royaume-Uni (et la chambre des Lords)
Peut-être parce que je suis citoyen d'une ancienne colonie du
Royaume-Uni qui en partage encore le souverain et qui en a imité une
partie du cérémonial constitutionnel, j'ai une certaine fascination
pour les institutions et traditions
du pays qui peut se targuer d'avoir, entre autres choses,
la plus vieille
monnaie du monde, et probablement
les plus
anciennes lois encore en vigueur. Ou peut-être au contraire
est-ce parce que je suis aussi citoyen d'un autre pays qui a coupé la
tête à son roi et qui ne semble jamais s'en être complètement remis
(et donc regarde avec envie outre-manche ces gens qui n'ont jamais eu
de constitution écrite pendant que la France en a
changé tous
les quinze ans en moyenne depuis sa première révolution).
Ou peut-être encore est-ce parce qu'à force de croiser sur Internet
des citoyens des États-Unis d'Amérique si fiers d'appartenir à la plus
ancienne démocratie du monde il est amusant de leur rappeler que le
pays dont ils ont fait sécession avait fait sa dernière révolution
quelque chose comme 88 ans avant la leur, et intéressant de leur
demander depuis combien de temps, au juste, le Royaume-Uni est une
« démocratie », parce que l'impossibilité de répondre à cette question
illustre
bien la
difficulté à définir ce que signifie, au juste, la plus
ancienne démocratie du monde. Ou peut-être est-ce juste que je
suis un traditionaliste qui s'assume mal — à part le Saint-Siège, il
n'y a vraiment que le Royaume-Uni qui peut se targuer d'une telle
continuité dans ses institutions.
Mais cette dernière question, depuis quand le Royaume-Uni est-il
une démocratie ?, est intéressante, parce qu'à chaque fois qu'on
pose ce genre de questions s'agissant de ce pays, la réponse est
toujours la même : c'est impossible de savoir exactement parce que les
choses ont évolué lentement. Il est aussi difficile de dire, par
exemple, à quel
moment la
peine capitale a été abolie au Royaume-Uni (la réponse la plus
correcte semble être 1998, mais on conviendra que vu que la dernière
exécution remonte, en fait, à 1964, cette date se défend aussi). Il
est impossible de dire qui était le premier Premier ministre du
Royaume-Uni (ou, si ça devait être avant 1707, d'Angleterre), et
d'ailleurs on ne sait même pas au juste
quand le terme de Premier
ministre est apparu.
C'est entre autres pour ça que je suis persuadé que le Royaume-Uni,
s'il devait un jour abolir la royauté, ne le ferait pas comme le font
les autres pays qui font ce genre de choses (c'est-à-dire en changeant
de régime), mais au contraire en gardant l'illusion de la continuité.
Car les fictions juridiques, et notamment celle de la
continuité, sont une clé de la tradition historique et juridique de ce
pays : on n'abolit pas les choses, on les vide de leur substance pour
mettre quelque chose d'autre à la place, souvent en maintenant la
fiction que ces nouvelles choses sont faites par délégation
pour la première. C'est ainsi que le souverain a perdu ses pouvoirs
en maintenant l'illusion de les avoir
encore[#] : ils ont été
transférés au Premier ministre, sur le conseil duquel le
souverain agit en matière constitutionnelle. Et si on devait abolir
complètement la royauté, on le ferait sans doute sans abolir la
couronne et sans renommer le royaume en république, mais en déclarant
simplement le trône vacant et en élisant un régent qui serait de
fait président et chef d'État mais de droit remplaçant d'un
monarque désormais inexistant. D'ailleurs, je retrouve exactement
cette idée chez un auteur de science-fiction éminemment anglais :
President: full title President of the Imperial Galactic
Government. The term Imperial is kept though it is now an
anachronism. The hereditary Emperor is nearly dead and has been so
for many centuries. In the last moments of his dying coma he was
locked in a statis field which keeps him in a state of perpetual
unchangingness. All his heirs are now long dead, and this means that
without any drastic political upheaval, power has simply and
effectively moved a rung or two down the ladder, and is now seen to be
vested in a body which used to act simply as advisers to the Emperor —
an elected Governmental assembly headed by a President elected by that
assembly.
— Douglas Adams, The Hitchhiker's Guide to the Galaxy
(chap. 4)
❦
Mais ce dont je veux surtout parler ici, c'est de la chambre des
Lords. Parce que s'il y a d'autres pays européens qui sont des
monarchies cérémoniales, la chambre des Lords est une institution
vraiment remarquable par son archaïsme. Jusqu'en 1999(!), il y avait
encore quelque 800 personnes,
les pairs
héréditaires du Royaume-Uni, qui avaient le droit de siéger à
la chambre haute du parlement britannique du simple fait d'avoir
hérité un titre de noblesse. (Je dis environ 800 personnes,
mais je il doit s'agir d'essentiellement 800 hommes, parce que,
normalement, les titres de noblesse héréditaires au Royaume-Uni
s'héritent par primogéniture
mâle[#2].) Ces pairs
héréditaires, même s'ils étaient loin de 800 à siéger en
pratique, formaient ainsi la majorité d'une chambre non
entièrement dénuée de pouvoirs (là aussi, les choses ont évolué
progressivement : depuis
1949, la chambre des Lords ne peut
que[#3] retarder d'un an le
passage d'une loi, mais c'est un pouvoir relativement comparable au
Sénat français, le verrou
constitutionnel en moins), et c'est bien parce qu'ils faisaient de
l'obstruction parlementaire que Tony Blair a décidé de réformer cette
chambre haute.
Je passe plusieurs jours à paramétrer une surface cubique
Un des paradoxes de la manière dont je gère (mal !) mon temps est
que quand je n'ai pas de choses importantes et urgentes qui m'occupent
de façon pressante, toutes sortes de petites choses moins importantes
ou moins urgentes que j'ai laissé de côté pendant d'autres périodes
percolent alors à la surface, et j'ai l'impression d'être presque plus
débordé. D'autant plus que le temps que prennent ces choses n'est pas
forcément évident à évaluer. Ainsi l'exemple d'un calcul que j'ai
commencé de façon très accessoire suite à une question d'un collègue,
que je pensais pouvoir traiter assez rapidement, et qui m'a finalement
obsédé pendant à peu près dix jours, à m'énerver de ne pas arriver à
faire ce que je voulais et de croire N fois avoir trouvé le
bon bout pour tomber en fait dans un cul-de-sac, au point que j'en ai
perdu le sommeil pendant une nuit.
D'autant plus que ce n'était pas tellement le résultat du calcul
qui m'intéressait, et dont je suis totalement certain qu'il est connu
depuis Klein, Cayley, Clebsch ou, au pire, Segre, et qu'il figure dans
quantité de livres ou d'articles, mais d'y arriver moi-même, et de
façon systématique, sans essayer de « deviner » le résultat (qui, a
posteriori, était éminemment devinable), bref, de vérifier que je
savais mener ce calcul à bien. Apparemment, la réponse est : oui, j'y
arrive, mais très difficilement (et je ne suis pas certain d'avoir été
complètement systématique, au final).
Mais je crois qu'il est important pour un mathématicien, en tout
cas pour un géomètre algébriste, d'essayer de faire des calculs
parfois. Même, ou plutôt surtout, en utilisant un ordinateur : comme
l'a écrit Knuth, Science is knowledge which we
understand so well that we can teach it to a computer, et
l'intérêt d'essayer d'expliquer quelque chose à un ordinateur est de
vérifier qu'on le comprend soi-même bien (à défaut d'ordinateur, un
étudiant neuneu peut être utile, ou un post de
blog ). Donc, vérifier qu'on sait passer d'une
incantation magique comme une surface cubique est, géométriquement,
l'éclaté du plan
projectif en six points en position générale (et ces 6 points, les 15
droites passant par deux d'entre eux, et les 6 coniques par cinq
d'entre eux, forment les 6+15+6 = 27 droites de la surface
cubique) à une suite de calculs qui donnent le paramétrage d'une
surface donnée, c'est vérifier qu'on a compris l'incantation.
Bon, j'avoue, je dis ça pour essayer de me convaincre que mon
calcul était difficile, or il ne l'était pas, ou du moins, il n'aurait
pas dû l'être vu que j'ai passé troisquatre
cinq ans à faire une thèse sur les (hyper)surfaces cubiques et que
j'en ai même fait
un DVD.
Bref.
Le but, si on veut, est de décrire (paramétrer) toutes les
solutions rationnelles de l'équation z₁³ + z₂³
+ z₃³ = 1, autrement dit, toutes les façons d'écrire 1
comme somme des cubes de trois rationnels (en fait, ce serait plutôt
−1, mais ça n'a pas d'importance, il suffit de changer les signes).
Pour donner un peu de contexte sur ces sortes d'équations
diophantiennes, il faut que j'explique ce qui se passe pour les
problèmes analogues s'agissant de la somme de deux carrés, de trois
carrés, et de deux cubes.
Je devrais donc commencer par parler des solutions rationnelles de
l'équation z₁² + z₂² = 1 (les points
rationnels sur le cercle unité si on considère
que z₁ représente l'abscisse et z₂ l'ordonnée)
et de leur paramétrage. Les solutions rationnelles de z₁²
+ z₂² = 1 sont données par z₁ =
(1−t²)/(1+t²) et z₂ =
2t/(1+t²) pour t parcourant les
rationnels (on obtient exactement toutes les solutions comme ça si on
convient en outre que t=∞ donne
(z₁,z₂)=(−1,0) ; la réciproque est donnée
par t = z₂/(1+z₁) =
(1−z₁)/z₂). Ces formules peuvent se relier aux
formules donnant le cosinus et le sinus d'un angle θ en
fonction de la tangente de l'angle moitié (attention !, je ne prétends
pas que l'angle θ lui-même soit rationnel, ni même que sa
valeur ait un intérêt quelconque dans le problème). La figure
ci-contre (si votre navigateur vous la montre et que vous arrivez à la
déchiffrer) est censée illustrer ce paramétrage, figure sur laquelle
j'ai pris t=1/3, qui donne la solution z₁=4/5
et z₂=3/5 (on a (4/5)² + (3/5)² = 1, c'est-à-dire que le
point (4/5,3/5) est sur le cercle unité, ou, si on préfère chasser les
dénominateurs, 4² + 3² = 5²). Ces formules (le « paramétrage
rationnel d'une conique par une droite de pente variable par un de ses
points ») sont une sorte de pons asinorum de la
géométrie arithmétique, et avec un tout petit peu de mauvaise foi on
peut les attribuer à Pythagore ou à Euclide (dans la recherche des
« triplets pythagoriciens », c'est-à-dire des
solutions entières de l'équation Z₁²
+ Z₂² = Z₀² : le fait que le 4² + 3² = 5²,
c'est-à-dire que le triangle de côtés entiers 4,3,5 est rectangle, est
connu depuis très longtemps, et la recherche de solutions analogues
intéressait les mathématiciens dès l'antiquité). Il est donc assez
naturel de se demander ce qui se passe si on change un petit peu
l'équation.
La même technique que ci-dessus marche mutatis
mutandis si on cherche les solutions rationnelles
de z₁² + z₂² + z₃² = 1 (les points
rationnels sur la sphère unité) ou même pour n'importe quel nombre de
variables : on s'inspirera de
la projection
stéréographique de la sphère pour arriver à quelque chose
comme z₁ =
(1−v²−w²)/(1+v²+w²)
avec z₂ = 2v/(1+v²+w²) et
avec z₃ = 2w/(1+v²+w²)
pour v et w rationnels (je passe sous silence
des petites subtilités notamment sur ce qui arrive « à
l'infini »).
Si on remplace les carrés par des cubes, en revanche, les choses
sont très différentes : l'équation z₁³ + z₂³ =
1 n'a pas de solution rationnelle autre que les deux
évidentes (1,0) et (0,1), cela a été démontré par Euler en 1770 (en
montrant le cas particulier n=3 du théorème de Fermat,
c'est-à-dire que Z₁³ + Z₂³ = Z₀³ n'a
pas de solution entière). • Mais en ajoutant une variable,
l'équation z₁³ + z₂³ + z₃³ = 1 a de
nouveau quantité de solutions rationnelles, et mon calcul consistait
essentiellement à en trouver le paramétrage :
(Je vais expliquer qu'on peut écrire ces formules de façon un peu
plus jolie !) Par exemple, v=2 et w=3 donnent
la solution z₁=−5/4, z₂=−3/4
et z₃=3/2, et on a bien (−5/4)³ + (−3/4)³ + (3/2)³ = 1, ou,
si on préfère chasser les dénominateurs, (−5)³ + (−3)³ + 6³ = 4³, ou
encore, si on est resté un peu en retard sur les derniers progrès
mathématiques et qu'on n'aime pas les nombres négatifs, 6³ = 5³ + 3³ +
4³ (au niveau des entiers naturels, les formules ci-dessus produisent
donc plein de cubes égaux à la somme de trois autres cubes, ou, selon
les signes, de sommes de deux cubes égaux à une autre telle somme).
Remarquer que ces formules, comme celles que j'ai données plus haut
pour le paramétrage rationnel du cercle ou de la sphère, permettent
non seulement de trouver des solutions rationnelles, mais aussi
d'approcher une solution réelle par une solution rationnelle (il
suffit d'appliquer la « réciproque » sur les réels, d'approcher les
paramètres, et d'appliquer la formule directe). Par exemple, si je
veux trois entiers « assez proches » dont la somme des cubes est
encore un cube, je pars de la solution réelle
où z₁, z₂, z₃ valent 3−1/3
≈ 0.6933612744, pour laquelle les formules réciproques me
donnent v ≈ −1.4422495703 et w ≈ 2.0800838231,
qui sont proches de −450/312 et 649/312 respectivement, et en
appliquant les formules directes avec ces deux rationnels, on trouve,
après avoir chassé les dénominateurs, 1403846621³ + 1403905879³ +
1403840755³ = 2024722855³, et ce n'est pas évident de trouver des
choses comme ça autrement qu'en utilisant ce genre de techniques.
(Évidemment, c'est plus impressionnant avec le paramétrage
rationnel du cercle : si vous cherchez des triangles rectangles à
côtés entiers dont les angles non-droits soient proches de 45°, on
remplacera t dans les formules donnant le paramétrage
rationnel du cercle par
les approximants
successifs de √2 − 1, et on obtient ainsi successivement 3²+4²=5²,
21²+20²=29², 119²+120²=169², 697²+696²=985², 4059²+4060²=5741², etc.,
où à chaque fois les deux carrés sommés sont non seulement proches
mais même consécutifs — je ne sais pas
si cette suite était connue des
anciens Grecs.)
Et j'avoue que je suis bon public pour ce genre de choses, parce
que j'ai tendance à regarder
les images
de cette exposition universelle (ou d'autres expositions
universelles passées,
comme celle
de Paris de 1900
ou de
1937) avec la nostalgie si particulière d'une époque que je n'ai
pas connue. Pourtant, je ne suis pas spécialement tenté d'aller à
Milan où a lieu une
exposition universelle en ce moment
(disons-le franchement, nourrir la planète, c'est chiant, ça
ne me fait pas rêver) : est-ce parce que notre vision de l'avenir,
l'optimisme qu'on a pu avoir d'être sur le droit chemin vers le
meilleur des mondes[#], a
changé, ou est-ce simplement une question de nostalgie qui fait que
l'avenir paraît toujours plus radieux dans le passé que celui que
notre présent nous propose ? (ou, variante, une question de
génération : que l'avenir promis par les époques qu'on n'a pas connues
paraît toujours plus rose que celui de la nôtre).
Je n'ai pas vraiment de réponse à cette question, qui est sans
doute trop vague pour en admettre une. Mais j'ai tendance à
soupçonner que deux ans après la crise des missiles de Cuba, l'avenir
paraissait un peu plus inquiétant que
le Duck
and Cover de la décennie précédente ; j'ai tendance à
penser que si
le steampunk (et
ses variantes
pour les époques suivantes : decopunk, atompunk et autres choses
rigolotes à chercher dans Google images) a du succès, c'est parce que
nous gardons de ces futurs antérieurs exactement ce que nous voulons
en garder. Peut-être que les générations futures (s'il y en a !)
garderont comme souvenir de notre époque non pas notre mélange de
défaitisme et d'incapacité à agir concernant les problèmes écologiques
et géopolitiques majeurs, mais les zoulies images qu'on peut trouver
dans certains films de science-fiction que nous produisons encore (ou
qu'on
peut trouver
en ligne et qui prouvent que les gens rêvent encore de quelque
chose).
Le film, cependant, part de l'idée que nous avons effectivement
perdu une forme d'optimisme dans l'avenir qui eut prévalu autrefois.
Forcément, j'ai aimé l'évocation de cette forme d'optimisme, et j'ai
globalement bien aimé le film, mais il y avait quelque chose qui me
dérangeait, et
la critique
qu'en fait le
blog Paleofuture
(que j'ai peine à croire que je n'ai encore jamais mentionné ici, et
que j'en profite donc pour recommander) met exactement le doigt dessus
(je recopie juste le passage concerné, qui ne contient guère de
spoiler) :
The movie becomes an ouroboros of retro-futurism — a jetpack eating
itself. We hear again and again that nobody dreams about the shiny,
fantastic futures anymore. But instead of showing viewers those
futures, they spend the better part of two hours complaining that
nobody dreams of those shiny, fantastic futures anymore.
Tomorrowland is a mere shadow of the future we wanted
to see. It could've been a film about a fantastic, futuristic world
come to life. Instead it was a 2-hour lecture about our lack of
optimism, only hinting briefly at the fun and excitement we're
supposed to be dreaming of.
Il y a néanmoins quelques séquences — relativement courtes — où les
personnages s'amusent effectivement dans un monde qui combine
l'optimisme de l'avenir des années '60 et le raytracing des
ordinateurs modernes, et rien que pour ces séquences, ça vaut
peut-être la peine de voir le film.
[#] Je paraphrase ici formulation tirée d'un texte que j'aime
beaucoup de Stefan Zweig (Die Welt von Gestern
(Erinnerungen eines Europäers), c'est-à-dire Le Monde
d'hier (Souvenirs d'un Européen)), entièrement consacré à
l'esprit, à la fois optimiste mais en même temps incapable de
comprendre ses propres tâches aveugles, de la Vienne du début du XXe
siècle, vu à travers le regard du témoin de la montée du nazisme et
qui ne va pas tarder à se suicider. Voici ce qui pourrait sans doute
caractériser l'esprit de l'exposition universelle de 1900 :
Das neunzehnte Jahrhundert war in seinem liberalistischen
Idealismus ehrlich überzeugt, auf dem geraden und unfehlbaren Weg zur
„besten aller Welten“ zu sein. Mit Verachtung blickte man auf die
früheren Epochen mit ihren Kriegen, Hungersnöten und Revolten herab
als auf eine Zeit, da die Menschheit eben noch unmündig und nicht
genug aufgeklärt gewesen. Jetzt aber war es doch nur eine
Angelegenheit von Jahrzehnten, bis das letzte Böse und Gewalttätige
endgültig überwunden sein würde, und dieser Glaube an den
ununterbrochenen, unaufhaltsamen „Fortschritt“ hatte für jenes
Zeitalter wahrhaftig die Kraft einer Religion; man glaubte an diesen
„Fortschritt“ schon mehr als an die Bibel, und sein Evangelium schien
unumstößlich bewiesen durch die täglich neuen Wunder der Wissenschaft
und der Technik. In der Tat wurde ein allgemeiner Aufstieg zu Ende
dieses friedlichen Jahrhunderts immer sichtbarer, immer geschwinder,
immer vielfältiger. Auf den Straßen flammten des Nachts statt der
trüben Lichter elektrische Lampen, die Geschäfte trugen von den
Hauptstraßen ihren verführerischen neuen Glanz bis in die Vorstädte,
schon konnte dank des Telephons der Mensch zum Menschen in die Ferne
sprechen, schon flog er dahin im pferdelosen Wagen mit neuen
Geschwindigkeiten, schon schwang er sich empor in die Lüfte im
erfüllten Ikarustraum.
Tentative de traduction par mes soins :
Le dix-neuvième siècle, dans son idéalisme libéral, était
sincèrement convaincu d'être sur la route rectiligne et infaillible
vers le « meilleur des mondes ». C'est avec dédain qu'on considérait
les époques antérieures, avec leurs guerres, leurs famines et leurs
révoltes, comme un temps où l'humanité était encore mineure et
insuffisamment éclairée. Ce n'était désormais qu'une question de
décennies jusqu'à ce que le dernier mal et la dernière violence soient
définitivement surmontés, et cette croyance en un « Progrès »
ininterrompu et irrésistible avait véritablement en ce temps-là la
force d'une religion ; on croyait en ce « Progrès » déjà plus qu'en la
Bible, et son évangile semblait irréfutablement démontré à travers les
merveilles quotidiennement nouvelles de la Science et de la Technique.
En effet, une ascension générale, à la fin de ce siècle paisible,
devenait toujours plus visible, toujours plus rapide, toujours plus
variée. Dans les rues, la nuit, au lieu des lumières pâles,
brillaient des lampes électriques ; les magasins portaient leur nouvel
éclat tentateur depuis les grandes artères jusque dans les banlieues ;
déjà, grâce au téléphone, les hommes pouvaient parler au loin, déjà
ils s'y élançaient dans des voitures sans chevaux avec une vitesse
nouvelle, déjà ils se projetaient dans les airs en accomplissant le
rêve d'Icare.
Considérons les questions suivantes, dont l'énoncé ne fait
pratiquement appel qu'à des notions de niveau collège (quitte à les
reformuler ou spécialiser un tout petit peu : par exemple, j'ai
écrit convexe dans la seconde, mais si on veut, on peut
considérer des cas particuliers comme un triangle, rectangle ou
ellipse, pour simplifier) :
Une valise est contenue dans une autre : montrer que la somme des
trois dimensions de la valise contenue est inférieure à la somme des
trois dimensions de la valise contenante. Ou, plus formellement : si
un parallélépipède rectangle (dans l'espace euclidien de dimension 3)
est inclus dans un autre (on ne demande pas que les côtés des
deux parallélépipèdes soient parallèles), alors la somme des trois
côtés du contenu est inférieure [i.e., inférieure ou égale] à celle
des trois côtés du contenant.
Si deux courbes fermées sans intersection (i.e., des
courbes de
Jordan) dans le plan délimitent des domaines convexes, l'une étant
complètement contenue dans l'autre (i.e., le domaine convexe délimité
est inclus), montrer que la longueur de courbe contenue est inférieure
à la longueur de la courbe contenante. Idem dans l'espace : si deux
convexes de l'espace sont inclus l'un dans l'autre, alors la surface
du bord du convexe contenu est inférieure à la surface du bord du
convexe contenant. Idem en n'importe quelle dimension.
On projette un cube orthogonalement sur un plan choisi
aléatoirement (uniformément) : quelle est l'espérance de la surface de
la projection ? (I.e., quelle est l'« ombre moyenne » d'un cube ?)
On pince un cube entre deux plans parallèles dont la direction est
choisie aléatoirement : quel est l'écart entre ces deux plans ?
(I.e., quel est la largeur moyenne d'un cube selon une direction tirée
au hasard ?)
Ces questions ont ceci en commun que, selon le niveau de réflexion
qu'on leur accorde, elles semblent faciles (leur énoncé est tout à
fait élémentaire), puis difficiles (on ne sait pas par quel bout les
aborder), puis faciles (quand on les prend bien) : elles ont aussi
ceci en commun qu'elles sont toutes résolubles grâce à la même notion
mathématique, celle de volume intrinsèque d'un convexe
(ou intégrale de quermaß, c'est la même chose à une constante
et une renumérotation près) : c'est une notion que je trouve très
jolie et naturelle, pas du tout compliquée à expliquer, et qui semble
bizarrement peu connue même des mathématiciens en-dehors des
spécialistes de la convexité ou de la géométrie
intégrale/stochastique, alors qu'on peut en tirer des choses très
simples (comme l'illustrent les problèmes ci-dessus). Bon, peut-être
qu'en fait tout le monde connaît, et que j'étais le dernier à être mis
au courant (il y a environ quatre ans, quand j'ai entendu parler de
ces choses-là pour la première fois), mais ma réaction a
été pourquoi aucun cours de maths que j'ai suivi ne m'a présenté ce
concept vraiment naturel et intéressant ?!. Il y a toutes sortes
de façon de l'approcher, je vais me contenter de donner les résultats
basiques qui me semblent les plus importants.
Très grossièrement, l'idée est qu'à côté du volume (de
dimension n) et de la surface (de dimension n−1,
où n est la dimension ambiante — en fait, on prendra plutôt
la demi-surface pour une raison de cohérence d'ensemble), on peut
définir (pour un convexe compact) une sorte de « mesure » en chaque
dimension entre 1 et n ; dans le cas d'un parallélotope
(pas forcément rectangle, mais imaginons-le rectangle pour fixer les
idées), le i-ième volume intrinsèque est égal, à une
constante près (1/2i) à la somme des
volumes i-dimensionnels (longueur, surface, volume, etc.)
de toutes les faces de dimension i du parallélotope.
Voici une façon d'approcher cette notion. Si K est un
convexe compact dans l'espace euclidien de dimension n, on
peut considérer K+B(ρ) (où B(ρ)
désigne la boule fermée centrée en l'origine et de rayon ρ,
c'est-à-dire) l'ensemble des points situés à distance ≤ρ
de K, autrement dit l'épaississement de K
jusqu'à distance ρ, ou simplement la « boule » (mais
j'éviterai ce terme) centrée sur K et de
rayon ρ. On s'intéresse au volume [i.e., à la mesure de
Lebesgue] V(K+B(ρ)) de cet ensemble de points :
on peut montrer que c'est un polynôme en ρ
(pour ρ≥0), et ce sont les coefficients de ce polynôme qui
vont m'intéresser. Il est évident, en considérant séparément les
cas ρ=0 et ρ très grand, que le coefficient
constant (donc la valeur pour ρ=0) est simplement le volume
V(K) de K, et que le terme dominant est le
volume V(B(ρ)) de la n-boule de
rayon ρ, que je vais noter
𝒱n·ρn
avec 𝒱n le volume de
la n-boule unité
(qui
vaut πn/2/(n/2)!, mais ce ne sera pas très
important). On peut aussi se convaincre, en considérant le
comportement pour ρ très petit mais non nul (disons, la
dérivée en ρ=0), que le coefficient de degré 1 est la
surface de K (c'est-à-dire la mesure
(n−1)-dimensionnelle de son bord).
Il y a quatre ans, j'avais
écrit cette entrée pour me plaindre
que je n'arrivais pas à faire fonctionner la 3D et le
WebGL sous GNU/Linux parce que que
Personne N'Y Comprend Rien® : ce n'est pas la peine de la (re)lire,
parce que je vais surtout me plaindre ici que les choses sont encore
largement incompréhensibles. Mais pour tâcher d'être un peu
constructif, je vais quand même rapporter les rares choses que j'ai
quand même réussi à comprendre. (Je souligne : mon grief n'est pas
tant que les choses ne marchent pas — globalement, elles ne marchent
pas si mal — mais que c'est si difficile de
comprendre comment elles marchent.)
Pour fixer la terminologie pour ceux qui ne sont pas au courant des
derniers gadgets à la mode, je rappelle que ce que j'appelle la
3D, c'est un ensemble d'interfaces graphiques permettant
d'effectuer du dessin principalement (quoique non exclusivement)
orienté vers le tracé d'images tridimensionnelles (c'est-à-dire, plus
exactement, de projections en deux dimensions d'images
tridimensionnelles) — l'opération de base étant typiquement le tracé
d'un triangle en projection (on trace des formes plus complexes en
les triangulant), l'intérêt étant notamment que le mécanisme
3D va s'occuper de ne tracer que les triangles visibles et pas ceux
qui sont masqués par d'autres. Les calculs peuvent être faits par le
processeur principal, ou par des circuits dédiés dans la carte
graphique, et dans ce dernier cas on parle de 3D accélérée ou
de 3D en matériel. Sinon, on parle de
3D non-accélérée ou émulée ou en logiciel.
Faire de la 3D accélérée nécessite un chipset graphique correctement
supporté ; faire de la 3D émulée (=logicielle), en revanche, devrait
être possible sur absolument tous les systèmes — en contrepartie,
c'est plus lent. Je dis devrait, parce que ce n'est pas
forcément évident de trouver comment il faut s'y prendre en
pratique.
L'interface dominante pour faire de la 3D (et en tout cas celle qui
servira sous Unix) s'appelle OpenGL, et il y a une
variante d'OpenGL connue sous le nom de
WebGL, qui rend ces fonctions graphiques 3D disponibles
aux pages Web, c'est-à-dire, aux programmes JavaScript. De plus en
plus de pages Web dynamiques se servent de ces fonctionnalités
WebGL, par exemple le
nouveau Google maps (que je
trouve épouvantablement mauvais par rapport à l'ancien, mais c'est un
autre problème), même s'il y a un mode lite qui
n'utilise pas WebGL et qui sera activé si celui-ci n'est
pas disponible. J'avais moi-même écrit
(cf. cette entrée passée)
un petit jeu de
labyrinthe en JavaScript utilisant WebGL, et qui peut
servir de test extrêmement simpliste pour vérifier que
WebGL fonctionne au moins minimalement (sinon, l'exemple
le plus simple qui puisse servir de test standardisé est
probablement cette page qui doit
afficher un bête cube qui tourne).
J'ai cru comprendre les choses suivantes. Je rappelle que sous
Unix (et notamment sous GNU/Linux, au moins avant
l'arrivée de Wayland), l'affichage graphique passe par un
programme appelé le serveur X[11], qui centralise les accès à
la carte graphique, les programmes voulant faire de l'affichage étant
alors des clients X, qui parlent au serveur X pour lui
demander d'afficher tel ou tel truc. J'ai cru comprendre,
donc, qu'il existe quatre mécanismes possibles pour faire de la 3D
dans le cadre X11 :
on peut faire de la 3D émulée (c'est-à-dire, non accélérée), et
pour ça, il y a deux approches :
soit l'émulation est faite au niveau du serveur X, qui prétend
donc avoir des capacités 3D, et qui reçoit des commandes
OpenGL (≈GLX) de la part du client, et
effectue les calculs 3D de son côté (dans ce cas de figure, le
client X n'a même pas à savoir si la 3D est accélérée ou non : il fait
des appels OpenGL et le serveur X se débrouille comme il
peut avec le matériel derrière),
soit l'émulation est faite au niveau du client X, qui fait les
calculs avant de les envoyer au serveur X (dans ce cas de figure, le
serveur X n'a rien à savoir de la 3D, il ne reçoit que des ordres de
tracé 2D) ;
soit le serveur X parle à une carte graphique capable de faire de
la 3D accélérée, reçoit des commandes OpenGL
(≈GLX) de la part du client et les transmet à la carte
graphique (ou plutôt, au pilote pour la cate graphique qui est dans le
noyau Linux), en convertissant éventuellement au passage certaines
opérations (dans ce cas de figure, le client voit exactement la même
chose que dans le cas (1a) ci-dessus, à savoir, il parle
OpenGL à un serveur X qui se débrouille comme il peut
derrière) ;
soit enfin le client parle directement à la carte graphique
capable de faire de la 3D accélérée : le client négocie avec le
serveur X le droit de parler à la carte graphique, et il doit aussi
recevoir cette possibilité de la part du pilote noyau, et alors le
serveur X se contente de laisser le client s'occuper d'un bout de
l'écran (une fenêtre, un tampon graphique dans la carte graphique, je
ne sais quoi) (on notera que ce mécanisme est probablement plus rapide
que tous les précédents, mais il a l'inconvénient d'exiger que le
client tourne sur la même machine que le serveur).
J'ai repris la typologie de l'entrée précédente que j'avais écrit
sur ce sujet (en gros du plus lent au plus rapide, sachant qu'entre
(1a) et (1b) ce n'est pas certain), mais elle n'est sans doute pas
idéale, et il sera peut-être plus clair de la disposer sous forme du
tableau suivant :
Indirect rendering
Direct rendering
3D émulée (=logicielle)
(1a)
(1b)
3D accélérée (=matérielle)
(2)
(3)
J'ai déjà expliqué ce que signifie 3D émulée et accélérée.
Le direct rendering fait référence au mécanisme
(3), et peut-être aussi à (1b), c'est-à-dire au fait que c'est le
client qui gère la 3D directement (soit en parlant au matériel qui va
faire les calculs, soit en faisant lui-même les calculs). Lorsque
c'est le serveur X qui gère la 3D en recevant des commandes
OpenGL du client, on parle d'indirect
rendering.
Le mode que tout le monde essaye d'utiliser, puisque c'est le plus
rapide, c'est celui que j'ai appelé (3) : l'accélération matérielle
avec rendering direct. À cause de ça, il est assez difficile de
trouver des informations sur les autres mécanismes (comment les
détecter, ou comment les utiliser).
Je répète que je ne suis pas sûr d'avoir bien compris (ni si ceci
est toujours d'actualité). Même si j'ai bien compris, je n'ai pas de
source fiable pour confirmer mon analyse : personne n'a l'air foutu de
faire un petit tableau clair montrant les quatre cas de figure que je
viens de décrire ; le plus proche que je trouve d'une confirmation
est cette page
qui affirme bien que all four combinations of
direct/indirect software/hardware rendering are possible, ce qui
semble coller avec les quatre cases de mon tableau ; elle explique par
ailleurs comment distinguer les cas (1a|2), (1b) et (3) (mais pas
comment départager (1a) et (2)) : pour savoir si on est en rendering
direct ou indirect, il faut chercher la ligne direct
rendering dans la sortie de glxinfo, et pour
distinguer (1b) du reste, on devrait voir
apparaître Software Rasterizer dans la
ligne OpenGL renderer string (mais
je soupçonne que cette explication est partielle et cache des
choses, cf. plus bas).
On en déduit même quelques indications sur comment forcer certains
de ces modes, et l'information semble
être sur cette page :
mettre LIBGL_ALWAYS_INDIRECT à 1 dans
l'environnement force le passage à la colonne de gauche, et
mettre LIBGL_ALWAYS_SOFTWARE à 1 force le
passage à (1b) (je ne sais pas comment les deux interagissent : je
crois que c'est la première qui a priorité ; on ne peut logiquement
pas choisir entre (1a) et (2) côté client, ça doit être dans la
configuration du serveur — mais je ne sais pas où). Ceci étant, chez
moi, LIBGL_ALWAYS_INDIRECT ne marche pas :
vega david ~ $ LIBGL_ALWAYS_INDIRECT=1 glxgears
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 156 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 21
Current serial number in output stream: 23
…je me demande si le mécanisme (2) est encore supporté ou s'il est
tombé en désuétude. Je n'ai pas vraiment envie de pousser mon enquête
trop loin, de peur de faire planter mon serveur X, sur lequel j'ai des
fenêtres ouvertes que je ne veux pas perdre pour le moment.
Ajout () : Si
j'en
crois cette
page, pour que LIBGL_ALWAYS_INDIRECT=1 fonctionne, il
faut mettre l'option IndirectGLX
et/ou AllowIndirectGLX dans la configuration du serveur.
Je n'ai pas testé.
Une chose pas très claire dans l'histoire, c'est le rôle exact joué
par la
bibliothèque Mesa,
qui est responsable de l'interface OpenGL sous les Unix
libres. Celle-ci semble servir à la fois à parler au
matériel (via, sans doute, une autre bibliothèque) et
à faire de l'émulation logicielle. J'ai tendance à imaginer que dans
les cas de figure (1a) et (2), le serveur X doit utiliser la
bibliothèque Mesa (dans le cas (1a), pour faire l'émulation, et dans
le cas (2), pour parler à la carte graphique) alors que le client
utilisera la bibliothèque Mesa dans les cas (1b) et (3) et peut-être
en fait dans tous les cas, mais ça non plus, ce n'est pas clair du
tout.
Par ailleurs, je crois que les choses sont en fait un peu plus
compliquées que ce que suggère la typologie ci-dessus, et qu'il existe
plusieurs variantes de (1b). Notamment, si j'en
crois cette
discussion, où un autre utilisateur tout aussi perdu que moi dans
le dédale des subtilités de Mesa se fait engueuler par des
développeurs qui daignent à peine expliquer les choses, il y a deux
mécanismes pour faire (1b), qui consistent (sous Debian, pour fixer
les idées) à utiliser (1b₁) le paquet libgl1-mesa-swx11,
ou (1b₂) le paquet libgl1-mesa-glx avec le
module/pilote(?) swrast_dri.so — tout ceci n'étant bien
sûr documenté absolument nulle part. Je pense
que LIBGL_ALWAYS_SOFTWARE force le mécanisme (1b₂), mais
je ne suis vraiment sûr de rien. Ce qui est sûr, c'est que chez
moi, glxinfo renvoie OpenGL renderer string:
Gallium 0.4 on llvmpipe (LLVM 3.5, 128 bits) si j'ai
mis LIBGL_ALWAYS_SOFTWARE et Gallium 0.4 on AMD
CAICOS si je ne l'ai pas mis, mais apparemment
jamais Software Rasterizer comme suggéré
par la page
mentionnée plus haut. C'est peut-être un signe de la
différence entre (1b₁) et (1b₂). Je n'en sais pas plus, et je ne
comprends pas grand-chose à ces subtilités.
Ajout () : On
me signale en commentaire l'existence de la variable d'environnement
(évidemment documentée nulle part…) GALLIUM_DRIVER qui,
combinée à LIBGL_ALWAYS_SOFTWARE, permet de choisir
entre softpipe et llvmpipe, deux rasterizers
logiciels différents de Mesa (que je devrais sans doute appeler
(1b₂(i)) et (1b₂(ii))) ; je n'ai aucune idée de la différence entre
eux, ni de si swrast est au même niveau que ces deux-là
ou encore autre chose. D'autre part, j'aurais dû souligner que si on
utilise une carte graphique nVidia avec le pilote propriétaire nVidia,
celui-ci vient avec sa propre version de Mesa, qui ne fonctionne pas
comme le reste, du coup ces diverses variables d'environnement
n'auront pas d'effet (c'est une raison parmi d'autres de ne pas aimer
ce pilote propriétaire).
À part les variables d'environnement servant à configurer la
bibliothèque Mesa, il existe aussi un fichier .drirc (ou
globalement /etc/drirc), lu par Apollon sait qui, dont le
seul semblant de documentation semble
être cette
page (qui ne dit essentiellement
rien), celle-ci
(idem) ainsi que ce que peut afficher la
commande xdriinfo (notamment xdriinfo options
0 et xdriinfo options $(xdriinfo driver 0) si
votre écran s'appelle 0, ce qui est probable), mais tout
ceci est de toute façon assez incompréhensible.
Mais sinon, une autre difficulté est que Firefox (qui est, après
tout, le principal programme sur lequel j'ai envie de faire de la 3D,
de façon à avoir du WebGL qui marche) n'utilise
apparemment pas Mesa. Enfin, ce dont je suis sûr, c'est que Mesa
n'apparait pas dans la liste des bibliothèques chargées en mémoire par
lui dans le /proc/$PID/maps de mes processus Firefox. Du
coup, les variables LIBGL_ALWAYS_INDIRECT
et LIBGL_ALWAYS_SOFTWARE, qui sont lues par Mesa, n'ont
pas de raison a priori de fonctionner sous Firefox : comment
forcer Firefox à faire du rendering indirect ou du rendering
logiciel ? J'avais noté autrefois qu'il fallait faire pointer la
préférence webgl.osmesalib vers le chemin de Mesa (du
genre, /usr/lib/x86_64-linux-gnu/libOSMesa.so sous
Debian) et mettre webgl.prefer-native-gl
à false — mais ça ne semble plus marcher. Mais en
fait, LIBGL_ALWAYS_SOFTWARE a quand même l'air de marcher
chez moi (si j'ouvre about:support, il affiche quelque
chose de différent). Soit c'est parce que Firefox utilise quand même
Mesa de façon cachée (compilé en statique ? ils n'auraient quand même
pas osé ?), soit parce qu'ils ont repris la convention. Au final, je
n'en sais rien, et je suis perdu.
Ajout () : On
me rappelle en commentaire que Firefox
a une
liste blanche/noire de pilotes avec lesquels il accepte/refuse de
fonctionner. Autrefois, on demandait à Firefox d'ignorer cette liste
en mettant MOZ_GLX_IGNORE_BLACKLIST à 1 dans
l'environnement, mais ce n'est pas clair que ce soit encore
d'actualité : maintenant il semble plutôt que ce soit la variable de
configuration webgl.force-enabled qui soit pertinente.
L'effet des autres variables mentionnées m'est complètement obscur
(qu'est-ce que c'est que le layers acceleration
et en quoi est-ce différent de l'accélération 3D ?). Et de nouveau,
je ne sais pas si les variables webgl.osmesalib
et webgl.prefer-native-gl ont encore un sens.
Bref, voilà à peu près ce que j'ai réussi à comprendre, et où je ne
comprends plus. Si par hasard un de mes lecteurs comprend mieux que
moi et peut m'éclairer un point quelconque (ou simplement confirmer
que j'ai bien compris tel ou tel aspect des choses), je lui en serai
très reconnaissant !
On va dire que mon but principal est d'avoir au moins les
fonctionnalités WebGL basiques dans Firefox et
si possible aussi dans Google Chrome, sur toutes les machines que
j'utilise physiquement (c'est-à-dire, le PC qui est chez
moi, celui qui est dans mon bureau, et celui qui est chez mes
parents). Je souligne qu'à défaut de 3D accélérée par la
carte graphique, je suis prêt à me contenter au moins de
3D émulée, si elle marche correctement (c'est plus la
fiabilité que l'efficacité qui m'intéresse). Mon PC chez
moi utilise une carte graphique AMD (ex-ATI)
avec le pilote Linux radeon, ça a l'air de marcher à peu
près correctement depuis que j'ai mis à
jour ma Debian vers la Jessie (8). Mon PC de
bureau utilise une carte graphique nVidia avec le pilote
propriétaire nvidia, et les choses marchouillent aussi à
peu près (même si je voudrais bien me débarrasser de ce pilote, qui
est une horreur). Mon PC chez mes parents, en revanche,
utilise une carte graphique nVidia avec le pilote
libre nouveau, et si le WebGL fonctionnait
(fût-ce lentement) avant la mise à jour de Debian, maintenant ma page
de labyrinthe qui me sert de test affiche n'importe quoi
(pourtant, glxgears semble marcher correctement) ; c'est
peut-être lié à un message d'avertissement me signalant que la
variable force_s3tc_enable a été modifiée par rapport au
défaut (apparemment c'est quelque chose qui se change dans
le .drirc, mais je n'y ai pas touché, donc je n'en sais
rien). Je n'ai pas eu le temps de comprendre les choses en détail
(notamment parce que je ne connaissais pas certaines des choses que
j'ai racontées ci-dessus), mais il est sûr que j'ai encore des choses
à régler.
Notes sur les réseaux euclidiens, et le réseau de Leech
Je mets ici les
transparents d'un exposé que j'ai donné vendredi matin dans le
cadre
d'une journée
Télécom-UPS
(Le Numérique pour tous) s'adressant aux professeurs de
classes préparatoires : le sujet que j'ai évoqué était celui
des réseaux
euclidiens[#] et de leurs
applications en cryptographie. Comme j'ai moi-même appris plein de
choses en préparant cet exposé (entre autres en me plongeant un peu
plus que je ne l'avais fait jusqu'alors dans le célèbre
livre Sphere Packings, Lattices and Groups
des deux mathémagiciens John Conway et Neil Sloane), je n'ai pas
résisté à partir un peu dans tous les sens, et forcément j'avais
beaucoup plus de choses sur mes planches que je ne pouvais en exposer
en une heure : inversement, j'espère que leur lecture peut être
intéressante sans l'exposé oral pour les accompagner.
Je n'ai notamment pas pu m'empêcher d'évoquer (le réseau) E₈, même
s'il n'a aucun rapport avec la crypto dont j'étais censé parler. Ce
qui me fait penser que si j'ai beaucoup parlé de E₈ sur ce blog, soit
de l'algèbre ou du groupe de Lie de
ce nom, soit du système de racines
qui le définit, je n'ai pas vraiment parlé du réseau E₈ (celui
engendré par le système de racines), qui est pourtant un objet plus
simple (dans sa définition sans doute la plus compacte, c'est
l'ensemble {(x₁,…,x₈) ∈ (ℤ⁸∪(ℤ+½)⁸)
: x₁+⋯+x₈ ∈ 2ℤ} des octuplets de réels soit tous
entiers soit tous ½+entiers, et dont la somme est un entier pair) ; et
je n'ai jamais parlé du réseau de Leech de dimension 24 (qui est
pourtant presque aussi ubiquiste dans les mathématiques que E₈, et
peut-être encore plus exceptionnel). Voici une façon concise (mais
peu constructive) de caractériser ces deux objets : si vous vivez dans
un espace de dimension 8 (resp. 24) et que vous cherchez à empiler des
boules toutes identiques, vous remarquerez qu'il y a
une unique façon de mettre
le nombre
maximum de boules autour d'une boule centrale de façon à ce
qu'elle la touchent toutes, à savoir 240 d'entre elles (resp. 196560),
et de plus, une fois réalisé ce motif, il se continue de façon
périodique (chaque boule ayant toujours ce même nombre maximum de
voisines) ; en regardant le centre des boules, vous avez ainsi réalisé
le réseau E₈ (resp. le réseau de Leech ou son symétrique). À part en
dimension 2 où on obtient facilement le réseau hexagonal par la même
construction (en disposant six cercles identiques autour d'un septième
qu'ils touchent tous), les dimensions 8 et 24 sont exceptionnelles, au
moins parmi celles qu'on connaît (j'ignore si on sait dire quelque
chose sur les dimensions telles que l'arrangement maximal de boules
identiques autour d'une boule centrale soit unique et
engendre de plus un réseau, mais il n'y en a pas d'autre que 2,8,24 en
dimension ≤24, et pas d'autre connue : dans les autres dimensions, les
boules ne sont pas du tout rigides — par exemple, en dimension 3, on
peut placer au maximum 12 boules identiques touchant une autre donnée,
mais il y a beaucoup de façons de le faire, et elles peuvent se
déplacer tout en gardant le contact avec la boule centrale).
Ceci étant, si les questions d'empilement de sphère sont
frappantes, elles ne permettent pas vraiment de travailler avec le
réseau de Leech. Sur le modèle de la définition que j'ai donnée
ci-dessus du réseau E₈ (les octuplets de réels, soit tous entiers soit
tous ½+entiers, dont la somme est un entier pair), voici la façon la
plus simple et constructive que je connaisse de définir le réseau de
Leech. Comme il vit en 24 dimensions, il y a 24 coordonnées à donner,
et je disposerai ces 24 coordonnées sur les sommets d'un icosaèdre
régulier (rappelons qu'un icosaèdre régulier a 12 sommets), deux par
sommet, que j'appellerai arbitrairement la coordonnéee rouge et
la coordonnée bleue (pour ce sommet). Le réseau de Leech est
formé des points dont les coordonnées multipliées par √8 sont 24-uplet
d'entiers vérifiant les conditions suivantes : (0) les bits 0 (=bits
de poids faible) de ces 24 entiers sont tous les mêmes (i.e., ils sont
soit tous pairs, soit tous impairs), (1) le bit 1 de l'entier rouge
sur chaque sommet de l'icosaèdre est égal au XOR des bits 1 des
entiers bleus des sommets qui ne sont pas adjacents à lui [la
même chose est alors automatiquement vraie en échangeant bleue
et rouge, et cette condition est une façon de dire que les bits
1 forment un mot
du code de
Golay binaire (24,12,8)], et enfin (2) le XOR des bits 2 de tous
les entiers est égal à leur bit 0 commun [on a déjà dit que les bits 0
sont tous les mêmes]. (Note : le facteur √8 est un simple facteur de
normalisation. Il a pour but d'assurer que le réseau de Leech a un
covolume — c'est-à-dire la valeur absolue du déterminant d'une base —
égal à 1, et alors les produits scalaires de deux vecteurs quelconques
sont toujours entiers.)
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
±?/√8
Le
tableau ci-contre, si mon JavaScript est bien fait, est censé afficher
des vecteurs aléatoires de la plus petite longueur non nulle (à
savoir 2) uniformément choisis parmi les 196560 possibles dans le
réseau de Leech (qui est engendré par eux, c'est-à-dire, est
l'ensemble de toutes les combinaisons entières de ces vecteurs) ; j'ai
laissé non simplifiées des expressions comme 2/√8 (ou 4/√8, qui
apparaît très rarement) pour mieux coller avec la présentation que je
viens de donner. Ici, les coordonnées ont été disposées
en tableau
6×4 parce que c'est plus commode à mettre sur une page Web
qu'un icosaèdre avec deux coordonnées par sommet : si on veut
faire le lien entre ces deux présentations, on peut reprendre
l'étiquetage des cases que j'avais utilisée
dans une entrée récente, et qui est
rappelée en attributs title (i.e., si on passe la souris
au-dessus d'une case), et les disposer sur un icosaèdre de la façon
suivante : en
appelant ♈︎巳
un premier sommet, les cinq sommets adjacents s'appelleront
cycliquement ♑︎寅
– ♒︎未
– ♏︎辰
– ♓︎子
– ♊︎卯,
et les six sommets opposés aux six que je viens de nommer
seront ♎︎亥
et ♋︎申
– ♌︎丑
– ♉︎戌
– ♍︎午
– ♐︎酉
respectivement (à chaque fois, les deux étiquettes que je donne
servent à définir la coordonnée « rouge » et la coordonnée « bleue »
au sommet en question de l'icosaèdre).
Mais bon, il y a quantité de manières de décrire ou de construire
le réseau de Leech (dans un seul chapitre du livre précédemment
mentionné — le chapitre 24, et je soupçonne d'ailleurs que le numéro
n'est pas un hasard —, Conway et Sloane donnent d'ailleurs 23
constructions différentes, une pour chacun des types de trous
profonds [sic] du réseau). C'est un des signes qu'il s'agit d'un
objet mathématique riche et extraordinaire qu'il y ait tellement de
façons de le décrire. En voici une autre : on considère d'abord le
réseau appelé II25,1 (dans l'espace Minkowskien de
dimension 25+1) dont les points sont (exactement comme pour ma
description de E₈ ci-dessus) les 26-uplets de réels, soit tous entiers
soit tous ½+entiers, dont la somme est un entier pair ; dans ce
réseau, on considère le vecteur v = (0,1,2,3,…,24|70), qui,
vu que 70² = 0² + 1² + ⋯ + 24², est orthogonal à lui-même pour le
produit scalaire Minkowskien ; on considère alors les vecteurs de
II25,1 qui sont orthogonaux à v (c'est-à-dire
que la somme des 25 premières coordonnées multipliées par 0,1,2,3,…,24
respectivement, est égale à la dernière multipliée par 70),
modulo v lui-même : le réseau ainsi formé est isométrique
au réseau de Leech. Ou, pour parler en physicien, on se place dans un
espace-temps de relativité restreinte avec 25 dimensions d'espace et 1
de temps, on considère un photon qui se déplace à la vitesse (0/70,
1/70, …, 24/70), et le réseau très simple II25,1, vu par ce
photon (dans l'espace perpendiculaire à son déplacement) est le réseau
de Leech. Le passage entre cette description et la précédente,
cependant, n'est pas évident.
[#] La terminologie
prête vraiment à confusion, parce que le mot français réseau
correspond à la fois à l'anglais network
et lattice, et c'est du second qu'il est
question. Mais l'anglais n'est pas moins ambigu,
puisque lattice correspond à la fois au
français réseau et treillis. Il ne reste plus qu'à
inventer une quatrième sorte d'objet, qui
s'appellerait treillis en français
et network en anglais, et on aura un beau graphe
bipartite complet K(2,2) dans les traductions.