\chapterimage{fantastic2}
\chaptertext{À la fin des années  1960 au \textsc{Mit}, Seymour \textsc{Papert},
  après avoir  travaillé avec Jean \textsc{Piaget},  met au point un  langage de
  programmation, LOGO, pour  mettre en pratique la thèse  qu'il défendra pendant
  des  années: \og  c'est  en créant  qu'on  apprend\fg{}. L'informatique
  devient alors un  outil d'\textbf{exploration} de la  mathématique. C'est dans
  cet  état d'esprit  que nous  allons expérimenter  des concepts  mathématiques
  très    importants:    les   rapports    global/local,    implicite/explicite,
  topologie/géométrie,...et  tout ça  avec  une petite  tortue  que nous  allons
  piloter avec Python  pour aller effectuer un voyage fantastique  au centre de
  la mathématique.

Pour  prolonger  vos  explorations,   n'hésitez  pas  à  dévorer  \textit{Turtle
  geometry}  de  Harold \textsc{Abelson}  et  Andrea  \textsc{diSessa} paru  aux
\textsc{Mit} Press en...1981.
}

\chapter{L'aventure géométrique}

\section{Et le taupin créa la tortue}

Nous allons  créer notre  exploratrice mathématique à  partir des  commandes les
plus simples: \og tourne\fg{}, \og avance\fg{}, \og saute\fg{}...

Voici   les  principales   commandes   qui  nous   permettront   de  partir   en
exploration. Analysez-les et comprenez-les et améliorez-les si besoin...

\begin{lstlisting}
from turtle import *

color('red', 'yellow')
speed('fast')

def tourne(angle):
    left(angle)

def avance(longueur):
    forward(longueur)

def saute(longueur):
    penup()
    avance(longueur)
    pendown()

def efface():
    home()
    clear()
\end{lstlisting}


Expérimentez pour bien comprendre le rôle et les spécificités de chaque procédure.


\section{Polygone}

\begin{quote}
  {\small \itshape Our Women are Straight Lines.

Our Soldiers  and Lowest Class  of Workmen are  Triangles with two  equal sides,
each about  eleven inches long,  and a  base or third  side so short  (often not
exceeding  half an  inch) that  they form  at their  vertices a  very sharp  and
formidable angle.  Indeed when their  bases are of  the most degraded  type (not
more than the eighth part of an  inch in size), they can hardly be distinguished
from Straight lines or Women; so  extremely pointed are their vertices. With us,
as  with you,  these Triangles  are distinguished  from others  by being  called
Isosceles; and by this name I shall refer to them in the following pages. 

Our Middle Class consists of Equilateral or Equal-Sided Triangles.

Our Professional Men and Gentlemen are  Squares (to which class I myself belong)
and Five-Sided Figures or Pentagons. 

Next above these come the Nobility, of whom there are several degrees, beginning
at Six-Sided Figures, or Hexagons, and from thence rising in the number of their
sides   till   they   receive   the    honourable   title   of   Polygonal,   or
many-Sided. Finally  when the number of  the sides becomes so  numerous, and the
sides  themselves so  small,  that the  figure cannot  be  distinguished from  a
circle,  he is  included in  the Circular  or Priestly  order; and  this is  the
highest class of all.}

\end{quote}

\begin{flushright}
in \og Flatland: A Romance of Many Dimensions\fg{} de Edwin \textsc{Abbott} (1884)
\end{flushright}

\subsection{Des expériences}

Nous voici prêts:  en utilisant uniquement les  commandes précédentes, commencer
par   tracer  un   triangle  équilatéral,   un  carré   ,  puis   une  procédure
\verb+triangle(cote)+ qui va tracer un triangle 
équilatéral de côté \verb+cote+. On peut faire de même pour les carrés avec 
une procédure \verb+carre(cote)+.

Bon, euh, c'est en  traçant des carrés avec une tortue que  vous allez rentrer à
Ulm?...

Arrêtons-nous  un instant  sur la  nature de  la géométrie  de la  tortue en  la
comparant à la  géométrie cartésienne: quelles différences  voyez-vous entre les
deux?

La différence  est encore plus  nette lorsqu'il s'agit  de tracer un  cercle. En
géométrie cartésienne, on utilisera l'équation $x^2+y^2=R^2$.

Comment  tracer un  cercle  avec  la tortue?  Quelles  notions mathématiques  se
cachent derrière?

Que se passe-t-il avec l'objet décrit par $x^2+2y^2=R^2$?

La tortue ne s'occupe donc que des propriétés intrinsèques des figures.

De plus elle n'a de vision que locale: elle n'a pas de vision globale de l'objet
qu'elle explore. Cela peut paraître un inconvénient mais c'est en fait une force
qui lui permet d'aborder des notions mathématiques bien plus poussées, notamment
dans l'exploration des surfaces.

Enfin la  tortue utilise des procédures  et échappe au formalisme  des équations
algébriques ce qui permet d'aller plus loin avec des outils simples.

Bon, passons à la récréation...

%\vfill
%y\eject

 Dessinez des petites choses comme ça:



\begin{multicols}{4}

\includegraphics[width=0.8\linewidth]{sessio02}
\includegraphics[width=0.8\linewidth]{sessio03}
\includegraphics[width=0.8\linewidth]{sessio04}
\includegraphics[width=0.8\linewidth]{sessio05}
\includegraphics[width=0.8\linewidth]{sessio06}
\includegraphics[width=0.8\linewidth]{sessio07}
\includegraphics[width=0.8\linewidth]{sessio08}
\includegraphics[width=0.8\linewidth]{sessio09}

\end{multicols}


avec des procédures du type:

\begin{lstlisting}
poly1(cote,angle,nb) # la tortue avance nb de cote unités et tourne d'angle degrés
poly2(cote,angle,facteur,nb) # on tourne tantôt d'angle, tantôt d'angle*facteur
poly_spirale(cote,angle,inc,nb) # procédure récursive qui incrémente le côté
poly_spirale2(cote,angle,inc,nb) # procédure récursive qui incrémente l'angle
\end{lstlisting}

Peut-on contrôler le rayon d'un cercle tracé par la tortue?

Déterminez une procédure qui dessine un arc de cercle.

Le  rayon du  cercle est  une notion  globale  qui est  malgré tout  liée à  une
quantité locale que la tortue peut donc mesurer. 



% Commentez cette procédure:

% \begin{lstlisting}
% > poly4 := proc(cote,angle)
%     local total;
%     if angle = 0 then 
%         ERROR('ligne droite')
%     elif floor(angle) < angle then
%         ERROR('l angle doit être un entier')
%     else
%         total := 0;
%         while irem(total,360) > 0 or total = 0 do 
%             avance(cote);
%             tourne(angle);
%             total := total + angle;
%          od;
%     fi;
%   end:
% \end{lstlisting}

\subsection{Un théorème}

Observez vos  \verb+poly1+: semble-t-il y avoir  une relation entre le  nombre de
côtés et l'angle?

On peut distinguer deux classes de \verb+poly1+ par leur \og aspect\fg{}: est-ce
que cela se retrouve dans la relation précédente?

Que se passe-t-il  pour des chemins clos quelconques? On  dira qu'un chemin clos
est simple s'il n'a pas de boucle.

Comment peut-on alors retrouver un vieux théorème sur les angles intérieurs d'un
triangle? Et pour des polygones \og sans boucle\fg{} quelconques ?

Où se  retrouvent les sommets  de n'importe quel \verb+poly1+?  Pourriez-vous le
démontrer?

Démontrez alors le théorème suivant:

\begin{theoreme}
Un chemin tracé par la procédure \verb+poly1+ se refermera exactement lorsque la
rotation totale atteindra un multiple de 360\degre.
\end{theoreme}


Écrivez alors une procédure \verb+poly+ qui s'arrête quand le chemin se ferme.


\section{Une tortue prédatrice}


\setindent{0cm}
\begin{flushleft}
\begin{minipage}[t]{3cm}
  \includegraphics[width=3.2cm]{ninja}
\end{minipage}
\end{flushleft}
\setindent{\indentationcours}
\vspace{-5cm}
\begin{minipage}[t]{\linewidth}


\end{minipage}

Notre tortue  gagne en  confiance et part  s'amuser à Las  Vegas: comme  vous le
savez, de nombreuses  méthodes de recherche sont plus efficaces  si les éléments
de l'ensemble exploré sont choisis aléatoirement. 

On va tout  d'abord observer une tortue se déplaçant  aléatoirement: nous allons
faire suivre à  \verb+avance+ et \verb+tourne+ une loi uniforme  en utilisant la
fonction \verb+randint+ de Python.

\begin{lstlisting}
from random import randint

In [66]: randint(1,6)
Out[66]: 3
\end{lstlisting}

Créez alors une fonction:

\begin{lstlisting}
random_move(d1,d2,a1,a2,n)
\end{lstlisting}

avec d1 et d2 les bornes de la direction, a1 et a2 les bornes de la longueur des
pas et $n$ le nombre de pas.

Faites   varier  les   paramètres.   Des  conjectures?   Comment  étudier   plus
scientifiquement tout ceci?

Bon, dotons à présent notre tortue d'un odorat et utilisons-la comme chasseuse...


On va  dire que  l'odeur sera  inversement proportionnelle à  la distance  de la
proie. On crée une proie et une fonction qui calcule la distance.



On va dire qu'à  chaque étape, la tortue va avancer  d'une distance aléatoire et
tourner la tête aléatoirement.
Si  elle  sent  qu'elle  s'éloigne,  elle  va se  tourner  d'un  angle  fixe  et
recommencer à avancer. Sinon, elle recommence à avancer.

Vous aurez donc une procédure:

\begin{lstlisting}
chasse(d,a,o,n)
\end{lstlisting}

sachant  que  la   tortue  avance  d'une  distance   uniformément  choisie  dans
$\{1,2,..,a\}$, tourne  aléatoirement sa tête  d'un angle compris entre  $-d$ et
$d$  pour chercher  l'odeur et  si elle  sent qu'elle  s'éloigne, elle  tournera
toujours la tête de o et ce pendant $n$ étapes.

Par exemple:

\begin{lstlisting}
chasse(60,5,90,200)
\end{lstlisting}



%\begin{figure}
\begin{center}
  \includegraphics[height=7cm,angle=270]{sessio11}
\end{center}
%\end{figure}


On peut améliorer  le modèle en dotant  la tortue de deux  narines: selon l'odeur
reçue dans chaque narine, elle ira plutôt vers la droite ou la gauche.

On peut ensuite faire bouger la proie qui peut être elle aussi dotée d'un odorat
et s'éloignera de sa prédatrice.

Ensuite, il faudra  étudier les probas, la dynamique derrière  tout ça...tout un
sujet de TIPE ;-)


