Les maths chez Jumel

{ Le blog d un professeur de mathematiques }

recherche

Aller au contenu | Aller au menu | Aller à la recherche

LaTeX et calcul formel

Dans le but de créer des planches d’exercices relativement basiques (niveau Terminale) avec un corrigé pour des problèmes relativement simple, je vous propose une méthode, qui peut encore être améliorée.

Lire la suite

Des courbes «contrôlées» sous LaTeX

Comment faire des courbes qui «tiennent la route» avec LaTeX ? Pour tracer une fonction dont l’expression est connue, TiKz avec la commande \draw plot (\x,{f(\x)}) ; remplit très bien l’affaire.

Mais pour des fonctions qu’on interpole sur un nombre fini de points, le résultat n’est pas toujours celui escompté. En effet, l’interpolation est un sujet assez vaste et il existe de nombreuses façons de procéder. D’autant plus qu’on souhaite souvent contrôler la dérivée de la fonction obtenue, au moins un en un certain nombre de points.

On peut certes toujours recourir à l’interpolation de Hermite, mais il s’agit d’une technique pénible à mettre en œuvre en TeX, et il est plus simple de recourir à un autre algorithme qui existe déjà : hobby.

Lire la suite

Une vidéo pour expliquer le fonctionnement des groupes

Une vidéo pour expliquer le fonctionnement de Koxo Login

Conférence sur RSA pendant la semaine des mathématiques

Jean-Baptiste de la Salle Saint-Denis organise depuis quelques années des conférences à destination des élèves de Terminale, leur permettant ainsi de se familiariser avec le format du cours magistral en amphi.

Je donnerai donc une conférence vendredi 20 mars dont l’exposé est en ligne ici.

Django en environnement hostile

Prérequis : Installer des paquets supplémentaires

L’installation de Django se fait depuis PyPi.

Ensuite, toutes les commandes indiquées dans la doc doivent être exécutées via

from subprocess import check_output
check_output(['P:/App/EduPython/App/python.exe', 'P:/Mes documents/ISN/Django Windows/test_isn/manage.py', '<command>'],stderr=STDOUT)

que l’on peut regrouper dans une fonction :

from subprocess import check_output
def django_cmd(cmd):
    check_output(['P:/App/EduPython/App/python.exe', 'P:/Mes documents/ISN/Django Windows/test_isn/manage.py', cmd],stderr=STDOUT)

Comparaison remarkjs et reveal.js dans le cadre d'ISN en Terminale

Dans le cadre de l’enseignement de spécialité au lycée, j’initie mes élèves à la création de diaporamas utilisant HTML. Cette initiation présente le double avantage de présenter des rudiments de HTML5 tout en proposant un rendu rapidement réutilisable dans un autre enseignement.

Jusqu’à présent, je faisais ce travail uniquement avec reveal.js qui est très proche du HTML, mais qui manque parfois de quelques fonctionnalités. En effet, il est assez compliqué de pouvoir intégrer des notes à une telle présentation de façon à ce qu’elles soient exploitables directement dans un mode «présentation»

Depuis quelques temps, je lorgnais sur remark, un autre framework, presque «minimaliste» mais qui présente d’autre avantages. En particulier la gestion du mode «présentation» est remarquable (pour peu que l’écran du vidéoprojecteur ne soit pas un simple clone de celui de l’ordinateur)

D’un point de vue pédagogique, reveal.js permet de présenter HTML5 comme format d’écriture, et en particulier de faire saisir la notion de feuille de style en rendant le document d’abord sans la feuille de style associée puis avec. Remark.js le pemert aussi fondamentalement, mais en ajoutant une couche de Markdown qui est ensuite rendu/transformé via l’utilisation du Javascript. Il est donc moins évident d’y appliquer un style autre pour l’impression (besoin de comprendre les notions de DOM)

Du point de vue pratique, je compte conseiller l’utilisation de reveal.js aux élèves tout en utilisant moi-même remark.js

Des intersection avec LaTeX

Dans le cadre de la correction d’un devoir, je cherchais à faire en sorte que tikz puisse me calculer automatiquement les intersections de deux courbes mathématiques. C’est chose faite et je vais commenter un peu avant de présenter le code.

Tout d’abord, nous avons besoin des packages suivants :

\usepackage{tikz}
\usetikzlibrary{hobby,calc,intersections}

Ensuite, à l’intérieur d’un dessin, définissons nos courbes :

