L’art de la formule

par Abou Antoun
samedi 7 février 2015

Les textes scientifiques s’enorgueillissent de savantes formules, ce qui les rend sérieux pour les uns, rebutants pour les autres.

A ceux qui croient que la science s'est toujours écrite avec des formules, je ne peux que conseiller la consultation du lien ci-dessous consacré au symbolisme mathématique. : Ils y apprendront que les premiers symboles, couramment employés aujourd'hui ne sont pas antérieurs au 16ème siècle. Mais on faisait des mathématiques il y a 2000 ans, 3000 ans, à Babylone, en Égypte, en Chine et ailleurs. Sans formules, donc ? Notez bien que quand nous disons sans formules, nous ne disons pas sans figures, les figures ont bien évidemment précédé les formules et même l'écriture qui en découle. On peut se pencher sur des choses 'récentes' comme les manuscrits scientifiques du 16ème siècle (le plus souvent en latin). Les choses sont exprimées dans le langage courant ou à peu près, et on pourrait trouver dans ces ouvrages : '' Dans tout triangle rectangle, le carré de l’hypoténuse est égal, si je ne m'abuse, à la somme des carrés des côtés de l'angle droit '' Préférez-vous vraiment cet énoncé (encore compréhensible) à la très classique formule.

théorème de Pythagore

Pour qui douterait encore de la nécessité des formules. Que pensez vous de l'énoncé d'un théorème de Stirling : '' Le quotient du produit des nombres de 1 à n par le produit de la puissance n-ième de n avec l'inverse de la puissance n-ième de la base des logarithmes népériens et de la racine carrée du produit de 2 par π et par le nombre n, se rapproche de plus en plus de 1 quand n devient de plus en plus grand '' 

Et voici la formule de Stirling :

formule de Stirling

Si le théorème de Pythagore sous sa forme condensée est accessible à la plupart des élèves de collège, la compréhension de la formule de Stirling est plutôt à la portée des étudiants de premier cycle scientifique. Au passage ne croyez pas que cet exemple est fabriqué pour les besoins de la cause. La formule de Stirling existe et est très utile en pratique (enfin la notion de 'pratique' est très subjective). Sa compréhension suppose un prérequis important.

A un niveau élémentaire :

A un niveau supérieur :

Bref ce n'est pas parce que les formules sont condensées, qu'elles sont facilement compréhensibles. De nombreuses équations utilisant une symbolique liée à l'algèbre linéaire (tenseurs, torseurs) et au calcul différentiel et intégral restent incompréhensibles même pour des spécialistes.

On remarquera tout de suite qu'il y a dans toute formule deux aspects : la forme (présentation) et le fond (interprétation), naturellement ces deux aspects sont indissolubles mais certains professionnels ne se concentrent que sur un seul de ces deux aspects. C'est par exemple le cas des imprimeurs de textes scientifiques qui n'ont nul besoin de comprendre les formules mais seulement de les reproduire dans leurs journaux et dans leurs livres, pour eux seul l'aspect compte. Pour le scientifique qui lit un article c'est au contraire seulement la signification qui importe, mais une faute de transcription (coquille) peut perturber la lecture et faire croire à une vraie erreur. Voyons les problèmes que le symbolisme mathématique a pu poser aux rédacteurs, aux imprimeurs, aux programmeurs. Tout le problème vient du fait que pour les langages à systèmes alphabétiques l'écriture est plus ou moins linéaire, les formules, quant à elles se développent dans un espace à deux dimensions (et pourquoi pas en 3D pour la chimie …). Nous nous concentrons sur les formules planes genre mathématique. Aussi longtemps qu'on a affaire à de faibles variations de niveau (indices, exposants) l'écriture peut rester quasi-linéaire. Mais dès qu'on a affaire à des écritures étagées (radicaux, sommes, intégrales, fractions, etc. les choses se compliquent). Prenons l'exemple du simple radical. Les typographes avaient un signe √ et pouvaient écrire √ a par exemple. Mais dès que l'on a prendre la racine d'une expression comme une somme on ne peut plus écrire √ a+b. Ici interviennent les règles de priorité, posées en principe pour simplifier les écritures. Manuellement pour l'écriture de la racine d'une somme on prolonge la barre supérieure du radical sur toute la somme, typographiquement on a besoin d'avoir recours aux parenthèses qui sont là pour indiquer un groupement √ (a+b) reste donc encore bien lisible. Mais voilà, le radicande peut être lui-même une expression donc comporter des carrés, ce qui manuellement a nous obliger à rehausser la barre supérieure du radical. Notre pauvre imprimeur va avoir beaucoup de soucis si le radicande est lui-même un quotient étagé, car alors, dans le cas d'une écriture linéaire comment savoir si la racine porte sur la numérateur, le dénominateur ou le quotient entier. L'écriture manuelle trouve la solution en adaptant la taille et la forme du symbole radical à l'expression qui se trouve en dessous, mais tout cela est très difficile à mécaniser à systématiser dans la mesure où un calcul d'espace préalable est nécessaire que l'humain fait à peu près instantanément et pour lequel la machine a beaucoup de mal. Nous venons là de toucher du doigt une notion importante, celle de récursivité. Une expression mathématique est définie en fonction d'elle-même :

