La proposition « $\forall n \in \N, n^2+n+41 \mbox{ est premier}$ » est fausse. Il est plutôt facile de démontrer qu’elle est fausse, il suffit de montrer un contre-exemple (par exemple avec $n=41$). Mais si on demande à des élèves de démontrer ladite proposition, beaucoup d’entre eux vont essayer pour plusieurs valeurs de $n$ et trouver des nombres premiers :
n | $n^2+n+41$ | statut |
0 | 41 | premier |
1 | 43 | premier |
2 | 47 | premier |
3 | 53 | premier |
4 | 61 | premier |
5 | 71 | premier |
6 | 83 | premier |
7 | 97 | premier |
8 | 113 | premier |
9 | 131 | premier |
10 | 151 | premier |
Au bout de quelques lignes, le « on voit bien que $n^2+n+41$ est toujours premier » se transforme insidieusement en « c’est bien la preuve que $n^2+n+41$ est toujours premier ». D’ailleurs si on vérifie avec la valeur suivante : $n=11$, $11^2+11+41=173$ est premier ! Et voilà !
Cette façon de faire illustre bien la différence qu’il y a entre induction (logique) (le raisonnement de l’élève) et déduction logique (le raisonnement attendu par le prof). Le fait que la preuve par récurrence ressemble plus à une induction qu’à une déduction, et l’enseignement de plus en plus présent, de la statistique inférentielle, n’arrangent pas les choses...
Mais tout de même, l’élève qui répond « oui d’après le tableau ci-dessus » a-t-il autant faux que celui qui répond « oui parce que $0^2+0+41=41$ qui est premier » ? Avant de répondre que oui, il est bon de se rappeler que la conjecture $\forall n \in \N, 2^{2^n}+1\mbox{ est premier}$ a résisté un siècle (de Fermat à Euler) à des gens que l’on serait enclin à considérer comme plus forts que le lycéen moyen...
Le monkey de CaRMetal permet justement de donner une note de qualité à une construction, sous la forme d’un pourcentage de constructions correctes parmi les variantes obtenues en secouant la figure. Quelques exemples ci-dessous :
Arcanes
Depuis la version 3.5, CaRMetal possède un nouveau bouton qui représente un singe :
(en y regardant bien, on dirait plus particulièrement un macaque rhesus)
Tant que ce bouton est enfoncé (clic gauche de la souris), les points qui ne sont pas fixes ni liés à des courbes parcourent au hasard la fenêtre graphique en suivant une marche aléatoire dont l’angle de rotation n’est pas nécessairement $\frac{\pi}{2}$ mais un angle aléatoire uniforme entre $\pm \frac{1}{2}$ radian (qu’Éric Hakenholz appelle spin), le rayon vecteur étant toujours de 5 pixels (extrait de PointObject.java dans le code source de CaRMetal, lequel est placé sous license GNU GPL) :
Lorsqu’un point, sous l’influence du Monkey, tente de sortir de la fenêtre, il rebondit de manière à retourner vers l’intérieur de celle-ci, en suivant un algorithme qui rappelle les réflexions élastiques de l’algorithme Gendy de Iannis Xenakis (à part qu’ici, le contexte est graphique bidimensionnel, alors que Gendy synthétise des sons stochastiques).
Pour voir l’effet produit sur le mouvement d’un point par le Monkey, il suffit de construire un point et de cocher l’option « activer la trace » de ce point (onglet « aspect » de ses propriétés). On voit alors la trace laissée par le point :
À l’intérieur de la fenêtre, le mouvement du point est une marche aléatoire, approximation d’un mouvement brownien, et la position instantanée du point est un vecteur aléatoire gaussien d’espérance la position initiale du point, et dont l’écart-type est fonction croissante du temps (pour être précis, proportionnel à la racine carrée de celui-ci). De plus, les rebonds sur les bords de la fenêtre sont non linéaires et il est difficile de prévoir le comportement à long terme du Monkey de manière probabiliste. L’expérience montre que le parcours du point est uniforme dans la fenêtre ! Voici comment on peut le vérifier :
On crée un rectangle dont les sommets ont pour coordonnées respectives
(windoww/2,windowh(4))
(windoww/2,-windowh/4)
(-windoww/2,-windowh/4)
(-windoww/2,windowh/4)
(qui est donc l’homothétique de la fenêtre entière, avec pour rapport $\frac{1}{2}$) ce qui fait que ce rectangle ne bougera pas puisque en définissant les coordonnées de ses sommets par formules, ceux-ci sont devenus fixes :
et puisque ce rectangle a été baptisé du doux nom de poly3 par CaRMetal, compter le nombre de fois que le point mobile P1 sera à l’intérieur du rectangle, avec
sum(inside(P1,poly3))
et diviser par le nombre total de positions du point P1 qui n’est autre que
sum(1)
Au bout de quelques minutes, la fréquence de passage dans le rectangle se rapproche de $\frac{1}{4}$ :
Le fait que la fréquence s’approche de $\frac{1}{4}$ alors que le rapport de l’homothétie est $\frac{1}{2}$ est intéressant à analyser en ces temps de disparition du rapport des aires du programme de Seconde...
Symétrique
Exercice extrait de « la géométrie du compas » : Construire au compas seul, le symétrique d’un point par rapport à une droite. La magie de ce nouveau créateur carmetallien d’exerciciels, c’est qu’on peut très bien créer la figure avec des outils (ici la réflexion par rapport à la droite) et enlever ces outils pour la solution de l’élève. Donc on construit une droite par deux points (a priori mobiles) et un point (bleu) puis son symétrique par rapport à la droite :
Pour faire joli, on peut rendre invisibles les points qui ont servi à construire la droite (avec l’outil « gomme ») :
Ensuite, juste pour embêter l’élève qui fera l’exercice, on active l’environnement restreint, et on ne laisse dans ledit environnement, que le compas et l’essentiel :
On constate alors que la palette d’outils à droite de la figure se retrouve réduite à sa portion congrue ! Il suffit alors comme expliqué dans l’article introductif, de cliquer sur « créer un exercice » (ou utiliser le raccourci clavier) pour avoir la magnifique fenêtre suivante :
En cliquant sur le cadre du haut on se prépare à sélectionner les objets à construire d’un simple clic, ici sur le symétrique dont on apprend au passage qu’il s’appelle P6 :
Ensuite il suffit de cliquer sur « créer » pour que l’exercice soit testable par l’élève. Si on veut que l’élève ne puisse pas modifier l’environnement restreint, on peut exporter l’exercice au format html.
Supposons que, confronté à cet exercice, un élève construise un cercle passant par le point bleu, ses deux intersections avec l’axe de symétrie, et que par ces deux intersections il construise les deux cercles passant par le point bleu, dont l’intersection donne la solution du problème. En cliquant sur « tester l’exercice », il aperçoit une barre de progression indiquant où en est le Monkey dans ses expériences (qui sont invisibles) puis le message suivant :
Ce message ne dit pas seulement que la construction n’est pas bonne, il indique aussi qu’elle est bonne dans la moitié des cas ! Cette information éclaire sur les raisons possibles de l’erreur. Il suffit alors de cliquer sur le Monkey pour voir qu’effectivement, dans la moitié des cas, la construction redonne le point de départ au lieu de son symétrique :
L’explication est que l’intersection des deux cercles étant formée de deux points, pour des raisons de gestion de la continuité, on a une chance sur deux de tomber sur le bon. La solution est de modifier le point construit pour qu’il soit « loin de » l’autre. Le test après ça confirme que la construction est bonne (dans tous les cas).
Milieux
L’énoncé est le suivant :
Construire le triangle dont ABC est le triangle des milieux.
La construction est très rapide avec l’outil « translation » (sélectionné à droite) :
Mais en enlevant l’outil « translation » de l’environnement restreint (après avoir activé celui-ci) la construction est un peu moins facile :
Puisque la construction du triangle rouge ne peut se faire sans ses 3 sommets, ce sont eux qu’il faudrait choisir comme objets à construire. Cependant c’est plus simple de ne choisir que le triangle comme objet à construire.
Maintenant l’élève qui fait l’exercice va être obligé de construire 6 droites : Les côtés du triangle ABC en vert, et les parallèles à ceux-ci par les sommets de ABC, en marron :
Le test de l’exercice donne pour réponse :
À interpréter comme le fait que la construction est correcte dans tous les cas où elle a un sens, ce qui introduit discrètement la notion de « presque sûrement ».
Isocélie
Un exercice peut très bien avoir plusieurs réponses différentes entre elles mais toutes correctes. La question est alors de savoir si on en attend une ou si on les attend toutes. Exemple :
Construire un triangle ABC isocèle en C ayant un angle de 40° tel que AB=2 unités.
Si l’angle en A est de 40°, celui en B aussi et celui en C est alors égal à 100° (le point B a été construit avec l’outil « segment de longueur fixe ») :
Mais il y a un autre tel triangle, celui où les angles en A et B valent 70° (dans ce cas l’angle en C vaut 40° comme demandé) :
Et en comptant les symétriques de ces deux triangles par rapport à (AB), on compte finalement 4 positions possibles pour le point C :
Ces points s’appellent P1, P2, P5 et P8 ; on en aura besoin pour la suite. Si on crée un exercice où seul P1 est demandé, on est doublement embêté :
- L’élève qui construit un autre point que P1 a faux ;
- L’élève qui ne construit que P1 a juste.
Alors l’idée est tentante, de demander les 4 sommets C possibles :
Mais dans ce cas, l’élève qui ne construit qu’un seul de ces points a un message d’erreur. D’ailleurs même si 3 des 4 points sont bons, le message d’erreur persiste.
Cela est dû à ce que les éléments sélectionnés comme réponse à l’exercice sont associés par une conjonction alors qu’on eût ici, souhaité une disjonction. Comment faire alors ?
On ne veut qu’un seul point pour la réponse, mais on veut qu’il puisse sous l’effet du Monkey, être égal à P1, P2, P5 ou P8. Pour cela on peut aider le Monkey avec un dé, ici appelé « e », et égal au hasard à 0, 1, 2 ou 3 :
(c’est un objet de type « expression »).
Alors le point qui peut être égal à P1, P2, P5 ou P8 est un point M dont l’abscisse vaut
if(e==0;x(P1);if(e==1;x(P2);if(e==2;x(P5);x(P8))))
Ne pas oublier de laisser la chaîne entre x et y de manière que l’ordonnée de M soit elle aussi égale à celle de P1, P2, P5 ou P8 !
Après il suffit de choisir M comme objet à construire (et cacher les cibles P1, P2 etc) :
Si on construit un des bons triangles (ici avec la macro « rotation », le triangle de sommet P2), le test de l’exercice donne ceci :
C’est exactement l’effet souhaité : Non seulement du fait que le triangle construit est correct, on ne peut considérer que la construction est totalement fausse, mais même, en lisant un taux d’échec d’environ trois quarts, on devine qu’il manque trois autres triangles ! D’ailleurs en construisant les trois autres triangles, on a le message de triomphe « construction correcte » attendu.
Tétraèdre
Le singe peut-il devenir tridimensionnel ? Pour créer un exercice de section de tétraèdre par exemple, il suffit de faire comme avec les onglets précédents, mais à partir d’une figure de l’espace. Après avoir « construit » un tétraèdre centré sur le repère (qu’on a ensuite caché pour ne pas alourdir la figure), on place trois points I et J sur des arêtes de celui-ci, et K sur une face. Mais il y a deux cas de figure, selon l’arête coupée par (JK) :
Le problème ici est le contraire de celui de l’onglet précédent : Il y a plusieurs cas de figure, et on les veut tous. Le fait que les cibles soient liées entre elles par une conjonction et non une disjonction, est donc ici nécessaire.
On réalise la construction dans chaque cas de figure puis on crée l’exercice où la liste des cibles est formée des 2 polygones obtenus (on n’en voit qu’un seul à la fois, mais on peut entrer leurs noms au clavier) :
Ensuite si un élève ne construit qu’un seul de ces polygones, même s’il est correct, il aura un message d’erreur :
Bien entendu celui qui donne tous les cas de figure aura la « construction correcte » souhaitée.
Orthocentre
Idée de fou (conforme au titre de cet article) : Et si dans l’environnement restreint, on enlevait tous les outils ? Quoi, même la création de point ? Tout, même la création de point ! Quelle serait alors l’utilité d’un exercice infaisable ? En fait pas si infaisable que ça puisque même sans outil, on peut quand même créer une figure : Avec JavaScript !
Pour faire un exemple pas trop long, on demande juste de construire l’orthocentre du triangle ABC, et cette fois-ci, l’énoncé est écrit dans la figure (c’est ce qu’il aurait fallu faire dans les autres onglets d’ailleurs). On commence par construire le fameux orthocentre mais on cache les traits de construction (4 droites) :
Ensuite, comme promis, on enlève tous les outils de l’environnement restreint (en fait on laisse juste les outils expression et texte pour permettre à l’élève d’exprimer sa rage d’être privé d’outils mais l’éditeur JavaScript permet aussi de laisser des commentaires) :
Dans l’éditeur d’exerciciels, on choisit comme unique cible, l’orthocentre (ci-dessous il s’appelle P1) et on le cache pour éviter la recherche au pifomètre :
Une fois cliqué sur « créer », l’exercice paraît très dénudé, sans ses outils :
Cependant, puisque l’éditeur JavaScript reste accessible, on peut faire la construction de l’orthocentre par un CarScript ; voici un exemple :
(on crée les deux droites $(AB)$ et $(AC)$ puis les perpendiculaires à ces droites respectivement par $C$ et par $B$, c’est-à-dire les hauteurs menées par $C$ et par $B$, puis leur intersection)
Après un clic sur le feu vert, la construction s’est réalisée :
Un clic sur le rhesus agite la figure dans une danse effrénée, mais les hauteurs persistent à se couper en l’orthocentre. Et le clic sur « vérifier la construction » confirme que le script est correct :
Pour voir ce que ceci a d’innovant, voir les deux onglets suivants.
Fibonacci
Il est même possible d’utiliser CaRMetal pour faire des exercices d’algorithmique « pure » (sans géométrie). Mais le Monkey n’étant pas capable de vérifier autre chose que des constructions, il faut trouver le moyen de lui faire connaître des nombres sans communiquer ceux-ci sous forme numérique. Comment communique-t-on avec un singe ?
Bingo, par des dessins ! Par contre il faut faire ici un dessin (tous les points immobiles) et pas une figure (où les points pourraient bouger). L’exercice relativement classique de trouver un algorithme calculant la suite de Fibonacci devient maintenant l’exercice suivant :
Écrire un algorithme représentant les 20 premières valeurs de la suite de Fibonacci, les abscisses des points allant de 1 à 20, et les ordonnées étant les valeurs successives de la suite. On écrira le programme en JavaScript et on n’oubliera pas de fixer les 20 points avec « SetFixed(...,true) ».
Une première difficulté pour la création de ce scripticiel est la création du nuage de points ! Pour cela rien ne vaut un bon CarScript, par exemple, juste pour vérifier que même créés différemments les deux nuages de points coïncident, avec la formule de Binet :
- Dans la ligne 6, un arrondi a été nécessaire pour être certain d’avoir des nombres entiers, en effet JavaScript arrondit parfois un peu bizarrement.
- Les lignes 3 et 8 sont indispensables pour que l’exercice soit insensible au Monkey.
- La ligne 9 sert à rendre la cible invisible. Cacher 20 points un par un, c’est un peu fastidieux...
- Les lignes 4 et 10 ne servent pas à construire la cible mais un texte qui va servir à la suite (la liste des cibles, elle aussi fastidieuse à élaborer à la souris).
L’exécution de ce script crée non seulement les 20 points du nuage, mais aussi la liste de leurs noms, dans une fenêtre que CaRMetal a créée à cet usage :
Il suffit de copier (Ctrl+C ou Pomme+C) le texte en question (et se le garder sous l’oreille). La phase suivante c’est la création de l’exercice proprement dit, de demander de cacher les cibles, et une fois positionné sur leur liste, de coller ladite liste qui était bien au chaud derrière l’oreille (Ctrl+V ou Pomme+V) :
On remarque que l’environnement restreint n’a pas été activé. En effet la méthode consistant à entrer les coordonnées des points un par un, en s’aidant par exemple de la calculatrice, est également fastidieuse pour l’élève...
Voici un exemple de ce qui est attendu :
Là encore, les lignes 4 et 10 sont indispensables, la proposition de l’élève ne devant pas plus bouger que les 20 points de l’énoncé. Une fois le script exécuté, le clic sur « vérifier la construction » donne l’affichage triomphal attendu :
Conclusion
La logique floue sert essentiellement à gérer des systèmes experts qui ne raisonnent pas de façon binaire (diagnostic progressif ou probabiliste) ; et l’évaluation automatique d’exerciciels nécessite plus ou moins un système expert. Donc il est nettement logique que la logique floue soit utilisée pour réaliser des exerciciels. Et on s’attend à trouver de nombreux et même vieux travaux sur la question. Et bien apparemment non...
Le Monkey n’est pas réellement nouveau. Le logiciel Cinderella utilise une technique analogue appelée randomized theorem checking. Cependant
- L’émission automatique de conjecture se fait dans Cinderella lui-même, pas dans l’exercice exporté ;
- Il n’est pas possible de voir la figure bouger (le Monkey de Cinderella est et reste invisible) ;
- Le langage CindyScript de Cinderella n’est pas aussi répandu que JavaScript ;
- Il ne semble pas possible de combiner le langage de scripts avec les exercices de construction dans Cinderella ;
- Cinderella n’est pas libre...
Commentaires