La souris des PC

Souris
Je réponds ici à un commentaire de Pierre Lecomte au sujet de l’utilisation de la souris. Mis à part, disons, les jeux vidéos, quelle activité sur un PC nécessite, ou devrait nécessiter, une souris ? Prenons un exemple d’activité : fabriquer un document, avec un traitement de textes ou mieux avec pdflatex. Ceci devrait pouvoir se faire sans souris. Autre exemple : naviguer sur le web. Cela est plus embêtant car les liens semblent être faits pour qu’on clique dessus. Mais ici encore, sans aller jusqu’à naviguer en mode texte, il est possible de ne pas enlever les mains du clavier (le navigateur Firefox dispose d’extensions qui permettent de suivre un lien en entrant simplement quelques premières lettres du lien au clavier).

Il est possible de se passer de la souris mais pour quelle raison ? C’est simple : on a seulement deux mains, et on n’est pas efficace avec seulement une main sur le clavier.

En fait, je m’étonne du succès de la souris. Comment cet accessoire inutile continue-t-il d’être perçu comme indispensable ?

PS. Aucune originalité dans ce qui précède, un tas de gens n’aiment pas la souris. Je pense en particulier aux développeurs des gestionnaires de fenêtres pavant (ou tiling windows managers), logiciels qui s’arrangent pour que vos fenêtres pavent tout l’écran sans que vous n’ayez à les redimensionner ni déplacer. L’un de ces gestionnaires de fenêtres a d’ailleurs un nom assez parlant : ratpoison :-)

Entiers algébriques et racines de l’unité

Quand j’étais étudiant, il y avait un exercice à la mode (on l’appelait «théorème de Kronecker» mais Google ne confirme pas du tout cette terminologie) : démontrer que si x\in\mathbf C est un entier algébrique dont tous les conjugués sont de module 1 alors x est une racine de l’unité. J’en avais déjà parlé dans ce blog. Un exercice sur les matrices posé sur M@th en Ligne m’a donné l’idée de la preuve suivante (qui est très proche de la preuve que j’avais vue à l’époque) :

On note P\in\mathbf Z[X] le polynôme minimal de x (ce polynôme est donc unitaire, à coefficients entiers, et toutes ses racines sont de module 1). On note M la matrice compagnon de P (de sorte que P est à la fois le polynôme minimal et le polynôme caractéristique de M). La suite (M^n) est bornée parce que M est diagonalisable (car ses valeurs propres sont simples) et ses valeurs propres de M sont toutes de module 1, elle a donc une valeur d’adhérence A. Mais comme les M^n sont à coefficients entiers, cela signifie qu’il existe une suite extraite de (M^n) qui est constante égale à A. Il existe donc deux entiers naturels n<m tels que M^n=M^m et, puisque M est inversible, M^{m-n}=I, et donc x^{m-n}=1.

Nouvelle machine

Ce weblog et mes autres pages web sont maintenant hébergés par un petit ordinateur (un «plug computer») qui ressemble à ça :
Dreamplug
Le principal intérêt est sa faible consommation électrique. Accessoirement, il occupe peu de place, fait peu de bruit et chauffe peu. Espérons qu’il vive longtemps :-)

Astroïde et glissade d’une échelle

Je parlais un peu de l’astroïde en cours aujourd’hui :
Astroïde
Et j’ai pensé à la trajectoire d’une personne qui se trouve au milieu d’une échelle lorsque celle-ci glisse le long du mur jusqu’au sol. Mais cette trajectoire n’a en fait rien à voir avec une astroïde, c’est juste un arc de cercle de rayon une demi-échelle !

Non convergence de la suite cos(n)

Chaque année, je donne à mes élèves ce grand classique :

Démontrer que la suite (\cos(n)) ne converge pas.

Et chaque année je bricole une solution plus ou moins lourde à base de suites extraites, de relation avec la suite (\sin(n)), etc. Cette année, un élève a fourni une solution dans le même goût mais en plus élégant : on suppose que (\cos(n)) converge et on note \ell sa limite. Pour tout entier n, on a \cos(n-1)+\cos(n+1)=2\cos(1)\cos(n). En passant à la limite, on obtient 2\ell=2\cos(1)\ell donc \ell=0. Ensuite, en passant à la limite dans l’identité \cos(2n)=2\cos^2(n)-1, on obtient 0=-1, contradiction.

PS. En fait, il est bien connu que la suite (cos(n)) est dense dans [-1;1], et cela se démontre de préférence en voyant (\cos(n)) comme la partie réelle de (e^{in}) qui est un sympathique «enroulement non périodique de \mathbf N sur le cercle \mathbf U».

Une interversion de quantificateurs…

… sans le théorème de Baire (a priori). Voici l’énoncé :

Soit f une forme linéaire sur l’espace vectoriel réel \mathbf R^{\mathbf N} telle que, pour tout u\in\mathbf R^{\mathbf N}, il existe n\in\mathbf N tel que f(u)=u_n. Démontrer qu’il existe n\in\mathbf N tel que, pour tout u\in\mathbf R^{\mathbf N}, f(u)=u_n.

