Les nouvelles technologies pour l’enseignement des mathématiques
Intégration des TICE dans l’enseignement des mathématiques

MathémaTICE, première revue en ligne destinée à promouvoir les TICE à travers l’enseignement des mathématiques.

Approche algorithmique de situations mathématiques

Cet article propose une approche algorithmique de trois situations mathématiques et ouvre certains prolongements et certaines recherches mathématiques qui en découlent.

Article mis en ligne le 7 décembre 2017
dernière modification le 13 décembre 2017

par Fabrice Houpeaux

Fabrice Houpeaux a répondu à notre appel aux lecteurs de MathémaTICE depuis Quito (Equateur) où il enseigne (au lycée franco-équatorien).
Pierre Mottier a traduit les programmes AlgoBox en Python. Hubert Raymondaud les a transcrits en R.

Cet article peut être librement diffusé et son contenu réutilisé pour une utilisation non commerciale (contacter les auteurs pour une utilisation commerciale) suivant la licence CC-by-nc-sa

Cet article propose une approche algorithmique de trois situations mathématiques et ouvre certains prolongements et certaines recherches mathématiques qui en découlent :

  • Situation 1 : deux nombres réels étant choisis aléatoirement dans [0 ; 7], quelle est la probabilité que la moyenne arithmétique de ces deux nombres soit comprise entre 2 et 5 ?
  • Situation 2 : « le duel à Discreteville », problème issu du magazine Tangente.
  • Situation 3 : dans une classe de vingt-cinq élèves, quelle est la probabilité que deux élèves soient nés le même jour ?

Notes ergonomiques

  1. Pour une lecture plus agréable de cet article, il peut être utile d’ouvrir les liens dans un autre onglet et ce, par la méthode de votre choix.
  2. Au niveau de l’utilisation des blocs repliés de la partie « Les algorithmes de simulation pour ces situations », l’utilisation de l’ascenseur du navigateur est pratique.
  3. Afin d’utiliser correctement certains algorithmes sources de cet article, on peut avoir à augmenter le nombre maximal d’itérations pour les boucles ou pour l’algorithme dans AlgoBox (Options -> Configurer exécution des algorithmes). Pour limiter les risques d’overflow, AlgoBox dispose de sécurités lors de l’exécution d’un algorithme. Pour Python (python 3.5 avec module matplotlib installé) et R , ce n’est normalement pas la peine d’effectuer cette démarche.
  4. Les sorties d’algorithmes ont été majoritairement effectuées avec AlgoBox ; de belles sorties sont aussi ajoutées avec Python et avec R [1]

Note transcription
Les algorithmes, au départ sous AlgoBox, ont généreusement été transcrits en Python par Pierre Mottier et en R par Hubert Raymondaud.

Les raisons d’une approche algorithmique

Les supports numériques récents

Le principe de l’algorithme existe depuis des millénaires. Ces trois situations n’auraient cependant jamais été traitées en première approche par l’algorithmique quand j’étais au collège ou au lycée : nous n’avions pas les supports numériques afin de faire parler l’algorithmique. Ces supports numériques sont finalement récents et ils amènent d’autres chemins d’approche. Au regard des différentes réformes, j’ai eu, comme vous, à faire pratiquer l’algorithmique et avant tout, l’algorithmique pour les Mathématiques. Une conséquence de ce changement est qu’il m’arrive assez souvent, maintenant, d’approcher une situation mathématique par l’algorithmique.

L’approche algorithmique... Une méthode

L’approche algorithmique par simulation de ces trois situations et leur approche « plus classique » par les lois de probabilités continues à densité, par le dénombrement mettent en jeu des compétences différentes. Ce ne sont pas les mêmes approches mathématiques. Dernièrement, j’ai eu des élèves particulièrement doués dans leur approche algorithmique alors que les approches « plus classiques » leur posaient réellement des problèmes. J’ai même eu un cas assez extrême : un élève de terminale arrivant dans les cent premiers au concours Castor Informatique alors que je l’ai rarement vu dériver une fonction ou poser un raisonnement par inférences correctement !