\section{Une tortue topologique}

La tortue,  en plus de  dynamiser la géométrie va  aussi la faire  fondre.  Nous
allons en  effet travailler  à présent  sur des  objets mous,  disons en  pâte à
modeler.

Dans ce  monde, un carré,  un triangle,  un cercle sont  en fait un  même objet:
quelque chose qui a la même \og forme\fg{}: pour nous, ce sera le même nombre de
\og tours\fg{} pour parcourir le chemin.


Prenez un triangle, vous le \og  déformez\fg{} petit à petit pour qu'il devienne
un carré. Pour le parcourir, la tortue  fait toujours un seul tour: on dit alors
que le nombre  de tours de la tortue (on  va l'appeler \textit{indice chélonien}
($χελωνη$ voulant dire tortue...))
est un \textit{invariant topologique}. 

Lorsque vous effectuez ces \og petites\fg{} déformations, vous ne pouvez changer
l'indice chélonien que faiblement or cet indice  est un entier donc il ne va pas
bouger.

Bon, c'est  un peu intuitif  et vasouilleux:  peut-on faire mieux  sans attendre
d'être en Master 2? 



%\begin{figure}
\begin{center}
  \includegraphics[scale=0.32]{wn}
\end{center}
%\end{figure}


Il y  a des  problèmes: on  peut faire  disparaître une  boucle par  \og petites
déformations\fg{}, on peut en créer trois  d'un coup, et en parcourant un cercle
dans l'autre sens, on ne déforme rien  mais dans tous les cas on change l'indice
chélonien tout d'un coup.