Et voici une solution, trouvée ce matin en attendant le train :

  • Première étape. Supposons un instant que f soit nulle sur le sous-espace vectoriel \mathbf R^{(\mathbf N)} (ensemble des suites nulle à partir d’un certain rang). Alors, conséquence de la linéarité, pour toutes suites u,v\in\mathbf R^{\mathbf N} qui coïcident à partir d’un certain rang, on a f(u)=f(v). Considérons en particulier la suite u=(n)_{n\in\mathbf N}. Il existe un entier p\in\mathbf N tel que f(u)=u_p=p. Soit v la suite égale partout à u sauf pour l’indice p où l’on pose v_p=-1. Ainsi, aucun terme de v n’est égal à p donc p\neq f(v)=f(u)=p, contradiction.
  • Seconde étape. D’après la première étape, l’un au moins des vecteurs de la base canonique de \mathbf R^{(\mathbf N)} a une image non nulle par f. On peut supposer, pour simplifier l’écriture, que c’est le cas du premier vecteur de cette base et on le note e. On a nécessairement f(e)=1. Soit u\in\mathbf R^{\mathbf N}. Pour tout x\in\mathbf R, il existe un entier n_x\in\mathbf N tel que f(u+x e)=u_{n_x}+x e_{n_x}, mais on a aussi f(u+x e)=f(u)+x f(e)=f(u)+x. Donc : \forall x\in\mathbf R, u_{n_x}+x e_{n_x}=f(u)+x Puisque \mathbf R n’est pas dénombrable, l’application x\mapsto n_x ne peut pas être injective. Il existe donc deux réels t\neq s tels que n_t=n_s. On déduit des égalités précédentes : (t-s)e_{n_t}=(t-s), d’où e_{n_t}=1 et n_t=0. Finalement : u_0+t=f(u)+t et donc f(u)=u_0. Comme u était quelconque, le résultat est démontré.

Dans le cas particulier où f est continue (pour les topologies naturelles), on m’a signalé que le résultat est une conséquence immédiate du théorème de Baire. Je suis curieux de voir d’autres preuves.

Encore du spam

Je reçois évidemment de nombreux commentaires de type spam sur ce blog, tous en anglais. Le dernier est amusant : la personne me dit qu’elle trouve mon blog très intéressant (elles disent toutes ça) mais qu’elle n’a pas tout compris car elle est … française.

Fabriquer une (belle) image avec LaTeX

De temps en temps, mais assez rarement [ref]Assez rarement pour oublier d’une fois sur l’autre comment on fait, d’où cet article de bureautique, destiné à m’éviter de perdre du temps la prochain fois.[/ref], par exemple pour illustrer un cours de math, j’écris (le code d’) un dessin en LaTeX (et Tikz). Je peux alors obtenir facilement mon dessin au format PDF (avec la commande pdflatex) ou au format DVI (avec la commande latex). Mais lorsque je veux obtenir mon dessin au format PNG, format classique pour une image, c’est un peu plus long. Je donne ci-dessous une façon de faire sous Ubuntu 11.10.

  • Supposons que le code LaTeX du dessin se trouve dans un fichier toto.tex. Voici un exemple de code LaTeX (correspondant au dessin donné plus bas) :
    \documentclass{minimal}
    \usepackage[utf8]{inputenc}
    \usepackage{tikz}
    \begin{document}
    \begin{tikzpicture}[scale=3]
    \tikzstyle{arc}=[->,>=latex,thick];
    \node (1) at (0,0) {$1$};
    \node (2) at (-2,1) {$2$};
    \node (3) at (-1,1) {$3$};
    \node (5) at (0,1) {$5$};
    \node (7) at (1,1) {$7$};
    \node (11) at (2,1) {$11$};
    \node (4) at (-1.5,2) {$4$};
    \node (6) at (-0.5,2) {$6$};
    \node (9) at (0.5,2) {$9$};
    \node (10) at (1.5,2) {$10$};
    \node (8) at (-0.5,3) {$8$};
    \node (12) at (0.5,3) {$12$};
    \draw[arc] (1) to[bend left=20] (2);
    \draw[arc] (1) to[bend left=10] (3);
    \draw[arc] (1) to[bend left=2] (5);
    \draw[arc] (1) to[bend right=10] (7);
    \draw[arc] (1) to[bend right=20] (11);
    \draw[arc] (2) to[bend left=20] (4);
    \draw[arc] (2) to[bend left=10] (6);
    \draw[arc] (2) to[bend right=5] (10);
    \draw[arc] (3) to[bend right=5] (6);
    \draw[arc] (3) to[bend right=10] (9);
    \draw[arc] (5) to[bend right=5] (10);
    \draw[arc] (4) to[bend left=5] (8);
    \draw[arc] (4) to[bend right=5] (12);
    \draw[arc] (6) to[bend right=5] (12);
    \end{tikzpicture}
    \end{document}
    

    On fabrique un fichier PDF avec la commande :

    pdflatex toto.tex
    

    On obtient alors un fichier toto.pdf.

  • On fabrique ensuite un fichier PNG avec la commande (longue et moche) :
    gs -r300 -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=toto.png toto.pdf
    

    Le -r300 concerne la résolution… On obtient un fichier toto.png
    qui est presque ce qu’on veut mais il y a un problème : le dessin est perdu au milieu (en fait en haut à gauche) d’une grande page blanche.

  • Dernière étape : rogner le bords («to trim» en anglais). On utilise le logiciel ImageMagick et sa commande convert :

    convert toto.png -trim toto-final.png
    

    Et voici le résultat (cliquer pour agrandir) :
    ensemble-ordonne.png

Une remarque un peu hors sujet pour terminer; sous Ubuntu 11.10, pour ouvrir une image bob.png, il suffit de cliquer dessus, mais si on veut le faire en ligne de commande, c’est moins trivial, et néanmoins très utile (par exemple si, comme toute personne sensée, on a jeté sa souris) :

eog bob.png