mercredi 5 septembre 2012

Raspberry Pi

Shopping :

http://raspberrypi.rsdelivers.com/shoppingcart/shoppingcart.aspx

http://thepihut.com/collections/raspberry-pi-accessories


vendredi 31 août 2012

Histoire mathématique.

Ce billet traite d'histoire des mathématiques.

Justement, oui ; j'ai vécu une belle histoire avec les mathématiques...
Quand donc les choses se sont-elles gâtées ? Quelque part entre la rentrée en prépa scientifique et ... la première semaine de prépa scientique, il me semble.


Néanmoins, l'eau a largement coulé sous les ponts depuis les derniers outrages subis autant qu'infligés, et le temps est venu de renouer cette idylle.

J'ai donc pu méditer ce conseil de Steve Yegge.

The right way to learn math is breadth-first, not depth-first. You need to survey the space, learn the names of things, figure out what's what.

Why? Because the first step to applying mathematics is problem identification. If you have a problem to solve, and you have no idea where to start, it could take you a long time to figure it out. But if you know it's a differentiation problem, or a convex optimization problem, or a boolean logic problem, then you at least know where to start looking for the solution. 

[...] So it probably wasn't a great idea to make you spend years and years doing proofs and exercises with them, was it? If you're going to spend that much time studying math, it ought to be on topics that will remain.

[...] Which is why I think they're teaching math wrong. They're doing it wrong in several ways. They're focusing on specializations that aren't proving empirically to be useful to most high-school graduates, and they're teaching those specializations backwards. You should learn how to count, and how to program, before you learn how to take derivatives and perform integration. 


REM : notons tout de même ici un parti-pris pour les maths discrètes vs maths continues ; quelques scientifiques pourront être en désaccord, selon leur domaine d'activité.

Une dernière citation de l'article, qui cite des motivations pratiques pour (ré-)apprendre les maths (se muscler le cerveau ; se doter d'outils pour coder dans des domaines passionants) :

For me, I've noticed that a few domains I've always been interested in (including artificial intelligence, machine learning, natural language processing, and pattern recognition) use a lot of math. And as I've dug in more deeply, I've found that the math they use is no more difficult than the sum total of the math I learned in high school; it's just different math, for the most part. It's not harder.


A côté de ces motivations pratiques, j' aimerais également acquérir une vision globale et historique ; vision qui est complétement absente des manuels scolaires.


Voici donc ma liste de lecture :
Abrégé d'histoire des mathématiques
Arnaud-Aaron Upinsky : les mathématiques

Concernant l'informatique :

Méthodes mathématiques pour l'informatique
Auquel il conviendra d'adjoindre Théorie des graphes

Cité dans l'article : Richard Gabriel - Patterns Of Software

mardi 12 juin 2012

Gregory Chaitin : Hasard et complexité en mathématiques (II)

Cet article est le 2ème d'une série constituant des notes de lecture pour l'ouvrage de Grégory Chaitin : Hasard et complexité en mathématiques.
(le 1er article  est ici)



Le labyrinthe du continu
Dans cette deuxième partie, Chaitin échafaude un réquisitoire contre l'existence des nombre réels.