\begin{tikzpicture}
  \draw [name path=h] plot [hobby] coordinates {(-4,-2)(-3,2)(-2,6)
  (0,2)(2,-2)(3,4)} ;
  \draw [name path=f] plot [smooth] (\x,{\x^2 - \x -6}) ;
\end{tikzpicture}

Pour calculer les coordonnées, on trouve dans le manuel de tikz des informations, mais il m’a fallu lire les commentaires sur Extract x, y coordinate of an arbitrary point in TikZ pour comprendre comment faire les choses de la façon la plus efficace. J’ai donc d’abord écrit cette première \definition :

\def\pttocm#1{\pgfmathparse{#1 / 19.93333 }\pgfmathprintnumber{\pgfmathresult}}

qui permet de convertir l’unité de longueur de $\TeX{}$ dans l’unité de longueur de TikZ (cm).

La seconde macro que j’ai utilisé permet ensuite d’afficher les couples de points :

\newcommand{\printcoords}[1]{
  \newdimen\posx
  \newdimen\posy
  \pgfextractx{\posx}{\pgfpointanchor{#1}{center}}
  \pgfextracty{\posy}{\pgfpointanchor{#1}{center}}
  \scriptsize (\pttocm\posx ; \pttocm\posy ) \normalsize
}

Notons l’utilisation de l’ancre center : en effet, pgfgetlastxy{<point>} renvoie le dernier point utilisé par pgf, qui est parfois n’importe où.

Pour finir, afin d’avoir un affichage compatible avec les notations françaises, on n’oublie pas de positionner certaines variables :

\pgfkeys{/pgf/number format/.cd,fixed,precision=1,dec sep={,}}

On a désormais fini nos définitions et nous voulons désormais tracer et obtenir les coordonnées des points d’intersections :

\path [name intersections ={of = h and f }] ;
\coordinate (A) at (intersection-1) ;
\draw (A) node[draw,cross] {} ;
\draw (A) node[below left] {\printcoords{A}}  ;

On définit donc un chemin nommé intersections (de f et h). intersection-<n> est la n-ième intersection et donc \coordinate (A) at (intersection-1) ; définit un point A qu’on peut dessiner sous forme d’une croix et dont on peut donner les coordonnées.

Deux pistes d’améliorations :

  • fournir une interface plus haut niveau ;
  • fournir une fonction (macros) qui ne renvoie que X ou que Y.

Et pour conclure, un ECM ! Vous noterez dans celui-ci :

  • l’utilisation de domain=a:b pour restreindre un plot à un intervalle
  • que l’algorithme de hobby donne parfois des interpolations étranges : pour le voir, recompilez le document avec smooth.

Vous pouvez insérez les axes et la grille pour obtenir le rendu que je publierais la semaine prochaine.

Une progression «historique» en quatrième

Depuis le début de l’année, j’explore l’histoire des Mathématiques avec une classe de quatrième. Notre périple nous a fait passer beaucoup de temps parmi les grecs anciens, à étudier, comme eux, les triangles, à formaliser la géométrie, etc …

Je tâcherai de publier un compte-rendu détaillé de cette progression lorsque j’aurais un peu plus de temps.

Faire entrer le numérique dans l'école

Voilà une bien belle formule de notre précédent ministre de l’Éducation. À lire ce qui a été écrit sur ce sujet, il s’agit de faire entre le «numérique pédagogique»[1] dans l’école, mais la pédagogie ne peut, en réalité, que s’appuyer sur des situations totalement maîtrisées par les enseignants et leurs hiérarchies.

Quelques idées

Je vais simplement développer ici quelques idées quand à la pratique de l’informatique telle que je la conçois, non dans les applications pédagogiques, mais dans les applications pratiques.

Commençons par le début :

  • chaque enseignant doit être équipé d’un ordinateur ;
  • chaque salle doit être équipé, a minima, d’un vidéo-projecteur ;
  • chaque établissement doit être doté d’un intra/extra-net permettant :
    • utiliser facilement une messagerie professionnelle ;
    • utiliser un calendrier partagé/personnel (au sens professionnel)
    • utiliser facilement un cahier de texte ;
    • accéder facilement à une liste d’élève pour :
      • y saisir des notes ;
      • y saisir des remarques/observations ;
      • y valide des compétences ;
    • utiliser un espace de stockage/synchronisation des documents ;
    • communiquer sur des points précis exigeants un formatage ;

Précisions sur ces idées

Précisons désormais un peu ces items.

L’ordinateur doit être un ordinateur individuel, considéré comme matériel au même titre que les feutres et les craies.

En ce qui concerne la messagerie, il s’agit désormais d’un produit standard. Néanmoins pour le rendre efficace, il faut que cette messagerie soit couplée à un moyen efficace d’envoyer des messages à des groupes prédéfinis, ç’est à dire être couplée à un gestionnaire de liste de diffusion.

Remplir un cahier de texte devrait être aussi facile qu’écrire un billet de blog : au travers d’une interface web bien conçue, présentant également en XML-RPC les mêmes fonctionnalités, et en étant couplée avec l’emploi du temps, stocké dans le calendrier. Le format iCalendar est tout à fait pertinent pour stocker des calendriers.

L’accès à une liste d’élève peut se faire sous différentes formes : une liste ou un trombinoscope. Ce qui permet aux enseignants voyant peu les élèves d’y accéder sous une autre forme. L’accès à la fiche d’un élève permettrait de voir rapidement les observations stockées sur l’élève, ainsi que ses notes, ou les compétences qu’il a acquises.

Le stockage des documents aujourd’hui peut se faire sur le fameux cloud et peut être synchronisé facilement. Il est impératif qu’une école qui se veut numérique passe par de tels moyens.

Enfin, la gestion courante[2] passe par un gestionnaire de bugs ou de ticket bien employé : une anomalie est constatée par un enseignant, rapportée par l’interface de son choix et traitée par la personne idoine.

Quels choix faire ?

Bien évidement, il faut partout faire le choix de l’indépendance et du logiciel libre. Voici quelques idées de logiciels, méthodes ou autres :

  • stocker le plus possible les informations sur les personnes dans un annuaire LDAP
  • brancher l’annuaire avec le plus de services possibles
  • owncloud pour le partage des fichiers et des calendriers
  • WYW en solution de messagerie
  • Sympa pour la gestion des listes
  • redmine, bugzilla, rt pour les tâches
  • développer un vrai système de cahier de texte en ligne

Notes

[1] Attention le numérique n’est pas les activités numériques du cours de mathématiques, mais est l’informatique.

[2] locaux, matériels, comportement d’élève

Installer des paquets python supplémentaires dans EduPython (ou PythonPortable)

Pour les besoins d’ISN, j’utilise EduPython, une version de Python déjà bien fournis en modules, sélectionnés pour un usage au lycée. Néanmoins dans le cadre d’ISN, on est parfois tenté d’utiliser des modules qui ne sont pas encore présents ou on souhaite utiliser la dernière version de ceux-ci. Il faut donc se donner un moyen d’installer de nouveau module.

EduPython utilise Python3, nous allons installer pip : Pour cela, il faut télécharger get-pip.py comme indiqué sur http://pip.readthedocs.org/en/latest/installing.html#id6

Une fois le fichier récupérer, ouvrez le avec PyScripter et exécutez le comme un “bête” programme Python.

Mais ce n’est pas fini, il faut désormais installer de nouveaux paquets. Voici une méthode, tirée de http://stackoverflow.com/questions/12332975/installing-python-module-within-code :

import pip

def install(package):
    pip.main(['install', package])

if __name__ == '__main__':
    install('pytz')

On exécute ce script et on peut ensuite vérifier dans l’interpréteur Python en tapant import pytz.

import subprocess

subprocess.check_output(['P:\App\EduPython\App\Scripts\pip.exe','search','qrcode'])
subprocess.call(['P:\App\EduPython\App\Scripts\pip.exe','install','qrcode'])

fonctionne également.

Quelques idées de «mini-projets» Python plus ou moins long

Voici quelques projets en Python qui pourraient prendre assez peu de temps en réalisation et dont voici une solution, plus ou moins pédagogique :

ISN 3 séances en janvier 2014

Le mois de janvier voit le début des projets :

  • un groupe travaille sur un clone de bomberman avec Python et en particulier pyGames
  • un groupe développe une application android qui présente le site web de l’établissement de façon plus conviviale pour visualiser les informations essentielles sur téléphone mobile.

Les élèves se mettent rapidement au travail sur leurs projets respectifs et me sollicitent lorsqu’ils rencontrent des points de blocages.

Une séquence autour des nombres relatifs en 4ème

Cette séquence permet aux élèves de s’approprier les notions sur le produit des nombres relatifs, en réinvestissant les connaissances de la classe de 5ème.

Comme pour la séquence précédente, les documents sont en annexes et les sources LaTeX sont disponibles.

ISN Séance 6, 7 et 8

Après une présentation rapide de Python et de l’interface d’AmiensPython devant les élèves, l’idée est de se mettre rapidement au travail sur la résolution de petits problèmes classiques :

  • Sélectionner un mot sur deux dans un fichier et écrire le résultat dans un autre fichier ;
  • lire une url, et trouver une information spécifique dans ce document, l’afficher et la stocker dans un fichier.

Une séquence autour du théorème de Pythagore

Je publie ici une nouvelle séquence, cette fois autour du théorème de Pythagore.

Les activités, exercices et problèmes doivent permettre aux élèves d’appréhender les aspects importants du théorème de Pythagore, en particulier de la rupture que ce théorème a pu créer.

Les documents sont en annexes de ce billet.

Vous trouverez les sources au format LaTeX.

Séance 3-4 ISN

Lors de la séance 3, les élèves ont continué leur travail de découverte des propriétés CSS et de la liberté associée, naturellement à un langage ouvert comme le HTML. Ils ont pu partager, au sens surtout de la réception, des fragments de codes qu’ils ont pu réinvestir dans un outil comme http://lab.hakim.se/reveal-js/#/, en particulier dans la séance 4.

Ils disposent désormais d’un outil interopérable pour enrichir une présentation orale.

La prochaine séance permettra d’attaquer la programmation proprement parler.

Une séquence sur les opérations sur les fractions

On ne considère ici que des fractions de nombres entiers positifs et on s’intéresse aux opérations qu’on peut mener dessus.

On choisit ici de ne les aborder que sous l’angle numérique et de ne pas traiter le rapport qu’elles entretiennent avec la géométrie, ça sera l’objet d’une autre séquence.

Un des buts de cette séquence est que les enfants puissent donner du sens à l’opération de division des fractions.

N’hésitez pas à consulter les documents attachés.

Attention, il manque encore quelques documents pour les activités.

Vous pouvez également consulter les sources LaTeX sur http://cgit.thetys-retz.net/maths/tree/4%C3%A8me/Fractions

Séance 2 ISN

La séance 2 est l’occasion d’aborder la notion de protocole de communication. Les élèves dégagent assez rapidement la notion d’interopérabilité nécessaire (il faut se parler une langue commne) mais ont un peu plus de mal à caractériser les propriétés basique d’une bonne communication (intégrité de l’information, fragmentation, acheminement).

Un des problèmes du groupe dont j’ai la charge est sa taille : 5 élèves ne permettent pas réellement de monter une expérience de transmission de message suivant un jeu de contrainte : - chaque message ne doit faire qu’au plus 3 mots ; - on ne peut parler qu’à son voisin direct (devant, derrière, à g. à d.) - on ne peut établir une communication qu’entre deux personnes ;

On peut tester plusieurs stratégies, ou rajouter des contraintes, comme les mécanismes de fin et début de transmission.

Sur un exemple forgé de toute pièce, on a discuté des différents élements d’une connexion TCP (et des bouts d’UDP).

Comme il nous restait un peu de temps, nous avons abordé le début de la séance 3, sur la représentation binaire des nombres.

Les documents snt dans http://maths.jumel.net/ISN/2013-201…

Séance 1 ISN

Cette année, j’assure un cours d’informatique et science du numérique. Je souhaite partager avec vous, sous forme d’un bloc-notes les activités proposées ainsi que les résolutions proposées par les élèves.

Pour cette première séance, nous prenons en main l’environnement du lycée. Celui-ci est sous Windows XP, sous des comptes très limités, en attendant de retrouver les RasberryPi de l’année précédente. Je le laisse installer Notepad++ (logiciel libre d’édition de texte) et leur présente le contenu de l’année avec une présentation courte réalisée avec http://lab.hakim.se/reveal-js/#/.

Après avoir écrit une page minimaliste de HTML (voir fiche de T.D.) nous attaquons les modifications du fichier index.html de reveal.js. Les élèves doivent s’en servir pour réaliser une présentation sur l’un des thèmes suivants : - histoire de l’internet - langages informatiques - histoire et noms des pionniers de l’informatique

La présentation finale de l’année sera donc faite avec reveal.js et les fichiers valides.

- page 1 de 2