David Madore's WebLog: 2015-06

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.

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

Entries published in June 2015 / Entrées publiées en juin 2015:

↓Entry #2305 [older| permalink|newer] / ↓Entrée #2305 [précédente| permalien|suivante] ↓

(mardi)

Une conversation entre Ruth Bader Ginsburg et la Baronne Hale de Richmond

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.

↑Entry #2305 [older| permalink|newer] / ↑Entrée #2305 [précédente| permalien|suivante] ↑

↓Entry #2304 [older| permalink|newer] / ↓Entrée #2304 [précédente| permalien|suivante] ↓

(dimanche)

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.

↑Entry #2304 [older| permalink|newer] / ↑Entrée #2304 [précédente| permalien|suivante] ↑

↓Entry #2303 [older| permalink|newer] / ↓Entrée #2303 [précédente| permalien|suivante] ↓

(vendredi)

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é trois quatre 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.

[Figure géométrique] 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 :

z₁ = (9 − 9v + 3v² − 3v³ − 3w − 6v·w − 3v²·w + 3w² − v·w² − w³)/(9 − 9v + 3v² − 3v³ + 3w + 6v·w + 3v²·w + 3w² − v·w² + w³)

z₂ = (−9 − 9v − 3v² − 3v³ + 3w − 6v·w + 3v²·w − 3w² − v·w² + w³)/(9 − 9v + 3v² − 3v³ + 3w + 6v·w + 3v²·w + 3w² − v·w² + w³)

z₃ = (9 + 9v + 3v² + 3v³ + 3w − 6v·w + 3v²·w + 3w² + v·w² + w³)/(9 − 9v + 3v² − 3v³ + 3w + 6v·w + 3v²·w + 3w² − v·w² + w³)

vérifient z₁³ + z₂³ + z₃³ = 1 quels que soient v,w,

avec pour réciproque (« presque partout »)

v = (−1 + z₁² − z₂ − z₂² − z₁·z₃ + z₃²)/(z₁·z₂ + z₃)

w = (1 − 2z₁ + z₁² + z₂ − z₁·z₂ + z₂² + z₃ − z₁·z₃ + 2z₂·z₃ + z₃²)/(z₁·z₂ + z₃)

(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.)

↑Entry #2303 [older| permalink|newer] / ↑Entrée #2303 [précédente| permalien|suivante] ↑

↓Entry #2302 [older| permalink|newer] / ↓Entrée #2302 [précédente| permalien|suivante] ↓

(vendredi)

L'avenir n'est-il plus ce qu'il était ? (Tomorrowland et le paléofuturisme)

J'avais oublié de mentionner que je suis aller voir Tomorrowland (À la poursuite de demain en français), un film qu'on pourrait qualifier de paléofuturiste parce qu'il évoque la vision de l'avenir que nous avions autrefois (ou du moins, que les Américains avaient dans les années '60), en l'occurrence spécifiquement celle incarnée par l'exposition [techniquement pas] universelle de New York de 1964 (et dont il reste un immense globe terrestre dans le parc de Flushing Meadows).

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.

↑Entry #2302 [older| permalink|newer] / ↑Entrée #2302 [précédente| permalien|suivante] ↑

↓Entry #2301 [older| permalink|newer] / ↓Entrée #2301 [précédente| permalien|suivante] ↓

(jeudi)

Volumes intrinsèques (quermaß) des convexes

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).

↑Entry #2301 [older| permalink|newer] / ↑Entrée #2301 [précédente| permalien|suivante] ↑

↓Entry #2300 [older| permalink|newer] / ↓Entrée #2300 [précédente| permalien|suivante] ↓

(mardi)

La 3D sous Linux, c'est toujours incompréhensible

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 :

  1. on peut faire de la 3D émulée (c'est-à-dire, non accélérée), et pour ça, il y a deux approches :
    1. 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),
    2. 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) ;
  2. 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) ;
  3. 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 renderingDirect 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.

↑Entry #2300 [older| permalink|newer] / ↑Entrée #2300 [précédente| permalien|suivante] ↑

↓Entry #2299 [older| permalink|newer] / ↓Entrée #2299 [précédente| permalien|suivante] ↓

(lundi)

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.

↑Entry #2299 [older| permalink|newer] / ↑Entrée #2299 [précédente| permalien|suivante] ↑

Continue to older entries. / Continuer à lire les entrées plus anciennes.


Entries by month / Entrées par mois:

