Gare aux erreurs d’arrondi !

Piste bleue 8 janvier 2016  - Rédigé par  Pierre-Antoine Guihéneuf Voir les commentaires (3)

Un expérimentateur fait appel à un spécialiste des simulations numériques pour l’aider à comprendre l’évolution d’un système physique. Se pose alors le problème de la justesse de ces simulations : est-ce qu’elles décrivent bien le comportement observé en réalité ?

Un problème de mélange

Un expérimentateur dispose d’une boîte, cubique, remplie de liquide. Il dispose aussi d’un robot qui remue la boîte de façon périodique : ce robot fait une combinaison de mouvements pendant un centième de seconde, puis refait exactement cette même combinaison de mouvements au centième de seconde suivant, puis au centième de seconde suivant, etc. Du fait de ces mouvements du robot, le liquide à l’intérieur de la boîte est lui aussi en mouvement.

Cet expérimentateur veut savoir si oui ou non la machine mélange le liquide. On peut imaginer qu’au départ, il a introduit une petite quantité d’une certaine substance dans la boîte (par exemple un colorant), et qu’il veut qu’au bout d’un certain temps, cette substance soit uniformément répartie dans le liquide.

Pour savoir s’il y a mélange ou pas, il décide de suivre la trajectoire d’une molécule au cours du temps : est-ce que cette trajectoire va se répartir uniformément dans la boîte ? Est-ce qu’au contraire, la molécule va avoir tendance à rester dans une petite partie de la boîte ? Dans ce dernier cas, on pourra douter de l’efficacité du mélange...

Le numéricien à la rescousse

Le problème est qu’en pratique, ce n’est pas facile du tout de suivre la trajectoire d’une seule molécule. Notre expérimentateur fait donc appel à un spécialiste des simulations numériques, qu’on appelle aussi « numéricien ». L’expérimentateur demande à ce numéricien de calculer avec un ordinateur la trajectoire d’une molécule du liquide à l’intérieur de la boîte.

On suppose que le numéricien sait calculer le devenir de chaque molécule de liquide à l’intérieur de la boîte : il dispose d’une loi d’évolution $f$ qui, à partir de la position d’une molécule à un moment donné, permet de calculer sa position un centième de seconde plus tard [1] [2]. Autrement dit, en prenant comme unité de temps le centième de seconde, si la molécule de liquide se situe au point $P$ à un temps $t$, alors elle se trouvera au point $f(P)$ au temps $t+1$ : la transformation $f$ permet de déduire les coordonnées de la molécule au temps $t+1$ des coordonnées de cette molécule au temps $t$.

Et si le numéricien veut calculer la position de la molécule au temps $t+2$ ? Eh bien, il lui suffit de commencer par calculer sa position au temps $t+1$, puis d’en déduire sa position au temps $t+2$. En pratique, si la molécule se trouve au point $P$ au temps $t$, le numéricien sait qu’elle se trouvera au point $f(P)$ au temps $t+1$, et donc au point $f(f(P))$ au temps $t+2$ : il lui suffit d’appliquer deux fois la transformation $f$. Ainsi de suite, si le numéricien veut calculer la position de la molécule au temps $t+k$, il lui suffit d’appliquer $k$ fois la transformation $f$ au point de départ $P$ de la molécule.

Notre expérimentateur voudrait donc s’appuyer sur le calcul pour obtenir des informations sur l’efficacité du mélange de la machine.

Quelques hypothèses sur la loi d’évolution

D’un point de vue théorique, il est a priori impossible de répondre à ces questions sans faire un minimum d’hypothèses sur la loi d’évolution $f$. Dans l’esprit d’Henri Poincaré, l’expérimentateur retient quelques propriétés qualitatives du système, et juge raisonnable de faire les suivantes [3] :

  • Deux molécules proches à un temps donné seront proches un centième de seconde plus tard (on dit que $f$ est continue).
  • Si la boîte est pleine de liquide à un moment donné, alors forcément elle l’était déjà avant, et le restera pour toujours (on dit que $f$ est bijective).
  • Le liquide est incompressible (on dit que $f$ préserve le volume), autrement dit si on considère un ensemble de molécules de liquide de la boîte, alors un centième de seconde plus tard cet ensemble de molécules occupera exactement le même volume qu’au départ.