Les nombres imaginaires
Les nombres imaginaires ne sont ni plus ni moins imaginaires que les nombres réels.
(note : plutôt que de se confronter à la définition contre-intuitive i=sqrt(-1), le meilleur moyen de considérer les nombres complexes est de les considérer comme une paire de coordonnées réelles dans l'espace à 2 dimensions.)

Historiquement, on se refusait à placer les nombres complexes sur le même plan que les réels. Leibniz fait remarquer que les calculs qui visitent temporairement ce monde imaginaire ont pour point de départ et pour point d'arrivée celui des nombres réels (ex: en électronique, pour calculer une fonction de transfert). Les complexes ont fini par s'imposer en raison de leur utilité
  • en trigonométrie (résultat d'Euler : eix= cos x+ i*sin x), 
  • en algèbre (théorème d'Alembert Gauss : une équation de degré n admet exactement n racines)
  • surtout en mécanique quantique, pour exprimer l'équation de Schrödinger : les imaginaires y jouent un rôle essentiel, dansla mesure où les probabilités quantiques (amplitudes de probabilité) doivent avoir une direction et une magnitude.


Les nombres transcendants

Un nombre réel x est algébrique s'il est la solution d'une équation polynomiale à coefficients entiers. Dans le cas contraire x est dit transcendant.

Turing démontre que tous les réels algébriques sont calculables, mais que la plupart des réels sont incalculables, et de ce fait transcendants.

Suivant un point de vue probabiliste : les réels sont transcendants, incalculables et aléatoires avec probabilité=1. (Intuitivement : si on pique un point sur une droite des nombres réels, on obtient toujours un nombre transcendant.)


Dernier constat : l'ensemble de tous les réels susceptibles d'être définis dans un langage formel possède une probabilité=0.
=> les réels sont inaccessibles avec une probabilité=1.

Points importants :
Chaitin insiste pour rappeler les motivations d'ordre philosophique
, théologique et mystique qui ont donné corps à la théorie des nombres transcendants de Leibniz, et à la théorie des ensembles et des nombres infinis de Cantor.

jeudi 31 mai 2012

Gregory Chaitin : Hasard et complexité en mathématiques (I)


Cet ouvrage est une présentation vulgarisée d'une grande partie de l'oeuvre de l'auteur, dont la contribution majeure consiste en une définition mathématiquement correcte du hasard.

Il introduit le concept de complexité algorithmique = la longueur du  programme le plus court produisant une suite donnée. Dès lors, une suite de nombres est considérée comme aléatoire si sa complexité algorithmique est du même ordre que sa longueur.

Note : il est en général impossible de démontrer qu'un programme est  le plus court pour produire une suite donnée. La  complexité algorimithmique d'une suite n'est donc définie qu'à une constante additive près, et ne prend son sens que  lorsque la longueur de la suite tend vers l'infini.

Quel lien entre l'incalculabilité et  le hasard (le calcul par des programmes) ? Omega ? C'est le thème du livre.

Le travail de Chaitin souligne que l'incalculabilité est la norme. Les nombres calculables (ex : solution de l'équation x²-3=0 ) sont l'exception.

(note  :  pi ou sqrt(3) sont des exemples de réels calculables ; cf. Wikipedia. Que leur nombre de décimales soit infini n'est pas dérangeant ici : l'important est qu'il est possible de les calculer avec une précision arbitraire.)



1) Le premier chapitre met en lumière certains points d'histoire des mathématiques.


programme de David Hilbert : volonté de former un système axiomatique formel, valable pour l'ensemble des mathématiques. Ceci revient à définir un  langage dépourvu de la moindre ambiguité (avec son alphabet de symboles, sa grammaire, son système d'inférences, ainsi que son algorithme de contrôle ou procédure de décision, permettant de valider tout algorithme ou démonstration). Une conséquence d'un tel système est que le calcul ainsi mécanisé peut être confié à une machine. Emil Post remarquera d'ailleurs (post Turing) qu'il existe un algorithme capable de générer tous les théorèmes (l'idée théorique est de générer tous les théorèmes possibles, par ordre de taille de la démonstration
Gödel démontre l'existence de propositions indécidables dans tout système axiomatique formel qui contient l'arithmétique (ce système est donc dit incomplet). Dans tout système axiomisé, on débouchera toujours des propositions à la fois vraies et indémontrables. Et si l'on rajoute alors des axiomes au système pour trancher ces propositions problématiques, il restera encore d'autres propositions indémontrables !

   Le rêve caressé par Hilbert d'un SAF unique valable pour les mathématiques dans leur ensemble était un rêve impossible, car la totalité de la vérité mathématique ne peut être contenue dans un seul système formel. Les mathématiques n'ont rien de figé [...] Le système formel doit être régulièrement étendu par l'ajout de nouveaux principes, de nouveaux concepts, de nouveaux axiomes, comme c'est le cas en physique (et sans qu'il soit besoin de les démontrer, puisqu'ils fonctionnent !)

Turing a réduit la notion d'indécidabilité à celle d'incalculabilité, en démontrant l'impossibilité du problème de l'arrêt.

Démonstration par l'absurde : admettons l'existence d'un SAF permettant de déterminer, pour un programme, s'il s'arrêtera ou non. Il  nous est possible de générer tous les théorèmes du système ; donc, pour un programme particulier qui nous intéresse, d'obtenir la démonstration établissant son arrêt ou son non-arrêt.

Or ceci est impossible, car contredisant la thèse de Turing : il n'existe pas d'algorithme permettant de prédire si un programme donné s'arrêtera. L'incalculabilité est donc une cause profonde de l'incomplétude.



Ce premier chapitre, après avoir présenté 3 manières de démontrer l'infinité de l'ensemble des nombres premiers, est l'occasion pour l'auteur de déclarer sa flamme pour le langage informatique LISP, et de se livrer à de telles envolées lyriques :

   Si l'on en élimine les éléments "utiles", rajoutés pour en faire un outil "pratique", reste le LISP original, son coeur conceptuel, un joyau de splendeur mathématique et de beauté intellectuelle austère.

(ndjb : Ce mépris théoricien pour l'utilité ne peut que renvoyer aux propos d'un autre esthète, le maître Théophile Gautier, qui écrivait : "L'endroit le plus utile d'une maison, ce sont les latrines.")

Dans LISP, on parle pas de programmes, mais d'expressions. Ces expressions, on ne les lance ni ne les exécute, on les évalue, obtenant ainsi une valeur. Il n'y a pas d'effet secondaire. L'état de l'univers reste inchangé

Chaitin rapporte avoir vu la lumière à l'instant où il a programmé son premier interpréteur LISP, en Fortran. (TODO : en faire autant en Python)

   Comprendre équivaut à traduire en termes mathématiques[...]. On ne comprend que ce qu'on est capable de programmer, et de programmer soi-même.
Le premier chapitre offre en conclusion quelques réflexions de Chaitin,  sur son intuition de vivre dans un univers qui est ultimement discret (vs. continu) dans sa strucure.

Points importants :

  •    compris dans quelle mesure un programme peut ne jamais se terminer : si on lui demande la solution d'une équation qui n'en comporte pas, le programme va chercher indéfiniment.

  • L'indécidabilité n'est pas, pour les systèmes formels, une maladie rare : elle y est centrale.).