L’approche algorithmique... Parfois, la plus facile

Développer des compétences d’approche algorithmique m’apparaît mathématiquement et pédagogiquement intéressant parce que certaines situations se laissent souvent aborder facilement par l’algorithmique alors que leur approche « plus classique » est parfois compliquée voire inaccessible.
Quand on fait un algorithme, on fait des Mathématiques. On peut même s’attaquer à des situations dites d’un autre niveau. En fonction des pratiques algorithmiques qu’on développe avec ses classes, rien n’empêche de travailler sur les termes de la suite de Fibonacci en sixième, de travailler sur le repérage dans le plan ou sur les unités d’angles « degré » sur le cycle 3 (Scratch) , de travailler sur les situations 1, 2 et 3 en troisième, en seconde.

Génération « alpha »

La révolution numérique, c’est une révolution ! Une révolution culturelle mondiale, une révolution citoyenne mondiale au même titre que l’impact de l’invention de l’écriture et de l’imprimerie sur la civilisation humaine. Cette révolution numérique bouleverse et change fondamentalement nos rapports à l’autre, à la création et aux savoirs. Nos générations d’élèves sont les premières « générations alpha » de cette nouvelle donne et nous avons tous déjà vu quelques dérives (excès de clics, droit à l’image, utilisation parfois dangereuse des réseaux sociaux, refus de déconnexion numérique, ...). Montrer l’apport de cette révolution numérique dans nos disciplines peut éventuellement aider sur ce sujet. Il m’arrive souvent de me demander et de demander aux élèves ce que Riemann, Ératosthène, Apollonius, Euler, Gauss, Ramanujan et les autres auraient produit en Mathématiques s’ils ressuscitaient à notre époque !

Pourquoi AlgoBox, Python et R ?

Avant tout parce que ce sont des logiciels libres [2]. Scratch, lui, n’est pas tout a fait libre en raison de son support Adobe Air (support qui n’est plus pris en charge pour Linux, par exemple) et Scratch ne se prête pas facilement aux affichages graphiques même si c’est possible.
Avec les élèves, j’ai commencé par AlgoBox comme support numérique : je trouve que sa prise en main est simple et qu’on peut arriver à des résultats parlants assez facilement notamment en utilisant le mode édition et la complétion.
Python est prescrit par les programmes et c’est très bien : les affichages concaténés des textes et des contenus de variables sont pratiques et, avec les bonnes librairies, la gestion des affichages graphiques est relativement simple (vous ne pouvez pas légender les graphiques avec AlgoBox par exemple, on peut utiliser les commentaires afin de pallier, en partie, cette différence).
R n’est plus à présenter quant à son efficacité en statistiques, en probabilités et en traitement de données.
L’objectif de cet article n’est pas « le choix du support numérique ».

Les algorithmes de simulation pour ces situations

Situation 1

Énoncé : deux nombres réels étant choisis aléatoirement dans [0 ; 7], quelle est la probabilité que la moyenne arithmétique de ces deux nombres soit comprise entre 2 et 5 ?


Première simulation


Déjà, autant mettre les bornes 2 et 5 comme variables, cela simulera plus que ce que l’on veut sans compliquer l’algorithme. Sur ce point, je fais souvent cet activité en prolongement de la même situation sur les nombres entiers, la structure de l’algorithme est exactement la même, c’est une des puissances de l’algorithmique !

Situation 1 - Simulation 1
Cliquez pour agrandir le pdf

Simulation de la loi de probabilités de la moyenne arithmétique de deux nombres réels pris aléatoirement entre 0 et 7.

  1. « nb_simulations » paramètre le nombre de choix des deux nombres.
  2. « borne_inferieure » et « borne_superieure » paramètrent les bornes de l’intervalle pour lesquelles l’algorithme calculera la fréquence des moyennes appartenant à cet intervalle.
  3. Les deux bornes peuvent être égales.
