Math et Python : histoire d’un bug – épisode 1

J’ai développé en Python, il y a un moment déjà un petit utilitaire qui produit des exercices de trigonométrie (https://site2wouf.fr/exercices_trigonometrie.php) qui les corrige et qui fabrique par la même occasion un pdf avec exercices et corrections.

Oui mais voilà, en récoltant les fruits de mon travail en classe aujourd’hui je tombe sur cet exercice et sa correction et remarque une erreur :

Exercice 1

Dans le triangle RBN rectangle en R, on sait que :

  • BN = 3,7 cm
  • BNR = 30°

Après avoir fait un schéma, calcule la longueur du segment [RB]. (Arrondir au dixième)

Correction

Exercice 1

image/svg+xml R B N ? 3,7 cm 30°

Dans le triangle RBN rectangle en R, on cherche une relation entre l’angle aigu RNB son coté opposé et l’hypoténuse du triangle.

RB / BN

= sin(RNB)

d’où

RB / 3,7

= sin(30°)

On a donc RB = 3,7 × sin(30°) ≈ 1.8 cm

Voyez-vous l’erreur ?

sin(30°)=0.5

3.7sin(30°)=1.85

Python aurait du arrondir à 1,9cm

Lu sur la doc Python :

https://docs.python.org/fr/3.7/library/functions.html?highlight=round#round

Le comportement de round() avec les nombres à virgule flottante peut être surprenant : par exemple round(2.675, 2) donne 2.67 au lieu de 2.68. Ce n’est pas un bug, mais dû au fait que la plupart des fractions de décimaux ne peuvent pas être représentés exactement en nombre a virgule flottante. Voir Arithmétique en nombres à virgule flottante : problèmes et limites pour plus d’information.

Pour Python, avec le module math importé :

>>> sin((radians(30)))
0.49999999999999994

donc en multipliant par 3.7, Python trouvera un résultat très proche de 1,85 mais strictement inférieur donc dont le développement décimal commencera par 1,84… et il arrondira effectivement à 1,8.

En arrondissant (round(sin((radians(30)),5) j’évite le souci mais ne vais-je pas tombé parfois sur le comportement évoqué de round() ?

Qu’en pensez-vous ?

Blitz, miniature : les coups douteux mais piégeurs

La partie ne restera pas dans les annales, mais la position ci-dessus mérite un coup d’œil: J’ai les noirs et après 13… Dh4 et l’échange des Dames forcé, la partie même avec un pion de moins semble égale. (Vous avez le droit de ne pas être d’accord !)

Oui mais voilà, c’est du blitz (3 minutes) et la faiblesse du roi blanc est un élément à prendre en compte, voyez-vous de quoi je parle ?

Il est évident que ce genre de coup, inferieur mais piégeur n’est pas à conseiller… Mais en blitz, on peut se faire plaisir, non ?

Logigramme.py en version 3.0.0

Présentation de l’application logigramme.py

logigramme.py est une application Python3, open source et gratuite qui permet, à partir d’un fichier prog.txt contenant du pseudo-code de fabriquer, en SVG un logigramme comme celui ci-dessus.

Pratique et léger il peut faire gagner du temps aux enseignants de Mathématiques, d’informatique et de technologie.

Mode d’emploi

Pré-requis

L’utilisateur final doit avoir Python3 installé sur sa station de travail.

Téléchargement

L’application logigramme.py est disponible en téléchargement

Il suffit de décompresser cette archive à l’emplacement de votre choix, d’éditer le fichier prog.txt (qui contient un pseudo-code exemple) de le modifier et de le sauvegarder.

Un double clic sur logigramme_f.py (ou en le lançant via l’IDLE de Python) va générer (si le pseudo_code ne contient pas d’erreur) prog.svg. (Il est possible de voir le résultat dans un navigateur en lançant test.html.

Syntaxe du pseudo-code

Le pseudo-code qui correspond au logigramme précédent est simple:

Début Faire un logigramme
Si vous connaissez cette application
le faire en quelques secondes en SVG !
sinon
le faire à la main; et c'est long !
fin_si
Fin

Les seuls impératifs concernant la structure sont logiques : un tq ou un si doit être ouvert avant d’être fermé (fin_tq, fin_si) :

  • tq avant fin_tq
  • si avant fin_si (avec éventuellement un “sinon” intercalé)

Nouveautés de la version 3.0.0

La version 3.0.0 est plus qu’une mise à jour : La logique a été repensé pour privilégier un affichage clair des textes. C’est maintenant la taille des cadres qui s’adapte aux contenus.

Pour les développeurs, un mode de déboguage est activable en passant le booléen debug à 1 dans les codes Python .

Cette version (beta) est en ligne depuis le 29 octobre 2020, n’hésitez pas à intervenir pour en améliorer les performances !

Et le carburant le plus rapide du monde est …

ssc_tuatara

La principale caractéristique des carburants est d’avoir une grande densité énergétique, c’est-à-dire qu’ils contiennent beaucoup d’énergie pour une masse ou un volume réduits, ce qui accorde au système motorisé une grande autonomie. Plusieurs produits pétroliers sont utilisés comme carburant dans de nombreux moteurs.

(Sources : wikipedia)

Mais quel est le carburant le plus PERFORMANT ?

Le 19 octobre 2020, Antoine Arnoux écrivait pour Turbo :

L’annonce tombe une semaine après la dernière tentative de SSC de battre le record du monde de vitesse pour une voiture de production. C’est désormais chose faite, l’hypercar Tuatara vient de s’octroyer le titre en touchant presque les 533 km/h.

Pour mémoire, la SSC Tuatara est propulsée par un V8 biturbo de 5,9 l, développant 1.750 ch et alimenté par de l’éthanol E85, cela nous donne un élément de réponse !

Dunst-Perrenet Gambit : Miniature de 16 coups !

Ce gambit n’a pas bonne réputation, et est probablement considéré comme réfuté.

Mais il ne doit pas être pris trop à la légère :

Une deuxième miniature de 16 coups

Même si mon seizième coup 16. Txd7 force l’abandon Stockfish m’a dit que j’avais loupé un mat en 7 par 16. Dh5…

Mathématiques, semaine du 22 juin

Cycle 3

Correction:

02032120
11323211
22233202
12331130
13213212
22241332
12413231
12121111

Le travail de la semaine :

  1. Révision sur les entiers naturels :

Exercice 1

Ecris les nombres suivants en chiffres :

  • Neuf-cent-seize.
  • Sept-mille-trois-cent-quatre-vingt-huit.
  • Cinquante-six-mille-neuf-cent-quarante-neuf.
  • Six-cent-dix-sept millions six-cent-cinquante-mille-six-cent-quatre-vingt-onze.
  • Quatre-vingt-quatorze milliards neuf-cent-soixante-six millions huit-cent-trente-mille-cent-un.

Exercice 2

Ecris les nombres suivants en lettres :

  • 600
  • 9 725
  • 107 978
  • 555 369 245
  • 38 148 695 993

Exercice 3

Dans le nombre 6 402 158 973 , quel est le chiffre des :

  • dizaines de millions
  • unités de milliards
  • dizaines de mille
  • centaines de mille

Exercice 4

Dans le nombre 6 923 174 058 , combien y-a-t-il de ? (quel est le nombre de ?)

  • unités de milliards
  • centaines de millions
  • dizaines d’unités
  • centaines d’unités

Correction la semaine prochaine

2. Une énigme en ascenseur :

Dans cet immeuble de onze étages, l’ascenseur est bien étrange.
Il ne peut monter que 2, 3 ou 5 étages à la fois et ne peut descendre que 4 ou 11 étages.
Le concierge, dont la loge est située au rez-de-chaussée, doit procéder à la distribution du courrier.

Comment doit-il opérer pour partir de sa loge, s’arrêter une fois et une seule à chaque étage, et revenir chez lui ?

Indication : Il y a 6 parcours possibles, mais je n’en demande qu’un seul !

Cycle 4

Une enigme :

Les douze allumettes ci-dessous déterminent une surface carrée d’aire égale à 225 cm² (une allumette mesure exactement 5 cm de long).

Sur le même quadrillage (des carrés de 5 cm de côté), vous devez trouver une autre disposition de ces douze allumettes de façon à former un polygone non croisé dont tous les sommets sont des nœuds du quadrillage et dont l’aire vaut exactement 75 cm².

Bon amusement !

Préparation au lycée

Entraînez-vous ! On met l’accent sur les nombres et le calcul littéral…

Cette icône vous permet d’interagir avec moi en direct. Ne vous en privez pas !