2024 Jan 2024 Feb 2024 Mar 2024
2023 Jan 2023 Feb 2023 Mar 2023 Apr 2023 May 2023 Jun 2023 Jul 2023 Aug 2023 Sep 2023 Oct 2023 Nov 2023 Dec 2023
2022 Jan 2022 Feb 2022 Mar 2022 Apr 2022 May 2022 Jun 2022 Jul 2022 Aug 2022 Sep 2022 Oct 2022 Nov 2022 Dec 2022
2021 Jan 2021 Feb 2021 Mar 2021 Apr 2021 May 2021 Jun 2021 Jul 2021 Aug 2021 Sep 2021 Oct 2021 Nov 2021 Dec 2021
2020 Jan 2020 Feb 2020 Mar 2020 Apr 2020 May 2020 Jun 2020 Jul 2020 Aug 2020 Sep 2020 Oct 2020 Nov 2020 Dec 2020
2019 Jan 2019 Feb 2019 Mar 2019 Apr 2019 May 2019 Jun 2019 Jul 2019 Aug 2019 Sep 2019 Oct 2019 Nov 2019 Dec 2019
2018 Jan 2018 Feb 2018 Mar 2018 Apr 2018 May 2018 Jun 2018 Jul 2018 Aug 2018 Sep 2018 Oct 2018 Nov 2018 Dec 2018
2017 Jan 2017 Feb 2017 Mar 2017 Apr 2017 May 2017 Jun 2017 Jul 2017 Aug 2017 Sep 2017 Oct 2017 Nov 2017 Dec 2017
2016 Jan 2016 Feb 2016 Mar 2016 Apr 2016 May 2016 Jun 2016 Jul 2016 Aug 2016 Sep 2016 Oct 2016 Nov 2016 Dec 2016
2015 Jan 2015 Feb 2015 Mar 2015 Apr 2015 May 2015 Jun 2015 Jul 2015 Aug 2015 Sep 2015 Oct 2015 Nov 2015 Dec 2015
2014 Jan 2014 Feb 2014 Mar 2014 Apr 2014 May 2014 Jun 2014 Jul 2014 Aug 2014 Sep 2014 Oct 2014 Nov 2014 Dec 2014
2013 Jan 2013 Feb 2013 Mar 2013 Apr 2013 May 2013 Jun 2013 Jul 2013 Aug 2013 Sep 2013 Oct 2013 Nov 2013 Dec 2013
2012 Jan 2012 Feb 2012 Mar 2012 Apr 2012 May 2012 Jun 2012 Jul 2012 Aug 2012 Sep 2012 Oct 2012 Nov 2012 Dec 2012
2011 Jan 2011 Feb 2011 Mar 2011 Apr 2011 May 2011 Jun 2011 Jul 2011 Aug 2011 Sep 2011 Oct 2011 Nov 2011 Dec 2011
2010 Jan 2010 Feb 2010 Mar 2010 Apr 2010 May 2010 Jun 2010 Jul 2010 Aug 2010 Sep 2010 Oct 2010 Nov 2010 Dec 2010
2009 Jan 2009 Feb 2009 Mar 2009 Apr 2009 May 2009 Jun 2009 Jul 2009 Aug 2009 Sep 2009 Oct 2009 Nov 2009 Dec 2009
2008 Jan 2008 Feb 2008 Mar 2008 Apr 2008 May 2008 Jun 2008 Jul 2008 Aug 2008 Sep 2008 Oct 2008 Nov 2008 Dec 2008
2007 Jan 2007 Feb 2007 Mar 2007 Apr 2007 May 2007 Jun 2007 Jul 2007 Aug 2007 Sep 2007 Oct 2007 Nov 2007 Dec 2007
2006 Jan 2006 Feb 2006 Mar 2006 Apr 2006 May 2006 Jun 2006 Jul 2006 Aug 2006 Sep 2006 Oct 2006 Nov 2006 Dec 2006
2005 Jan 2005 Feb 2005 Mar 2005 Apr 2005 May 2005 Jun 2005 Jul 2005 Aug 2005 Sep 2005 Oct 2005 Nov 2005 Dec 2005
2004 Jan 2004 Feb 2004 Mar 2004 Apr 2004 May 2004 Jun 2004 Jul 2004 Aug 2004 Sep 2004 Oct 2004 Nov 2004 Dec 2004
2003 May 2003 Jun 2003 Jul 2003 Aug 2003 Sep 2003 Oct 2003 Nov 2003 Dec 2003

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]