Les transformations $f$ qui satisfont ces hypothèses sont appelées homéomorphismes conservatifs. On va chercher à savoir ce qui se passe pour « la plupart » des transformations [4], des homéomorphismes conservatifs $f$ — autrement dit pour la plupart des lois d’évolution : si on demande à la machine de faire une séquence de mouvements quelconque pendant un centième de seconde, et si on répète cette séquence de mouvements tous les centièmes de seconde, est-ce qu’au bout d’un moment l’intérieur de la boîte sera bien mélangé ? Et est-ce qu’on pourra prévoir s’il y a effectivement mélange à partir des simulations numériques ?

Premières simulations du numéricien

Pour simplifier les choses, le numéricien décide de faire les dessins en 2 dimensions (dans un carré au lieu d’un cube), mais les théorèmes présentés dans cet article restent vrais dans l’espace de dimension 3 [5]. Il choisit aussi de faire les simulations pour une transformation $f$ telle que chaque molécule ne bouge qu’assez peu en un centième de seconde (ce qui semble physiquement raisonnable).

Pour observer la trajectoire d’une molécule, le numéricien décide de tracer un petit disque gris à l’endroit de la position initiale de cette molécule, puis un autre petit disque à l’endroit où elle se trouve un centième de seconde plus tard, etc. Ainsi de suite, tous les centièmes de seconde, on tracera un petit disque gris à l’endroit où se trouve la molécule. Les endroits qui resteront blancs seront donc ceux où la molécule n’est jamais passée, ceux qui seront coloriés en gris seront ceux où elle est passée de temps en temps, et les endroits qui seront noirs seront ceux où la molécule est passée très souvent.

Voici un exemple de l’image que le numéricien obtient pour une certaine transformation $f$ [6]] [7], en partant avec la molécule placée sur le point de coordonnées $(0.52,\,0.43)$, lorsqu’on a mélangé pendant $50$ secondes.

PNG - 53 ko

C’est assez joli, mais il n’y a clairement pas de mélange pour cette durée : la molécule semble plus ou moins suivre des sortes de petites routes, et elle est loin d’avoir visité tous les recoins du carré. Le numéricien décide donc de regarder ce qui se passe si on attend plus longtemps ($5\,000$ secondes) [8].

PNG - 235.4 ko

Cette fois-ci, c’est beaucoup mieux : au bout de $5\,000$ secondes (à peu près une heure et demie), les positions de la molécule semblent se répartir uniformément dans le carré ! L’expérimentateur est satisfait : d’après les prévisions du numéricien, si on attend assez longtemps — environ 8 minutes ici —, il y a de grandes chances pour que l’intérieur de la boîte se mélange assez bien. Un mathématicien lui a même expliqué que c’est démontré par un théorème extrait de l’article [OU41] de John Oxtoby et Stanislaw Ulam, paru en 1941 dans la prestigieuse revue Annals of Mathematics [9].

Théorème 1 : Pour « la plupart » [10] des homéomorphismes conservatifs (autrement dit pour la plupart des lois d’évolution $f$ satisfaisant les hypothèses décrites plus haut), et « la plupart » [11] des points de départ (l’endroit où était la molécule au temps 0), la trajectoire de la molécule se répartit uniformément dans la boîte.

Une question embarrassante

Malgré ces résultats encourageants, l’expérimentateur est un peu troublé par une question que lui a posée le mathématicien :

« L’ordinateur fait tous les calculs avec un certain nombre de chiffres après la virgule [12], il fait donc une petite erreur d’arrondi à chaque fois qu’il calcule la position de la molécule à l’instant suivant. Est-ce que cela pose problème ? Il se peut que les erreurs d’arrondi faites à chaque calcul s’accumulent, au point qu’au bout d’un certain temps, la trajectoire calculée par l’ordinateur n’ait plus grand-chose à voir avec la trajectoire réelle de la molécule. A priori, rien ne prouve que les simulations du numéricien reflètent correctement ce qui se passe en réalité. »

