Aujourd'hui nous sommes le
22 juillet, soit en écriture numérique
22/07, ce qui nous amène à la fraction
$mathjax$\frac{22}{7}\approx 3,14285714$mathjax$
. Très proche de
$mathjax$π\approx 3,14159265$mathjax$
n'est-ce pas ?
Et en effet,
$mathjax$\frac{22}{7}$mathjax$
est une approximation rationnelle supérieure de
π, utilisée sciemment par
Archimède dès le III
è siècle avant J.-C.
Pour fêter l'occasion, nous allons aujourd'hui parler
π et calculatrices, attends-toi à quelques surprises.

Ta calculatrice scientifique du collège dispose d'un moteur de calcul exact dit
QPiRac, c'est-à-dire qu'il est capable de fournir des réponses exactes même lorsque le résultat n'est pas un nombre décimal. Plus précisément, le moteur
QPiRac couvre les familles suivantes de nombres usuellement rencontrés au collège et au lycée :


Prenons les calculatrices les plus populaires et célèbres au collège, les
Casio fx-92 Collège. Et bien grosse surprise, si tu tapes donc sur ta
Casio un calcul très simple comme
$mathjax$\frac{11^6}{13}$mathjax$
, la calculatrice te fournit le résultat de
$mathjax$\frac{156158413}{3600}\pi$mathjax$
, et ce aussi bien avec la première calculatrice exacte
fx-92 Collège 2D de 2007 que la dernière
fx-92+ Spéciale Collège de 2018.

Ta calculatrice te fournit donc une réponse dans la famille
QPi alors que tu as clairement saisi quelque chose appartenant à la famille
QRac et même
Q tout court. C'est-à-dire qu'elle te suggère que
π est un nombre rationnel, rien que ça...

Un autre calcul très simple souffrant du même problème est
$mathjax$\frac{6^{11}}{1000}$mathjax$
qui répond
$mathjax$\frac{1455071890}{12600}\pi$mathjax$
.
Le problème ne se limite d'ailleurs pas aux calculs de quotients, si tu tapes bêtement
3232,08884797 tu obtiens
$mathjax$\frac{1234567}{1200}\pi$mathjax$
.

C'est d'autant plus surprenant que la concurrence ne commet pas cette erreur :
Déjà, pourquoi cette différence entre les
Casio et les contrefaçons de
Casio ? Et bien elles n'utilisent pas le même processeur :
- les Casio exactes utilisent un nX-U8/100 8 bits de chez OKI / Lapis Semiconductor
- les contrefaçons de Casio utilisent jusqu'à présent toutes un ePS6800 8 bits de chez ELAN Semiconductors
En passant, les
TI exactes de la gamme
MultiView dont la
TI-Collège Plus utilisent un
T4x 4 bits de chez
Toshiba.
Processeur différent et donc langage machine différent et incompatible, le
firmware de
Casio a forcément dû être ou adapté ou réécrit pour les contrefaçons, ce qui peut expliquer nombre de différences dont celle-ci.
Mais la différence dans les résulats n'est possiblement même pas la conséquence volontaire d'un meilleur algorithme sur les contrefaçons. Car qui dit processeur différent dit également cœur de calcul différent. L'on peut mettre ça en évidence avec le test du
$mathjax$arcsin\left(arccos\left(arctan\left(tan\left(cos\left(sin\left(9\right)\right)\right)\right)\right)\right)-9$mathjax$
, dont le résultat est zéro mais en pratique non nul sur les calculatrices dépourvues d'un moteur de calcul littéral :
- 0,00000000733338 sur les Casio exactes
- 0,000000000771497 sur les contrefaçons de Casio
- 0,000001077 sur les TI exactes
Des résultats différents en bijection avec les types de processeurs énoncés précédemment, il est donc possible que ce soit de simples écarts différents dans les calculs qui font, involontairement, que les contrefaçons optent pour le bon résultat exact alors que les
Casio choisissent un mauvais résultat.
En fait les affichages sont corrects si l'on considère qu'une calculatrice dépourvue de moteur de calcul littéral n'est jamais fiable. C'est-à-dire si l'on comprend non pas que
$mathjax$\frac{11^6}{13}=\frac{156158413}{3600}\pi$mathjax$
, mais que
$mathjax$\frac{11^6}{13}\approx\frac{156158413}{3600}\pi$mathjax$
.
Cela signifie dans ce cas que
$mathjax$\pi\approx\frac{11^6}{13}\times\frac{3600}{156158413}\\
\phantom{\pi}\approx\frac{6377619600}{203000369}\\
\phantom{\pi}\approx\frac{52707600}{1677689}\\
\phantom{\pi}\approx 3,141592654$mathjax$
Et pour l'autre exemple de
$mathjax$\frac{6^{11}}{1000}\approx \frac{1455071890}{12600}\pi$mathjax$
, on obtient également
$mathjax$\pi\approx\frac{6^{11}}{1000}\times\frac{12600}{1455071890}\\
\phantom{\pi}\approx\frac{4571242905600}{1455071890000}\\
\phantom{\pi}\approx\frac{11428107264}{3637679725}\\
\phantom{\pi}\approx 3,141592479$mathjax$
Ces approximations de
π étant valables, les affirmations initiales de la calculatrice qui les utilisent ne sont plus surprenantes.
D'ailleurs on peut aussi obtenir directement et faussement
π sur ta
fx-92 Collège d'autres façons :
Les
Casio fx-92 Collège n'utilisent donc pas de moteur de calcul littéral. Elles ne calculent pas sur l'intégralité de l'ensemble des nombres réels loin de là, mais sur un tout petit sous-ensemble que l'on peut caractériser en exécutant à la main le script
Python suivant pour les appels
precm(2)
et
precm(10)
:
- Code: Select all
def precm(b):
k,b=0,float(b)
while 1+b**-k-1>0:
k+=1
return k
Plus précisément,
Casio calcule donc sur 40 bits, ce qui en pratique nous permet d'obtenir jusqu'à 13 chiffres significatifs en écriture décimale.
Comment donc peut-on se débrouiller pour obtenir un nombre
QPi à partir d'un nombre résultat décimal à 13 chiffres significatifs ?