Critiques/Questions/débats :

  •    le format du livre oblige l'auteur à se livrer à de gigantesques ellipses. Ceci est d'ailleurs un parti-pris, puisque Chaitin avoue que les grandes idées l'intéressent davantage que les démonstrations détaillées. Néanmoins, la compréhension s'en ressent parfois AMHA.
  •    rien compris à la notion d'équation diophantienne universelle, qui permet de résoudre n'importe quel calcul.

  • En introduction, un plaidoyer authentiquement émouvant et convaincant, montrant que les mathématiques sont loin d'être une science froide, mécanique et figée, où régnerait une "perfection statique", où les questions pourraient être tranchées une fois pour toutes :
Face au processus de découverte et de création, les mathématiciens sont comparables aux artistes : conduits par leur intuition et leur inspiration,ils obéissent à des motivations et des pulsions inconscientes ; ils se laissent guider par leur sens esthétique.

Pour qu'un concept perdure, il lui faut posséder beauté et fécondité.



Bibliographie :

Tobias Dantzig : Le Nombre

Stephen Wolfram : A New Kind of Science

Ernest Nagel : Le Théorème de Gödel

dimanche 31 juillet 2011

Nice read about Git workflow

http://sandofsky.com/blog/git-workflow.html

The intended workflow is:
  1. Create a private branch off a public branch.
  2. Regularly commit your work to this private branch.
  3. Once your code is perfect, clean up its history.
  4. Merge the cleaned-up branch back into the public branch.

Explains how Git default workflow is designed to solve the tension between frequent commits and history readability/safety.

Other readings which enlighted me:
- Understanding Git conceptually
- Git branching model
- http://tomayko.com/writings/the-thing-about-git
- Git from the bottom up (or, for a simplified introduction http://nfarina.com/post/9868516270/git-is-simpler)

mardi 12 juillet 2011

Souder 2 fils

Ayant participé le mois dernier à un Fab-Lab, je suis remonté à bloc, et bien décidé à apprendre le maniement du fer à souder.



Aujourd'hui, je me lance dans la soudure de précision, et à la recherche d'un tutorial qui explique comment souder 2 fils (ben oui, il faut bien commencer par les bases...)

Comment souder 2 fils.
Conseil généraux à propos de la soudure à l'étain.

Voir également :
-  le très pédagogique site de Rémy Mallard: sonele
- Soldering is easy