L’expérimentateur demande donc au numéricien de regarder ce qui se passe dans un cas très simple (voire stupide) : on fait en sorte que l’ordinateur effectue tous les calculs avec une précision d’un seul chiffre après la virgule (on supposera que la boîte fait 1 mètre par 1 mètre et que l’unité est le mètre, les coordonnées de la molécule seront donc deux nombres compris entre 0 et 1).

PNG - 6.1 ko

En faisant tous les calculs avec une précision d’un chiffre après la virgule, au bout de 7 centièmes de seconde, la molécule s’arrête et ne bouge plus. Ça ne ressemble pas du tout à ce que le numéricien avait calculé précédemment, où la trajectoire de la molécule se répartissait uniformément dans le carré !

En y réfléchissant un peu, l’expérimentateur et le numéricien se rendent compte qu’il est impossible d’avoir des résultats satisfaisants en ne faisant les calculs qu’avec une décimale. En effet, dans ce cas, la molécule est toujours située sur l’un des 100 points du carré dont les coordonnées sont des nombres avec une décimale. Donc au bout d’au plus 100 centièmes de seconde, la molécule repasse par un point qu’elle a déjà visité (sinon, au bout de 101 centièmes de seconde, elle aurait visité 101 points du carré, alors qu’on a dit qu’elle ne peut pas en visiter plus de 100). Elle est alors obligée de suivre le même parcours que la première fois où elle est passée par ce même point, puisqu’entre-temps la règle $f$ n’a pas changé. À partir d’un certain moment, elle suit donc une trajectoire périodique ; autrement dit il existe un temps $T$ tel que si la molécule est située à un certain endroit à un moment $t$, alors elle sera de nouveau exactement au même endroit au moment $t+T$. De plus, on sait que ce temps $T$ est inférieur à 100 centièmes de seconde, ce qui ne fait pas beaucoup...

PNG - 13.6 ko
En ne faisant les calculs qu’avec une décimale, la molécule se retrouve forcément sur l’un de ces points rouges.

L’expérimentateur et le numéricien décident donc d’être un peu plus raisonnables et de faire les calculs avec 3 décimales : dans ce cas, au lieu de cent, on a un million de possibilités pour la position de la molécule.

PNG - 5.8 ko

Là encore, le résultat n’est pas vraiment satisfaisant : pendant ces $50$ secondes, la molécule reste confinée dans une toute petite partie de la boîte. Ils essayent donc avec 5 décimales, cette fois-ci pendant $5\,000$ secondes. Ils se disent que 5 décimales ça devrait suffire pour avoir des résultats proches de la réalité ; 5 décimales c’est tout de même une précision de un sur $100\,000$ [13].

PNG - 34.9 ko

Effectivement, cette fois-ci, ça se passe un peu mieux [14], mais il y a toujours de grandes régions de la boîte qui ne sont pas visitées par la molécule. Et lorsqu’ils représentent uniquement les positions de la molécule après $1\,000$ secondes, ils obtiennent ça :

PNG - 5.4 ko

Au bout d’un certain temps, la molécule ne se déplace plus que dans une toute petite région du carré. On est donc loin de pouvoir espérer que la trajectoire de la molécule se répartisse uniformément dans la boîte.

L’expérimentateur et le numéricien se disent que tout ça, c’est quand même assez embêtant : même en faisant les calculs avec une précision de 5 décimales, les résultats obtenus ne semblent pas du tout refléter le comportement prévu par le théorème d’Oxtoby-Ulam. Ils vont donc voir de nouveau le mathématicien pour lui demander ce qu’il en pense. Coup de chance, il y a peu de temps, ce mathématicien a assisté à un séminaire qui parlait de ce problème. On y démontrait le théorème suivant, extrait de l’article [Gui15] paru en août dernier [15].

Théorème 2 : Pour « la plupart » [16] des homéomorphismes conservatifs (autrement dit pour la plupart des lois d’évolution $f$ satisfaisant les hypothèses décrites plus haut), il y a une infinité de nombres $N$ tels que si on fait les calculs avec $N$ décimales, alors pour tout point de départ de la molécule, à partir d’un certain moment, la trajectoire de la molécule sera située dans une petite région de la boîte [17].

