Le travail des Terminales - Années 2012/2013

Années 2012/2013


Le travail des Terminales

     Pour tenter de résoudre le problème, les terminales ont tout d'abord créé un algorithme sur Algobox qui simule le fonctionnement de la machine:

1  VARIABLES
2  A est le pas alpha
3  B est le reste à parcourir beta
4  X est l'abscisse du point actuelement creusé
5  N est le nombre de fois que la machine à creusé
6  M est le nombre de fois que la machine est revenue en arrière.

7  DEBUT_ALGORITHME
8  LIRE A
9  X PREND_LA_VALEUR 0
10 N PREND_LA_VALEUR 0
11 M PREND_LA_VALEUR 0
12 B PREND_LA_VALEUR 1-X
13 TANT_QUE (B!=0) FAIRE
14      DEBUT_TANT_QUE
15      SI (B>=A) ALORS
16           DEBUT_SI
17           N PREND_LA_VALEUR N+1
18           X PREND_LA_VALEUR X+A
19           FIN_SI
20      SI (B<A) ALORS
21           DEBUT_SI
22           X PREND_LA_VALEUR A-B
23           N PREND_LA_VALEUR N+1
24           M PREND_LA_VALEUR M+1
25           FIN_SI
26      B PREND_LA_VALEUR 1-X
27      FIN_TANT_QUE
28 AFFICHER "Distance entre 2 creux A= "
29 AFFICHER A
30 AFFICHER "Nombre de déplacements N= "
31 AFFICHER N
32 AFFICHER "Nombre de retour en arrière M= "
33 AFFICHER M
34 AFFICHER "Nombre de creux N+1= "
35 N PREND_LA_VALEUR N+1
36 AFFICHER N
37 FIN_ALGORITHME

     Ainsi, en fin d'algorithme, on connaît le nombre de fois que la machine a creusé, a avancé de alpha, et est retournée en arrière. En connaissant le temps mis par la machine pour effectuer chacune de ces actions, on peut savoir le temps total mis par la machine pour creuser un trou à fond plat.
     Ils ont aussi réalisé une version graphique du site, qui affiche les points au fur et à mesure qu'ils sont creusés, ceci afin de pouvoir visualiser le résultat du travail de la machine. Vous pouvez tester la version normale ici (Cette version ne fonctionne pas toujours, la raison est expliquée plus bas,voici un exemple de valeur qui fonctionne:0.25) et la version graphique ici (Pour bien voir le graphique se tracer, descendez sur la page de façon à ce que le bouton de lancement de l'algorithme soit tout en haut de l'écran).



     Mais bien évidemment, un problème est apparu... bah oui, sinon ça ne serait pas drôle! Ce problème, le voilà: pour certaines valeurs, l'algorithme cesse de fonctionner. Cela est dû à la boucle '' TANT_QUE (B!=0)'' qui dure trop longtemps et/ou ne s'arrête pas : c'est ce que l'on appelle une boucle infinie. Pour éviter cela, une sécurité arrête l'algorithme "de force" dès qu' une boucle ''Tant que'' est exécutée plus de 200 000 fois.

     Cette sécurité est imposée par le logiciel qui a servi à créer l'algorithme, Algobox. Après quelques recherches sur internet et dans l'aide d' Algobox, nous avons appris que le problème ne vient pas de notre algorithme, mais de la façon dont sont gérés les nombres par les ordinateurs. Pour ces derniers, les nombres décimaux avec lesquels nous avons l' habitude de compter (comme: 151 ; 5,3 ; -875 ; 1 000 580) sont convertis en nombres binaires (comme: 10001001 ; 1110 ; 00011011).
     Or à un moment, quand des nombres binaires deviennent trop grands, les résultats des opérations qu'ils subissent deviennent imprécis. Concrêtement, le reste beta qui devrait valoir 0 ne vaut pas 0 mais quelque chose comme 0,000000000000000000000000000000001. La condition de la boucle est donc tout le temps vraie, donc l'algorithme ne s' arrête pas alors qu'il le devrait.
     Pour contourner le problème, ils ont tenté de reprogrammer l'algorithme non pas avec Algobox, mais en le programmant avec le langage de programmation Java. Le programme final fonctionnait, mais rencontrait le même problème qu'avec Algobox...



     Le problème étant insoluble, les terminales ont laissé tomber l'outil informatique, pour prendre un papier et un crayon...(brrr!)
     Ils ont donc re-modélisé le problème, non pas sous forme algorithmique comme précédemment mais sous forme mathématique. Suivant les indications de notre chercheur, ils ont exprimé: α = p/q avec p et q entiers premiers entre eux. Pour la suite, ils ont utilisé deux suites pour modéliser le problème, avec n= nombre e trous creusés:
-Un= α*n = (p/q)*n ==> Symbolise le nombre de trous
-Vn= Un-E(Un) ==> Symbolise l'abscisse d'un point
Ils ont ensuite prouvé que la suite V(n) est périodique de période q. Démonstration ci-dessous:

     Donc V(n) est bien périodique de période q. La fréquence étant l'inverse de la période, on peut donc en conclure que les trous seront séparés de l'inverse de la période, donc les trous seront séparés de: 1/q.



     Ainsi donc, comme on sait que la distance séparant les trous sera égale à 1/q, si q tend vers +∞, alors le fond du trou sera plat. Or +∞ n' est pas une valeur finie, donc avoir un trou à fond plat est impossible du point de vue purement mathématique avec alpha rationnel.

     Si maintenant l'on sort des maths, et que l'on se place dans le point de vue réel, les trous étant séparés de 1/q, si on donne une épaisseur au foret, et que cette épaisseur est égale ou supérieure à 1/q, alors le trou aura un fond plat.

     Revenons aux Maths... Une possibilité n'a pas été explorée... Que se passe-t' il si alpha est un irrationnel? Comme l'ont prouvé les Secondes, pour que le programme s’arrête, alpha doit être rationnel. Donc si l'on prend un alpha irrationnel, le programme ne s' arrêtera pas, et il ne touchera pas deux fois le même point. Ce qui nous mène à un paradoxe: Comme le programme tournera à l'infini et qu'il ne touchera pas deux fois le même point, on sait que chaque point sera touché à un moment donné. Cela peut être long, mais on est sûr que chaque point finira par être atteint. Mais étant donné qu'il y a une infinité de points, ils ne peuvent pas tous être atteints.

     Donc il est possible d'atteindre n'importe quel point, mais impossible de tous les atteindre. Voilà donc le paradoxe auquel sont confrontés les élèves de Terminale. Cependant, si l'on relativise, ce problème insoluble en maths trouve une solution en donnant une épaisseur au foret, en se plaçant dans le point de vue de la réalité, qui est finalement l'endroit où il est le plus utile de trouver une solution à ce type de problème...