Sorties numériques de cette simulation {PNG} Quelques exemples de sorties de cette première simulation.
Le fichier AlgoBox
Cliquez pour télécharger
La source de l’algorithme sous AlgoBox pour téléchargement et modification.
Le fichier Python
Cliquez pour télécharger
La source de l’algorithme en Python pour téléchargement et modification.

Les quelques sorties de l’algorithme de simulation précédent amènent certains points intéressants : la probabilité cherchée semble être environ égale à 0,67 (point 1), la probabilité que la moyenne soit égale à 2 semble égale à 0 (point 2), la probabilité que la moyenne soit comprise entre 4 et 7 semble être environ égale à 0,37 (point 3).

Pour le point 2, trouver une probabilité égale à 0 pour un événement non vide est une surprise ou non, cela dépend de ce qui a déjà été travaillé. En ce qui me concerne, cette activité est aussi un prolongement du choix d’un seul nombre réel dans l’intervalle [0 ; 7] où la variable aléatoire regarde la valeur du nombre. On a donc déjà rencontré ce type de situation et on a alors parlé du « principe des fléchettes » [3] sur le segment [0 ; 7] afin de modéliser ce passage du discret au continu. Aussi ce point incite-t-il à ne s’intéresser justement qu’à des probabilités d’intervalles de longueur non nulle quant à la variable aléatoire « moyenne arithmétique ».

Pour le point 3, fixer la longueur de l’intervalle des bornes ne fixe pas la probabilité contrairement au choix aléatoire d’un seul nombre réel. Les points 2 et 3 donnent l’idée d’une autre simulation : on pourrait construire un algorithme qui calcule les fréquences de la moyenne arithmétique sur des plages d’intervalles fixes voire mettre la longueur de la plage en variable afin de pouvoir la rendre aussi petite que l’on veut.


Deuxième simulation


Situation 1 - Simulation 2
Cliquez ici pour télécharger le PDF