Dans le contexte de la calculatrice qui est capable de convertir les résultats décimaux en nombres
QRac et donc entre autres en fractions
(Q), un moyen très simple est de :
- diviser le résultat par π
- tester si le résultat alors obtenu peut être réécrit sour forme de quotient
Toutefois, cela ne semble pas être exactement ce que font les
Casio fx-92 Collège.
Il semble en effet que la calculatrice ne gère pas l'ensemble des multiples rationnels de
π. Par exemple la calculatrice est incapable de trouver un résultat exact très simple comme
$mathjax$\frac{\pi}{11}$mathjax$
, alors qu'elle en est pourtant parfaitement capable pour
$mathjax$\frac{1}{11}$mathjax$
.
On peut supposer par exemple, qu'à des fins de légèreté du traitement, elle ne fasse pas appel dans ce cas-ci pour la mise sous forme de quotient au code s'occupant de la conversion
QRac, mais à un code dédié et allégé ne traitant que le cas
Q.



Même impossibilité de retourner une valeur exacte de
$mathjax$\frac{\pi}{11}$mathjax$
chez les contrefaçons de
Casio.
Par contre, notons bien que les calculatrices graphiques
Casio ainsi que la
TI-Collège Plus n'ont pas ce problème, et sembleraient donc bien à la différence utiliser l'algorithme complet tel que présenté.
Cela voudrait-il dire qu'elles sont meilleures ? Sur ce cas particulier oui, certainement, mais cela ne veut pas dire qu'elles ne souffrent pas d'autres défauts dans d'autres cas.
Après l'algorithme général décrit dans le point précédent, nous allons ici tenter de mieux comprendre et approcher l'algorithme
QPi utilisé par les
Casio fx-92 Collège, et notamment la détermination du facteur rationnel de
π.
Lors de nos faux résultats
QPi obtenus, on peut noter que contrairement aux numérateurs, les nombres au dénominateur sont assez remarquables :
Partons donc sur l'hypothèse d'un algorithme
QPi alternatif :
- diviser le résultat par π
- multiplier le résultat par un nombre entier N
- tester si le résultat obtenu semble pouvoir être un entier
En effet, si par exemple
$mathjax$\frac{x}{\pi}*N=3$mathjax$
, c'est que
$mathjax$x=\frac{3}{N}\pi$mathjax$
.
Rappelons que la
Casio fx-92 Collège gère 3 unités d'angles :
- Degré
- Radian
- Grade
Avec
π radians = 180° = 200 grades.
Avec
$mathjax$N=180$mathjax$
, on aurait l'avantage de pouvoir obtenir un résultat exact de conversion en radians pour n'importe quel nombre entier de degrés.
Avec
$mathjax$N=200$mathjax$
, on aurait l'avantage de pouvoir obtenir un résultat exact de conversion en radians pour n'importe quel nombre entier de grades.
Pour combiner les avantages des deux, on peut proposer
$mathjax$N=ppcm(180,200)\\
\phantom{N}=1800$mathjax$
.
Vu les valeurs 3600 et 12600 obtenues précédemment aux dénominateurs des faux résultats
QPi, la véritable valeur de
N est supérieure et vaut au moins
12600.
Mais on peut quand même noter que nous sommes sur la bonne voie logique, car 3600 et 12600 sont justement des multiples de 1800.
$mathjax$N=12600$mathjax$
est divisible entre autres par 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 18, 20, 21, 24, 25, 28, 30, 35, 36, 40, 42, 45, 50, 56, 60, 63, 70, 72, 75, 84, 90, 100, 105 et 120.
Testons si cette valeur est la bonne, avec la suite des nombres
$mathjax$\frac{\pi}{n}$mathjax$
.
Petites difficulté sur
fx-92+ Spéciale Collège si l'on veut faire cela en évitant de saisir un par un des 10aines de calculs :
On ne peut pas faire cela avec une fonction dans l'application
Tableau, car cette dernière n'affiche que des valeurs décimales :
Et pour la même raison, on ne peut pas non plus utiliser pour cela un algorithme dans l'application
Algorithmique.
- Code: Select all
1→D
Répéter jusqu'à D=120
Afficher résultat π÷D
D+1→D
⤴
Tant pis, utilisons une autre astuce directement dans l'application
Calcul. Partons du résultat
π, puis il nous suffira juste de saisir la formule récurrente
π÷(π÷Rep+1)
puis de la revalider plusieurs fois de suite d'un simple appui sur la touche
EXE
.
On obtient bien comme prévu et successivement :
- l'affichage exact de
$mathjax$\frac{\pi}{2}$mathjax$
, $mathjax$\frac{\pi}{3}$mathjax$
, $mathjax$\frac{\pi}{4}$mathjax$
, $mathjax$\frac{\pi}{5}$mathjax$
, $mathjax$\frac{\pi}{6}$mathjax$
, $mathjax$\frac{\pi}{7}$mathjax$
, $mathjax$\frac{\pi}{8}$mathjax$
, $mathjax$\frac{\pi}{9}$mathjax$
, $mathjax$\frac{\pi}{10}$mathjax$
- un affichage décimal approché pour
$mathjax$\frac{\pi}{11}$mathjax$
- l'affichage exact de
$mathjax$\frac{\pi}{12}$mathjax$
- un affichage décimal approché pour
$mathjax$\frac{\pi}{13}$mathjax$
- l'affichage exact de
$mathjax$\frac{\pi}{14}$mathjax$
, $mathjax$\frac{\pi}{15}$mathjax$
Mais, petite divergence, nous obtenons également l'affichage exact de
$mathjax$\frac{\pi}{16}$mathjax$
.
Or, 16 n'est pas un diviseur de
$mathjax$N=12600$mathjax$
. Et en effet,
$mathjax$\frac{\frac{\pi}{16}}{\pi}\times 12600=\frac{12600}{16}\\
\phantom{\frac{\frac{\pi}{16}}{\pi}\times 12600}=\frac{1575}{2}$mathjax$
n'est pas entier.
C'est donc que
$mathjax$N=12600$mathjax$
n'est pas la valeur utilisée par
Casio, et il nous manque visiblement un facteur de 2. Prenons donc
$mathjax$N=12600\times 2\\
\phantom{N}=25200$mathjax$
$mathjax$N=25200$mathjax$
est divisible entre autres par 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 28, 30, 35, 36, 40, 42, 45, 48, 50, 56, 60, 63, 70, 72, 75, 80, 84, 90, 100, 105, 112, 120, 126, 140, 144, 150 et 168.
Ici en testant les nombres
$mathjax$\frac{\pi}{n}$mathjax$
pour
$mathjax$n=1$mathjax$
jusqu'à
$mathjax$n=168$mathjax$
plus aucun écart, nous obtenons bien :
$mathjax$N=25200$mathjax$
semble donc bien être la valeur utilisée en interne par l'algorithme
QPiRac de
Casio.
