être ou ne pas être nul, telle est la question
À l’heure de l’algorithmique au lycée, on ne peut évidemment pas faire l’impasse sur l’algorithme qui détermine l’existence et la valeur des racines d’un trinôme. C’est un standard qui ne pose aucune difficulté aux élèves de première qui ont été initiés à l’algorithmique et à la programmation en seconde. Encore que… les deux « Si… Alors… Sinon… » imbriqués en laissent encore quelques-uns perplexes.
En voici la version de base, programmée sur Algobox :
Comme il se doit, on teste le bon fonctionnement de l’algorithme avec des valeurs pour lesquelles la sortie est connue :
Tout va bien.
On peut quand même se demander pourquoi les deux valeurs affichées dans le troisième exemple ne sont pas arrondies avec la même précision alors qu’ils ont la même partie décimale. En effet, les arrondis à $10^{-8}$ près sont : $x_1 = \dfrac{1-\sqrt{5}}{2} \approx -0,61803399$ et $x_2 = \dfrac{1+\sqrt{5}}{2} \approx 1,61803399$
En fait, Algobox affiche les valeurs avec 8 chiffres significatifs et non pas à $10^{-8}$ près.
Pour $x_1$, la partie entière étant 0, la partie décimale peut utiliser les 8 chiffres disponibles. L’arrondi se fait donc effectivement à $10^{-8}$ près.
Pour $x_2$, la partie entière est 1, donc consomme un chiffre significatif, il n’en reste que 7 pour la partie décimale. Or l’arrondi à $10^{-7}$ près de $x_2$ est $x_2 \approx 1,6180340$. Le dernier chiffre étant 0 il n’est pas écrit, il n’y a donc plus 6 chiffres affichés après la virgule.
Donc rien d’étrange dans tout cela. D’ailleurs la calculatrice fait la même chose, avec 10 chiffres significatifs au lieu de 8 :
Mais provoquons un peu notre algorithme en le poussant dans ses retranchements. Qu’en est-il lorsque $\Delta$ est nul avec au moins un des coefficients irrationnel.
Par exemple, nous savons que $(x-\sqrt{n})^2 = x^2-2\sqrt{n}x+n$ et que $\sqrt{n}$ est la seule racine.
Testons avec $n$ = 2 et $n$ = 3 :
Gasp ! Il trouve respectivement 2 et 0 racines…
Bon, ce n’est pas très difficile de comprendre ce qu’il se passe. Il suffit de rajouter après la ligne 12 l’affichage de la valeur de $\Delta$. Avec les mêmes trinômes, on obtient alors :
Dans le 1er cas nous avons $\Delta = 1,7763568 \times 10^{-15} \gt 0$ et, dans le 2ème cas $\Delta = -1,7763568 \times 10^{-15} \lt 0$.
Évidemment, dans les deux cas, la valeur de $\Delta$ affichée est très proche de 0 et d’un ordre de grandeur de $10^{-15}$.
Mais, chose curieuse, les deux valeurs de $\Delta$ affichées par Algobox pour les trinômes $(x-\sqrt{2})^2$ et $(x-\sqrt{3})^2$ sont… exactement opposées ! Bizarre… Je lance ici un défi : quelle en est l’explication ?
Valeur nulle ?
Nous l’avons vu précédemment, il n’est pas rare qu’un outil de calcul renvoie une valeur non nulle pour un nombre dont le calcul formel montre qu’il est égal à 0.
Voici un exemple qui apparaît à l’occasion d’un exercice que j’aime bien donner aux élèves de seconde :
Soit $f$ la fonction définie sur $[-6 ;2]$ par $f(x) = x^4 + 5x^3 - 5x^2 + 30$ :1°/ Sur la calculatrice, afficher la courbe de $f$. Choisir une fenêtre permettant de voir la totalité de la courbe sur l’intervalle $[-6 ;2]$ . Indiquer sur la copie la fenêtre choisie.2°/ En utilisant les possibilités de la calculatrice, dresser le tableau de variations de la fonction $f$ sur l’intervalle $[-6 ;2]$.
On trouvera le corrigé avec les copies d’écran en téléchargement.
La 1re question oblige les élèves à s’interroger sur l’image d’un intervalle, et réaliser le plus tôt possible que l’image de l’intervalle $[a ;b]$ n’est pas forcément borné par $f(a)$ et $f(b)$.
La seule lecture graphique n’étant pas opérationnelle, il s’agit également ici de savoir utiliser, au choix, les différentes commandes de la calculatrice pour formuler des conjectures les plus fines possibles sur les variations de la fonction : tableau de valeurs avec un pas de plus en plus petit, parcours de la courbe avec la commande TRACE alliée à des zooms de plus en plus serrés sur les parties ambiguës, ou recherche des extrémums avec les commandes Minimum et Maximum (algorithmes internes).
Justement, en utilisant la commande Maximum pour chercher le maximum local autour de 0, on obtient 30, atteint pour $x = 1,9484 \times 10^{-6}$. Le calcul formel donne un maximum effectivement égal à 30 (la calculatrice a trouvé la valeur exacte !), mais pour $x = 0$. L’ordre de grandeur de l’erreur sur $x$ est de $10^{-6}$. Bizarre…
Cela s’explique par le fait que l’algorithme interne fait porter le test d’arrêt sur la valeur de $f(x)$ et non sur celle de $x$. Or, autour de 0, la fonction a évidemment des variations très faibles, ce qui permet d’approcher fortement le maximum sur un intervalle de $x$ assez large. L’algorithme sera inévitablement plus performant pour donner la valeur de l’extrémum que pour déterminer la valeur pour laquelle il est atteint.
Il y a donc de nombreuses situations où la valeur 0 n’est pas identifiée par les algorithmes. C’est un vrai problème lorsqu’il s’agit d’identifier deux expressions par exemple, puisque :
$$f(x) = g(x) \Leftrightarrow f(x)-g(x) = 0$$
Revenons sur le cas de la résolution des équations du second degré et le problème du signe du discriminant. Par curiosité, regardons comment s’en sort la calculatrice. L’algorithme est le même :
Testons avec nos deux fameux trinômes :
Surprise ! La calculatrice donne bien des discriminants exactement égaux à 0, et les valeurs des racines sont bien les approximations avec 10 chiffres significatifs…
Comment l’expliquer ? L’algorithme serait-il plus performant ? Je n’en sais rien. Mais j’ai une autre hypothèse un peu osée… Et si le test delta > 0 avait été, disons… un peu influencé autoritairement ?
En effet, et mon expérience d’enseignant me le confirme, lorsque la valeur affichée est "très proche" de 0, s’il ne s’agit pas des termes d’une suite convergente vers 0, le calcul formel conduit quasi-systématiquement à 0 en personne.
Bien sûr, il est tout à fait possible de créer artificiellement un contre-exemple, mais avec les exemples rencontrés "naturellement" c’est bien 0 dont il s’agit. Alors, ne serait-il pas plus rentable de déclarer nul tout nombre dont la valeur obtenue avec un algorithme est très proche de zéro (au sens des valeurs gérées par l’outil de calcul) ?
Osons ! Fixons un seuil, disons $10^{-8}$. Déclarons alors nul tout discriminant dont la valeur absolue obtenue par calcul numérique est inférieure à $10^{-8}$. Il suffit de rajouter juste après le calcul du discriminant, les lignes :
Testons à nouveau notre algorithme rectifié :
Et voilà le travail !
Évidemment, on peut se demander si le remède n’est finalement pas pire que le mal. Lequel des deux algorithmes (celui vierge de toute modification, ou celui rectifié autoritairement) sera le plus fiable ? L’expérience tend à montrer que la fiabilité se fait souvent au prix d’un artifice.
On peut aussi avoir des scrupules : Vaut-il mieux un algorithme "honnête" qui se trompe souvent, ou un algorithme un peu tricheur mais qui se trompe rarement (pour ne pas dire jamais avec les coefficients utiles) ?
Et quelle est finalement la fréquence des discriminants positifs, négatifs, nuls ?
Roots or no root ?
Cette question renvoie à une autre, plus générale, qui m’avait taraudée quand j’étais élève : si on choisit 3 coefficients $a$, $b$ et $c$ au hasard dans $\mathbb{R}$, quelle est la probabilité pour que le trinôme $ax^2 + bx + c$ ait des racines ? Si les coefficients sont choisis dans un ensemble fini (les entiers des 6 faces d’un dé par exemple), il s’agit d’un simple exercice de dénombrement (amusant en première). Mais dans $\mathbb{R}$ ?
Une intuition très naïve fait conjecturer une probabilité égale à $\dfrac{1}{2}$ . Pas bêtement parce qu’il y a 2 éventualités (le trinôme a 2 racines ou le trinôme n’a pas 2 racines) mais parce que, pour chaque valeur de $a$, soit le sommet de la parabole est au-dessus de l’axe des abscisses soit il est en-dessous, et que l’axe des abscisses partage le plan en 2 demi-plans. Alors, selon le signe de $a$, la parabole coupe l’axe des abscisses ou pas.
Mais évidemment le raisonnement est erroné : en choisissant les coefficients selon une loi uniforme, la position du sommet par rapport à l’axe des abscisses est-elle équiprobable ? Vu que pour un sommet $S(\alpha ; \beta)$, on a $\beta = -\dfrac{\Delta}{4a}$ , cela renvoie… au signe de $\Delta$. On tourne en rond.
Faisons une simulation avec un tableur en réduisant le tirage aléatoire (loi uniforme) dans $[-5 ;5]$ pour chacun des coefficients ; pour une taille de l’échantillon égale à 1 000, voici les formules :
En copiant vers le bas la plage A1:D1 jusqu’à la ligne 1 000…
… on observe dans la cellule E1 une proportion égale ici à 0,621, bien éloignée de 0,5. Avec la valeur obtenue sur cet échantillon, l’intervalle de confiance au niveau de confiance de 95% est $[0,59 ; 0,65]$ . Il faut se rendre à l’évidence, il y a de très fortes chances que les éventualités d’avoir ou non des racines ne sont pas équiprobables !
Pour visualiser la situation, on peut poser $c = f(a,b)= \dfrac{b^2}{4a}$. Alors la représentation graphique de cette fonction à 2 variables permet de mieux appréhender cette non équiprobabilité :
Sur ce graphique $x=a$, $y=b$ et $z=c$.
La surface représente l’ensemble des points $M(a,b,c)$ tels que $b^2- 4ac=0$.
Elle est en 2 parties ( $a \gt 0$ et $a \lt 0$).
L’ensemble des points de l’espace sont cette fois bien répartis de façon uniforme puisque les coordonnées le sont. La surface partage donc l’espace en 2 sous-espaces correspondants aux cas où le discriminant est positif ou négatif.
La Régionale Île-de-France APMEP, 26 rue Duméril, 75013 PARIS