Reprenons : pour un homéomorphisme conservatif typique, on aura beau avoir une précision numérique aussi grande qu’on veut, il se peut que lorsqu’on calcule la trajectoire de n’importe quelle molécule, cette molécule se retrouve, au bout d’un certain temps, confinée dans une toute petite partie du carré.

Rappelons-nous du théorème d’Oxtoby-Ulam : « pour la plupart des homéomorphismes conservatifs, et la plupart des points de départ, la trajectoire de la molécule se répartit uniformément dans la boîte ». Donc, même si pour la plupart des façons de remuer le liquide à l’intérieur de la boîte, la plupart des trajectoires des molécules se répartissent uniformément, on peut très bien observer des comportements radicalement différents sur les simulations numériques, et cela quel que soit le nombre de chiffres après la virgule avec lesquels on fait les calculs !

Morale de l’histoire

Le théorème 2 peut être vu comme un avertissement pour tous ceux qui font des expériences numériques : si on simule des trajectoires pendant des intervalles de temps très longs, trop longs par rapport à la précision numérique choisie, alors bien souvent, les résultats des simulations seront complètement différents de ce qui se passe en réalité (dans notre cas on ne voit pas apparaître le fait que la molécule se répartit uniformément dans le carré). Quant à savoir précisément jusqu’à quelle longueur d’intervalle de temps les simulations restent crédibles, la question reste ouverte dans de nombreux cas, et fait l’objet de recherches actuelles.


[Gui15]
Pierre-Antoine Guihéneuf. Dynamical properties of spatial discretizations of a generic homeomorphism. Paru dans Ergodic Theory and Dynamical Systems no. 35, p.1474 — 1523, 2015.

[OU41]
John Oxtoby et Stanislaw Ulam. Measure-preserving homeomorphisms and metrical transitivity. Paru dans Annals of Mathematics, no. 42, p. 874 — 920, 1941.

Post-scriptum :

Un grand merci à tous ceux qui m’ont aidé à écrire ce texte : Jérôme Buzzi, qui a énormément contribué à son amélioration, François Béguin, ainsi que les relecteurs Nicolas Bedaride, Raphaël Alexandre, Lison Jacoboni et Laurent Dietrich.

Notes