Chaque fois qu'une nouvelle règle est introduite (appel de fonctions, etc..) la complexité des expressions grandit. A la fin on obtient une grammaire dite BNF (Backus-Naur-Formalism) qui permet, par programme, de décider si une expression est bien formée, non ambiguë et éventuellement de l'évaluer dans un certain contexte (ou environnement, c'est à dire un ensemble de liaisons variable:valeur). Avec l'apparition de l'informatique le même problème se pose : Tous les langages de programmation évolués s’écrivent en mode 'texte' la ligne, ponctuée ou non, étant souvent l'unité syntaxique. Or les formules sont nécessaires dans tous les programmes on linéarise donc.avec moult parenthèses des écritures comme sqrt(sin(x)**2+cos(x)**2) font leur apparition. Le quotient est linéarisé par la barre de fraction oblique l'exposant par un symbole ^ (circonflexe) ou une double étoile. Cela donne bien du mal aux lecteurs des programmes et ne résout en rien le problème de la présentation, de la publication. La première tentative de linéarisation de l'écriture des formules est à mettre à l'actif de D. Knuth en 1977, c'est le programme 'Tex' devenu depuis 'Latex'.Ce système est toujours en vigueur, il s'apprend très vite et donne des écritures concises . Sa grande simplicité et sa facilité d'apprentissage font qu'il reste très populaire aujourd'hui encore parmi les rédacteurs. Cependant si LaTex est un formalisme plaisant pour décrire les formules ce n'est pas LaTex qui s'occupe du rendu, cela est laissé à la charge du programme qui lit un document contenant des formules LaTex (par exemple un pdf). Près de 20 ans plus tard en 1999 apparaît une nouvelle normalisation 'MathML' qui est, comme beaucoup de langages modernes une extension de XML. La logique de MathML est impeccable mais le code est passablement lourd. Voyez plutôt : Théorème de Pythagore :

Code LaTex :

c^2=a^2+b^2

Code MathML :


<math display = 'block'>
  <mrow>
    <msup>
      <mi>a</mi>
      <mn>2</mn>
    </msup>
    <mo>+</mo>
    <msup>
      <mi>b</mi>
      <mn>2</mn>
    </msup>
    <mo>=</mo>
    <msup>
      <mi>c</mi>
      <mn>2</mn>
    </msup>
  </mrow>
</math>

 

Formule de Stirling :

Code LaTex :

\lim_n\rightarrow \infty \fracn^ne^-n\sqrt2p\pi nn !=1

Code MatML :


<math display = 'block'>
  <mrow>
    <munder>
      <mi>lim</mi>
      <mrow>
        <mi>n</mi>
        <mo lspace='3px' rspace='3px'>→</mo>
        <mi>∞</mi>
      </mrow>
    </munder>
    <mfrac>
      <mrow>
        <msup>
          <mi>n</mi>
          <mi>n</mi>
        </msup>
        <msup>
          <mi>e</mi>
          <mrow>
            <mo>−</mo>
            <mi>n</mi>
          </mrow>
        </msup>
        <msqrt>
          <mrow>
            <mn>2</mn>
            <mi>π</mi>
            <mi>n</mi>
          </mrow>
        </msqrt>
      </mrow>
      <mrow>
        <mi>n</mi>
        <mo> !</mo>
      </mrow>
    </mfrac>
    <mo>=</mo>
    <mn>1</mn>
  </mrow>
</math>

N'importe qui non spécialement porté sur le sujet accorderait ses faveurs à ce bon vieux LaTex, sur la simple vue des écritures comparées. Mais aujourd'hui quel est le problème ? L'édition est devenu électronique exclusivement, en outre l'édition papier ou 'style papier' (pdf etc.) est concurrencée par le web. Or un texte scientifique en page web c'est infiniment mieux qu'un document statique parce que le contenu peut être interactif, c'est à dire contenir des 'applets' des exercices 'on-line' etc.. Bref la publication sur le web favorise une méthode d'apprentissage plus active. Cela est ma conviction profonde depuis plus de 20 ans. Malheureusement les profs continuent à 'pisser ' du doc ou du 'pdf ' ajoutant sans cesse à une offre déjà pléthorique et finalement peu différente de l'édition papier sauf qu'elle est dans certains cas gratuite et immédiatement disponible (ce qui n'est pas négligeable). Ainsi l'auteur de sites web à caractère scientifique est très rapidement confronté au problème de la représentation des formules. Au début était la débrouille. Il fallait faire avec le html 'pur' donc jongler avec les pour les indices les pour les exposants . Utiliser les parenthèses avec les symboles spéciaux &radic ; ( …..), etc. Cependant cela ne suffisait pas toujours. Les écritures étagées pouvaient être réalisées au moyen de matrices (tableaux) à bordures invisibles. Exemple pour une sommation de série double :

 

sm,n =
i=m,j=n  
Σ ui,j
i=0,j=0  

Voici le code html :


<table border="0" cellpadding="0" cellspacing="0">
	<tbody>
		<tr>
			<td>s<sub>m,n</sub></td>
			<td>=</td>
			<td>
			<table border="0" cellpadding="0" cellspacing="0">
				<tbody>
					<tr>
						<td align="center">i=m,j=n</td>
						<td> </td>
					</tr>
					<tr>
						<td><font size="20">Σ</font></td>
						<td>u<sub>i,j</sub></td>
					</tr>
					<tr>
						<td align="center">i=0,j=0</td>
						<td> </td>
					</tr>
				</tbody>
			</table>
			</td>
		</tr>
	</tbody>
</table>

Naturellement, ce code html où chaque expression se confondait avec une table était généré par un programme ad-hoc. C'était loin d'être la perfection mais cela donnait le change avec parfois quelques bizarreries. Une autre mauvaise solution avait été trouvée avec les images. L'auteur générait ses formules disons avec LaTex et les imprimait sur un document électronique. Il faisait ensuite une capture d'écran, découpait la formule, sauvait le résultat sous la forme d'un '.gif' d'un '.jpg' ou 'bmp' et faisait un lien de sa page vers la ressource placée sur le serveur. Les inconvénients étaient nombreux. •Consommation excessive de mémoire (les images sont lourdes et cela influe sur le temps de chargement). •Difficulté d'agrandir les formules (l'effet 'zoom' des navigateurs dégrade les images). •Impossibilité de corriger simplement une erreur la formule incriminée étant à recomposer complètement. De nombreux sites actuels, y compris Wikipédia, ont toujours recours à cette astuce. On peut voir qu'une formule est une image en la déplaçant à la souris. L'idéal était donc de taper directement dans le code html, soit du LaTex, soit du MathML. A supposer que les navigateurs veuillent bien prendre en charge le rendu. Quelques navigateurs se partagent le marché : •Chrome de Google toutes plate-formes(devenu au fil des ans le numéro 1). •Firefox de Mozilla Fondation, toutes plate-formes (toujours bien placé. •Internet Explorer de MS (en net recul) •Safari sur les plate-formes Mac OS. •Opera toutes plate-formes (n'a pas le succès qu'il mérite). Tous n'ont pas la même politique vis à vis du rendu des formules. En fait le responsable du rendu n'est pas à proprement parler le navigateur mais le moteur de rendu (Gecko pour Firefox, et depuis peu Blink pour Chrome et Opera). En fait, tout dépend de l’importance accordée aux publications scientifiques. Gecko a été un des premiers à traduire le MathML 'natif' et sans plugin. Jusqu'à une date récente Explorer proposait un plugin 'MathPlayer' pour lire les formules MathML. Webkit et son successeur Blink (donc Chrome) semblent délibérément ignorer les formules. Ce sont donc des auteurs de librairies JavaScript qui s'y collent. Comment ne pas citer MathJax qui propose un rendu des formules LaTex et MathML simultanément. Le lecteur intéressé trouvera sur le web, des discussions passionnées sur les mérites comparés des deux systèmes de transcription. Je suis un fervent défenseur de MathML. pour plusieurs raisons. La puissance des langages xml n'est plus à démontrer la plupart des EDI modernes proposent des fichiers de configuration en xml. (manifeste, layout d'écran, properties, etc.). Il y a une raison. Mais il y a plus ! Nous avons vu qu'une formule comporte deux aspects, un aspect purement 'formel' (son écriture, sa présentation et un aspect 'sémantique' sa signification, qui implique la compréhension de l'algorithme de calcul et sa transcription en n'importe quel langage. Or une formule LaTex est incapable de transporter le moindre sens. On trouve le plus souvent, en plus des délimiteurs un caractère '\' annonçant un mot clé, ce mot clé pouvant lui-même désigner une constante des mathématiques, un opérateur, un symbole sommatoire, etc. Il est donc exclu de faire le moindre raisonnement automatisé sur des formules LaTex. Une formule MathML, pour peu qu'elle soit complètement rédigée en faisant appel à tous les opérateurs implicites (comme la multiplication invisible, en maths 2n signifie 2xn). Cet aspect des choses est encore peu utilisé mais les auteurs de feuilles de calcul scientifique (genre MathCad) commencent à s'intéresser à ce format pas seulement pour le rendu. Bref, je crois que la norme MathML, même si elle connaît des débuts difficiles aura un bel avenir. Merci à tous ceux qui ont eu la patience de lire l'article de bout en bout.

Quelques liens :

Equations de Maxwell 

Histoire du symbolisme mathématique

LaTex 

MathML 

BNF 

Moteur Gecko

Moteur Blink 

MathPlayer

MathJax


Lire l'article complet, et les commentaires