Alors  c'est quoi  une \og  petite déformation\fg{}?  On va  dire que  c'est une
déformation qui ne change pas la procédure de parcours du chemin.

\textbf{En fait, il faut penser à un chemin comme étant un programme pour tortue
(dynamique) et non pas un dessin (statique).
}. Si vous  gardez ça en mémoire  quelques années, vous aurez  peut-être plus de
facilité à aborder la topologie...

Ainsi, ce qui sur le dessin paraît un  petit changement en est un énorme dans le
programme (il faut  faire faire tout d'un  coup un tour de plus  sur elle-même à
la tortue).

Bon,  puisqu'il faut  regarder  les programmes  qui font  bouger  la tortue,  il
faudrait un peu les normaliser pour les comparer.

Premier problème: \verb+tourne(90)+ et  \verb+tourne(-270)+. Pour y remédier, on
conviendra de n'utiliser que des mesures  principales pour les angles (de valeur
absolue inférieure à 180).


Ceci nous  permet par  exemple de  pouvoir déceler  les petites  déformations du
dessin qui font disparaître une boucle\footnote{Pour les MP$^{\star}$: est-ce que M. \textsc{Sauvageot}
    vous a déjà fait le coup du n\oe ud de cravate?}: \textbf{comment?}


Bon, nous voulons bien  croire que deux chemins de même  type topologique ont le
même coefficient  chélonien mais qu'en  est-il de  la réciproque. Et  bien c'est
encore vrai et cela constitue un beau théorème publié en 1937:

\begin{theoreme}[Théorème de \textsc{Whitney-Graustein}]
  Deux chemins fermés du plan peuvent être déformés de l'un vers l'autre si, et
  seulement si, ils ont le même coefficient chélonien.
\end{theoreme}


Bon, cela n'a pas été écrit comme  ça...Vous pouvez lire le court article publié
par \textsc{Whitney} à cette adresse:

\href{http://archive.numdam.org/article/CM\_1937\_\_4\_\_276\_0.pdf}{http://archive.numdam.org/article/CM\_1937\_\_4\_\_276\_0.pdf}

et celui-ci paru vingt ans plus tard sous la plume de John \textsc{Griffin}:

\href{http://archive.numdam.org/article/CM\_1956-1958\_\_13\_\_270\_0.pdf}{http://archive.numdam.org/article/CM\_1956-1958\_\_13\_\_270\_0.pdf}

Enfin, vous pourrez regarder cette preuve moderne donnée en 2007 par Hansjörg \textsc{Geiges}:

\href{http://arxiv.org/abs/0801.0046}{http://arxiv.org/abs/0801.0046}

Bon,  notre  petite  tortue  nous  fait voyager  dans  une  mathématique  plutôt
moderne...

On  pourrait  avoir une  autre  idée  \og  statique\fg{}:  le nombre  de  points
d'intersection  dans  le   chemin  pourrait  nous  donner   aussi  un  invariant
topologique: qu'en pensez-vous?
Quels sont les coefficients chéloniens possibles  de chemins ayant un seul point
d'intersection? Deux? Trois?

\section{Le tour du monde de la tortue}

Une tortue part  de l'Équateur, avec un  angle de 90\degre. Elle  arrive au Pôle
Nord et tourne à nouveau de  90\degre. Elle retourne sur l'Équateur, retourne de
90\degre: elle revient donc  à son point de départ. Elle a  donc suivi un chemin
fermé et  elle a  tourné de...270\degre  ! Voilà  qui met  à mal  notre théorème
initial.

De plus, si elle  tourne de 70\degre au Pôle Nord, elle aura  tourné au total de
250\degre... Notre coefficient chélonien n'est plus entier ?!


\setindent{0cm}
\begin{flushleft}
\begin{minipage}[t]{3cm}
  \includegraphics[width=3cm]{dahu}
\end{minipage}
\end{flushleft}
\setindent{\indentationcours}
\vspace{-5cm}
\begin{minipage}[t]{\linewidth}


\end{minipage}


Les déplacements de  la tortue sur un plan étaient  régis par des \verb+avance+,
donc des petits bouts de ligne droite  mais au fait, c'est quoi une ligne droite
sur une sphère? Pour que la tortue sache qu'elle va en ligne droite, il faudrait
que la caractérisation d'une ligne droite soit locale...

Marcher tout  droit, sans tourner, qu'est-ce  que c'est? Essayez de  marcher \og
tout droit\fg{} le long d'un parallèle différent de l'Équateur.


Autre problème: la  tortue marche \og tout droit\fg{} d'un  Pôle à l'autre (sans
utiliser de \verb+tourne+) puis
revient au Pôle initial en faisant des pas  de côté: elle n'a pas tourné la tête
et pourtant que se passe-t-il?

Maintenant, revenons  au grand  triangle de 270\degre.  Imaginons que  la tortue
garde avec elle un pointeur indiquant  sa direction initiale: elle peut faire ça
localement avec un peu de mémoire. À  chaque fois qu'elle tourne, elle laisse le
pointeur vers  la direction initiale: que  se passe-t-il pour le  pointeur quand
elle revient au départ? 








%%% Local Variables: 
%%% TeX-master: "PolyIPT2014_15.tex"
%%% End: 