[1Notons que cette modélisation de l’évolution du système par une loi $f$ présuppose que l’on est en régime permanent, ce qu’on fera ici.

[2En pratique, dans le cas de ce problème précis, il est vraisemblable qu’il soit assez difficile d’obtenir avec exactitude cette loi d’évolution $f$. Ça n’empêche pas les physiciens de faire des simulations numériques, et de les comparer à des expériences pratiques, comme expliqué dans cet article.

[3Il existe bon nombre de systèmes caractérisés par ces propriétés, et pour lesquels on sait décrire précisément la loi d’évolution $f$. On peut par exemple penser à un ensemble de planètes en attraction newtonienne. Le problème est que l’espace des configurations du système, qui est simplement le cube dans notre problème de mélange, devient beaucoup plus difficile à décrire dans le cas de ce système de planètes, un point de cet espace codant à lui seul les positions et les vitesses de toutes les planètes (en réalité c’est même encore plus compliqué, puisqu’on restreint cet espace des configurations à un niveau d’énergie donné).

[4Cet article d’Étienne Ghys explique pourquoi on ne peut pas espérer obtenir de résultat théorique concernant toutes les transformations $f$ : parmi celles-ci, on connaît quelques exemples — supposés rares — où les discrétisations ne détectent que des comportements « exceptionnels » de la dynamique de $f$. On se contente donc de décrire le comportement de « la plupart » des transformations $f$ qui, à moins de ne pas avoir de chance, sera similaire à celui de notre système concret.

[5Et même en dimension arbitraire !

[6Pour les lecteurs curieux, l’expression de $f$ est $f(x,y) = g(h(x,y))$, avec
[h(x,y) =\big (x\ ,\ y + 0.017\cos(2\pi\times13x) + 0.0041\sin(2\pi\times31x) - 0.001\cos(2\pi\times79x)\big),] [g(x,y) = \big(x + 0.014\cos(2\pi\times11y) + 0.0054\sin(2\pi\times29y) - 0.0011\sin(2\pi\times47y) \ ,\ y\big).

[7Pour que les résultats des simulations soient plus visuels, on a un peu triché : on a choisi une transformation $f$ qui est en fait définie sur le tore et non le carré, ceux qui ont eu un téléphone avant l’arrivée de Candy Crush et joué au jeu du serpent connaissent bien cet espace (voir aussi l’article Gnash, un tore plat ! de Vincent Borrelli).

[8Pour plus de visibilité, on représente seulement une position sur $109$ ; autrement dit sur cette figure, on ne trace que les positions de la molécule tous les $109$ centièmes de seconde. D’ailleurs, pourquoi $109$ ?

[9Cet article est à ma connaissance la toute première justification mathématique rigoureuse à l’hypothèse ergodique du physicien Ludwig Boltzmann. On y trouve aussi des résultats intermédiaires très intéressants en eux-mêmes, comme le théorème des mesures homéomorphes (voir l’article d’Étienne Ghys) ou ce qui est désormais appelé théorème de Lax (expliqué dans cet article de Frédéric le Roux).

[10Pour les apprentis mathématiciens, précisons qu’il s’agit de généricité de Baire.

[11Et pour ces mêmes apprentis mathématiciens, « la plupart » est à prendre au sens de la mesure de Lebesgue. Notons que dans certains cas, il existe forcément des points (rares) qui ne vérifient pas ces propriétés ; par exemple, si l’espace des phases est un carré, le théorème de Brouwer implique l’existence d’au moins un point fixe de $f$.

[12Souvent 52 chiffres après la virgule en binaire, soit environ 16 décimales.

[13En comparaison, une précision de un sur $100\,000$, c’est environ $20$ fois mieux que le capteur d’un bon appareil photo numérique actuel (à peu près 25 mégapixels). Notons que quelle que soit la précision choisie, on aura toujours le phénomène de retour à un point déjà visité expliqué plus haut ; néanmoins dans le cas d’une précision de un sur $100\,000$, on sait seulement qu’il apparaît après $100\,000\,000$ secondes, soit environ 3 ans. Ça laisse de la marge !

[14Là encore, pour que ce soit plus facile à voir, on a représenté seulement une position sur $109$, autrement dit sur cette figure, on n’a fait ne fait une marque à l’endroit de la molécule que tous les $109$ centièmes de seconde.

[15Le lecteur intéressé pourra consulter le manuscrit de thèse de l’auteur, où il trouvera d’autres références sur ce sujet.

[16Comme pour le théorème 1, il s’agit ici de la généricité de Baire.

[17Pour cette « petite région », on peut par exemple prendre un voisinage de n’importe quelle orbite périodique de $f$. En langage mathématique : pour tout voisinage d’une orbite périodique de $f$, il y a une infinité de nombres $N$, et pour chacun de ces nombres $N$ il existe un temps $T$, tels que la trajectoire calculée avec $N$ décimales, à partir du temps $T$, se retrouve dans le voisinage de l’orbite périodique.

Partager cet article

Pour citer cet article :

Pierre-Antoine Guihéneuf — «Gare aux erreurs d’arrondi !» — Images des Mathématiques, CNRS, 2016

Commentaire sur l'article

  • Gare aux erreurs d’arrondi !

    le 8 janvier à 10:22, par Jean-François Colonna

    Je me permets de rappeler mon article « Un ordinateur est-il une parfaite machine à calculer ? » paru le 28/04/2010 sur ce site ainsi que les differentes pages de mon site sur ce sujet.

    Répondre à ce message
  • Gare aux erreurs d’arrondi !

    le 10 janvier à 08:52, par Arnaud Chéritat

    Merci pour cet excellent article.

    J’ai voulu en savoir plus en suivant le lien de la note [2] mais il semble cassé : j’obtiens un « page non trouvée » en néerlandais de la part de l’université vers laquelle il pointe. Cependant en tapant le titre « Tracers take the tube » dans le champ de recherche de www.tue.nl j’ai pu le retrouver.

    Répondre à ce message

Laisser un commentaire

Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.

Connexions’inscriremot de passe oublié ?

Suivre IDM