Simulation de la loi de probabilités de la moyenne arithmétique de deux nombres réels pris aléatoirement entre 0 et 7.

  1. La largeur des intervalles se paramètre par le nombre de décimales (exemple, decimal_largeur=2 correspond à une largeur de 0,01).
  2. Les fréquences observées sont les aires des rectangles rouges (et non les hauteurs de ces rectangles) [4] afin de montrer le lien entre les probabilités et les aires par calcul intégral.
  3. La hauteur de l’affichage graphique s’adapte en fonction des paramètres.
  4. La fonction de densité la plus cohérente s’affiche ou se cache en décommentant ou en commentant (//) deux lignes d’instructions (en fin d’algorithme).
Le fichier AlgoBox
Cliquez pour télécharger
La source de l’algorithme sous AlgoBox pour téléchargement et modification.
Le fichier Python
Cliquez pour télécharger
La source de l’algorithme sous Python pour téléchargement et modification.
Le fichier R
Cliquez pour télécharger
La source de l’algorithme sous R pour téléchargement et modification.
Situation 1 - Simulation2 - Sortie1
Cliquez pour agrandir l’image
Situation 1 - Simulation2 - Sortie 2
Cliquez pour agrandir l’image
Situation 1 - Simulation2 - Sortie 3
Cliquez pour agrandir l’image
Situation 1 - Simulation2 - Sortie 4
Cliquez pour agrandir l’image

Remarques algorithmiques

  • Il est à noter que lorsqu’on réduit l’amplitude des intervalles, le nombre de simulations doit être important : une amplitude de 0,01 donne 700 intervalles !
  • Les différentes sorties précédentes nous amèneront vers l’obtention de la fonction de densité régissant cette loi de probabilité continue.
  • Le point 2 noté dans la première simulation nous permet de nous contenter d’un rangement des fréquences sur [0 ; 7[.

Situation 2

Énoncé : à Discreteville, les duels ont rarement une issue fatale. En effet, selon les coutumes de cette cité, chacun des duellistes vient sur le lieu prévu, le jour fixé, à un moment choisi au hasard entre 5 heures et 6 heures du matin, et en repart exactement 5 minutes plus tard, l’honneur sauf, excepté si son adversaire arrive précisément pendant cet intervalle, auquel cas ils se combattent.

Quelle est la probabilité qu’un duel se déroule avec violence ?


Première simulation


En première modélisation, on prendra les horaires d’arrivées des duellistes en valeur décimale et [0 ; 1] comme plage d’horaires d’arrivée possible (cela ne change rien à la situation de départ). L’expérience aléatoire en jeu peut alors se voir comme le choix aléatoire de deux nombres réels dans l’intervalle [0 ; 1]. Un regard intéressant sur les issues de l’expérience est l’écart absolu entre les deux nombres, c’est la variable aléatoire qui va nous intéresser. La probabilité cherchée est donnée par la probabilité que les valeurs de cette variable aléatoire soient inférieures à 1/12 (c’est la valeur décimale qui correspond à une durée de 5 mn).
Tout est prêt pour une première approche algorithmique : on peut faire deux simulations sur le même principe que la situation 1.

Situation 2 - Simulation 1 - Sortie 1
Cliquez pour afficher le PDF
Situation 2 - Simulation 1 - Sortie 1-bis
Cliquez pour afficher le PDF
Situation 2 - Simulation 1 - Sortie 2
Cliquez pour afficher le PDF
Situation 2 - Simulation 1 - Sortie 3
Cliquez pour afficher le PDF
Le fichier AlgoBox
Cliquez pour télécharger
La source de l’algorithme sous AlgoBox pour téléchargement et modification.
Le fichier Python
Cliquez pour télécharger
La source de l’algorithme sous Python pour téléchargement et modification.

Deuxième simulation


On classerait bien les fréquences de ces écarts absolus sur des intervalles de même amplitude afin, en réduisant l’amplitude, de faire éventuellement apparaître une bonne prétendante pour fonction de densité. C’est parti !

Situation 2 - Simulation 2 - Sortie 1
Cliquez pour ouvrir le PDF
Situation 1 - Simulation2 - Sortie 2
Cliquez pour ouvrir le PDF
Situation 2 - Simulation 2 - Sortie 3
Cliquez pour ouvrir le PDF

Au regard de ces sorties graphiques, la fonction affine définie sur [0 ; 1] dont la courbe passe par les points (0 ; 2) et (1 ; 0) semble une très bonne prétendante pour fonction de densité de cette loi de probabilité continue.

Situation 2 - Simulation 2 - Sortie 1-bis
Cliquez pour ouvrir le PDF
Situation 2 - Simulation 2 - Sortie 2-bis
Cliquez pour ouvrir le PDF
Situation 2 - Simulation 2 - Sortie 3-bis
Cliquez pour ouvrir le PDF
Le fichier AlgoBox
Cliquez pour télécharger
La source de l’algorithme sous AlgoBox pour téléchargement et modification.
Le fichier Python
Cliquez pour télécharger
La source de l’algorithme sous Python pour téléchargement et modification.
Le fichier R
Cliquez pour télécharger
La source de l’algorithme sous R pour téléchargement et modification.

Situation 3

Énoncé : dans une classe de vingt-cinq élèves, quelle est la probabilité que deux élèves soient nés le même jour ?


Première simulation


  • Une première modification de contexte : on va décider de ne pas tenir compte des années bissextiles et donc considérer qu’il y a seulement 365 jours de naissances possibles (impossible de naître le 29 février !)
  • Une deuxième modification de contexte : chaque jour de naissance possible est-il équiprobable aux autres ? Pour diverses raisons, c’est sans doute faux. Nous considérerons pourtant que c’est le cas et c’est une modification de contexte importante. La première modification ne change pas tellement le contexte initial ; en revanche, la deuxième le change de manière non négligeable et difficilement estimable.
  • Une modélisation du contexte : les deux modifications du contexte précédentes faites, on peut alors imaginer une classique urne avec 365 boules numérotées de 1 à 365, boules indiscernables au toucher. On pioche avec remise 25 boules (l’expérience), on regarde si cette pioche possède au moins deux numéros identiques (la variable aléatoire). Tout est prêt pour la simulation par fréquences (approximation de la de la loi de probabilité).
Avec 25 élèvesAvec 27 élèvesAvec 29 élèvesAvec 31 élèves
Situation 3 - Simulation 1- Sortie 1
Cliquez pour ouvrir le PDF
Situation 3 - Simulation 1-bis - Sortie 1
Cliquez pour ouvrir le PDF
Situation 3 - Simulation 1-bis - Sortie 2
Cliquez pour ouvrir le PDF
Situation 3 - Simulation 1-bis - Sortie 3
Cliquez pour ouvrir le PDF
Source avec 25 élèvesSource avec nombre d’élèves en variable
Le fichier AlgoBox
Cliquez pour télécharger
Le fichier AlgoBox
Cliquez pour télécharger
Le fichier Python
Cliquez pour télécharger
Le fichier Python
Cliquez pour télécharger

Deuxième simulation


Les fréquences des sorties précédentes peuvent être assez surprenantes si on a posé la question oralement aux élèves quant à cette situation 3 avant la simulation. C’est pour cela qu’il peut être intéressant de faire afficher graphiquement les fréquences obtenues pour des effectifs de classe allant de 2 à nb_eleves. C’est consommateur en calcul... Mais c’est intéressant.

Affichage NuageAffichage Nuage reliéAffichage Nuage relié
Situation 1 - Simulation2 - Sortie1
Cliquez pour ouvrir le PDF
Situation 3 - Simulation 2-bis - Sortie 1
Cliquez pour ouvrir le PDF
Situation 3 - Simulation 2-bis - Sortie 2
Cliquez pour ouvrir le PDF
Source avec nuage de pointsSource avec nuage de points reliés
Le fichier AlgoBox
Cliquer pour télécharger
Le fichier AlgoBox
Cliquer pour télécharger
Le fichier Python
Cliquer pour télécharger
Le fichier Python
Cliquer pour télécharger
Le fichier R
Cliquez pour télécharger

Tous les algorithmes en téléchargement

Les fichiers AlgoBox
Cliquez pour télécharger l’archive zip
Les fichiers Python
Cliquez pour télécharger l’archive zip
Le fichier R
Cliquez pour télécharger

Quelques sorties de simulation en Python et en R

Jolies sorties Python
Cliquez pour télécharger le PDF
Jolies sorties R
Cliquez pour télécharger le PDF

Ouvertures et prolongements, questionnements

Vers les résolutions classiques

Les situations 1 et 2 : ces deux situations sont du même type et les approches algorithmiques peuvent amener aux prolongements ci-dessous.

  • obtenir des propositions d’expressions algébriques des fonctions de densité, propositions amenées par la simulation.
  • comparer des probabilités obtenues par calcul intégral et simulation. Pour le calcul intégral, on peut passer par le calcul formel des logiciels ou en profiter pour faire travailler l’algèbre. Le calcul intégral permet alors d’obtenir des premières propositions des probabilités en valeur exacte. Propositions ? Oui, ce ne sera pas une surprise que les résultats obtenus par calcul intégral et par la simulation soient proches : c’est même cela qui nous a amené aux expressions algébriques !
  • confirmer les fonctions de densité... Par la géométrie par exemple.

Conclusions : je trouve ces situations 1 et 2 particulièrement intéressantes.

  • Elles sont des exemples relativement simple et efficace de passage du discret au continu (ces deux situations de probabilités peuvent aussi être travaillées sur les nombres entiers).
  • Elles permettent de faire intervenir l’algorithmique (simulation), l’analyse (calcul intégral), l’algèbre (expression algébrique de fonction, calcul intégral, géométrie), la géométrie (confirmation)... Et ça, c’est super !

La situation 3 : indépendante des deux autres, cette situation est intéressante par son côté surprise (si on ne connaissait pas), son intérêt algorithmique et sa résolution théorique qui met en jeu de toutes autres connaissances (événement contraire, principe multiplicatif, ...)

Le choix du support numérique

Toute approche algorithmique pose la question du support numérique à utiliser afin de faire parler l’algorithme. C’est un vaste débat et cela dépend des prescriptions officielles, des choix d’équipes, des choix personnels, des situations mathématiques, du temps dédié, ...
Je voulais aussi par cet article féliciter Pascal Brachet, professeur de mathématiques au lycée Bernard Palissy d’Agen, pour le temps qu’il passe à développer AlgoBox et d’autres choses. Son logiciel m’aura permis de réellement travailler l’algorithmique pour les mathématiques avec les élèves ces dernières années. AlgoBox est sans doute moins lissé que Python ou R mais ces deux derniers langages ne sont pas de la même dimension. Maintenant au collège, je travaille avec Scratch et au lycée, je vais sans doute repartir sur Python, il n’empêche, AlgoBox m’aura permis de mettre facilement et rapidement en place des idées.

La consommation énergétique

L’algorithmique et notamment la simulation, ça consomme, ça consomme parfois beaucoup. On arrive rapidement à la nécessité de faire tourner régulièrement pour différents tests des millions voire des dizaines de millions d’itérations à l’échelle personnelle ou à l’échelle classe. Cela peut ouvrir un débat et des calculs sur la consommation énergétique. On peut aussi ouvrir un débat sur l’optimisation des algorithmes : l’algorithme de la situation 3 peut éventuellement s’optimiser en stoppant le choix aléatoire des jours de naissance quand déjà deux sont identiques.

Impressions de premier rédacteur

J’ai répondu à l’appel à contribution. J’y ai répondu avant tout dans un principe de contribution justement, principe qui, dans l’Open Source, me parle depuis vingt ans et me parle encore plus quand j’ai vu dernièrement Microsoft arriver avec ses gros sabots dans l’Éducation. Je n’ai pas du tout envie que les élèves confondent un tableur avec Excel, un traitement de texte avec Word, un système d’exploitation avec Windows, un pays avec Coca-Cola. Il y a d’ailleurs un très beau travail mathématique à faire sur l’inclusion, j’ouvre souvent le principe de l’inclusion sur cet exemple. On fait des belles choses avec le libre, on fait des belles choses parce que les gens du libre ont une tendance à la bienveillance.
Je me suis donc engagé dans une publication et je ne regrette pas ! Cela m’a pris du temps et le temps ne fait pas forcément l’efficacité.

  • J’ai pu partager, impact positif de la révolution numérique, avec mon camarade Pierre Mottier quant à la transcription en Python alors que nous sommes à 17 000 km l’un de l’autre. À ce sujet, il m’arrive de penser que la conjecture de Syracuse est indémontrable ou, comme le disait Paul Erdős inaccessible à nos mathématiques. Vous pouvez actuellement mettre les dix cerveaux les plus pointus sur cette conjecture, hautes pointures qui peuvent communiquer à l’instant t sur leurs recherches... Et nada !
  • Vous échangez avec des collègues comme Gérard Kuntz, Hubert Raymondaud. Je vous invite à lire ou à relire cet article de Hubert : accessible ici... Et l’article date de 2 013 ! Ces collègues sont très pédagogues : ils vous aident, ils vous relisent, ils vous conseillent tout en tenant à conserver l’âme initiale de votre article, votre trajectoire.
  • Pour conclure, je tire mon chapeau (ou mon panama) à l’association Sesamath. C’est une association efficace, c’est une association qui fournit librement et gratuitement de très beaux outils. SACoche, pour moi, est en avance de vingt ans sur son temps ! Et encore une fois, je ne comprends pas que cette association ne soit pas plus financée par notre institution, cela permettrait des développements importants et des avancées dans un environnement financier stable et pérenne. Et nous en avons besoin !

Fabrice Houpeaux, enseignant de Mathématiques
Pierre Mottier, enseignant de Mathématiques
Hubert Raymondaud, enseignant de Mathématiques