Archive for category School

TIPE sur la méthode de résolution numérique d'équations différentielles ROCK4 et une introduction aux algèbres pré-Lie

Lecteurs, lectrices, bonjour!

Veuillez m'excuser pour l'absence de publication de ces derniers mois. Il se trouve que je rédigeais deux documents relativement longs, et que pris par mes études je n'aurais pu publier de billet intéressant. J'ai toute fois le plaisir de vous annoncer la publication d'un document se rapportant aux mathématiques. Il s'agit du sujet que j'ai développé dans le cadre d'un TIPE. Il est fort probable que seul des étudiants de mathématique puisse lui trouver un réel intérêt ; Bien trop technique pour le profane, et pas assez complet et approfondi pour montrer un quelconque intérêt, il permet toute fois une introduction au sujet en douceur.

J'invite toute fois mes lecteurs assidus à y jeter un œil. Je suis, comme à l'accoutumé, ouvert à toutes questions et critiques.

Le document : http://zenol.fr/dl/tipe.pdf

Pour plus d'information sur les TIPE : Wikipedia

, , , , ,

No Comments

PCI : Corrections du CC2008 et des QCM

Bonsoir,

Suite a la demande d'un étudiant, voici les corrigées des QCM et du CCF de 2008.

Ne vous attendez pas a obtenir un 5/5 a tous les QCM. Certaines questions ne sont pas - ou bien, mal - noté.

QCM:
qcm1
qcm2
qcm3
qcm4
qcm5
qcm6

CCF 2008

Voila, en souhaitant a tous les étudiants du courage pour les partiels qui arrivent :)

, , ,

1 Comment

Découverte de _{O}CAML

Découverte d'OCAML

Dans ce petit article, je compte vous parler d'un langage de programmation assez particulier : (O)CAML. Tout d'abord, si j'ajoute une parenthèse devant la première lettre du sigle, c'est que je ne compte pas aborder toute la partie OBJET de langage, ni la partie impérative. (N'espérez pas voir une seul structure conditionnel[if] ou itérative[while/for] dans ce texte.

Propositions : définitions et expressions :

Tout comme en mathématique chaque phrase est une proposition, en ocaml chaque "ligne" est une proposition. Elle commence avec le premier caractère et se termine avec le symbole ';;'

Il y a deux type de propositions :

  1. Les expressions : De la forme 3*7 ou encore \sqrt[7]{\frac{2^9}{3^{43}}}
  2. Les définitions : De la forme q := \sqrt{2} qui déclare q comme un alias de \sqrt{2}

En ocaml, la syntaxe est la suivante :

  1. Pour un expression :
    3 * 7;;

    ou encore (poure^{log(\frac{exp(log(2) * 9)}{exp (log(3) * 43)}) / 7})

    exp (log (exp(log 2. *. 9.) /. exp(log 3. *. 43.) ) /. 7.);;
  2. Enfin, une définition :
    let q = sqrt 2;;

L'aspect fonctionnel

Mais comment un tel langage peut-il exister, et surtout, être 'utilisable' sans pour autant faire usage des structures des langages impératif comme le C ou le Python? (Je m'adresse bien-sur ici a ceux qui n'ont pas encore été initier aux joies des langages fonctionnel)

Tout d'abord, définissons ce qu'est un langage fonctionnel. Par analogie à un langage objet où les éléments sont des objets(Dans certains cas, TOUS les éléments), dans un langage fonctionnel, les éléments sont des fonctions, au sens mathématique du terme.

Si l'on considère la fonction suivante : \begin{array}{ccccc} f & : & \mathbb{Z} & \to & \mathbb{Z}^2 \\ & & x & \mapsto & (x, x) \end{array}

C'est la fonction qui associe à un entier x son couple situer sur sa diagonal(injection diagonal) (x,x) \in \Delta\mathbb{Z} \subset \mathbb{Z}^2

Il est alors très aisé de définir f en ocaml :

let f x = (x, x);

Cette fonction est de type int -> int * int, c'est a dire qu'elle prend un entier int \approx \mathbb{Z} et retourne un couple (x, y) \in \mathbb{Z} \times \mathbb{Z}

On peut bien-sur définir des fonctions de fonction. Observons la fonction "composition"(rond) : \begin{array}{ccccc} o & : & (\mathbb{B} \Rightarrow \mathbb{C} ) \times (\mathbb{A} \Rightarrow \mathbb{B} ) & \longrightarrow & (\mathbb{A} \to \mathbb{C} ) \\ & & (f, g) & \longmapsto & (x \mapsto f(g(x)) \end{array}
En OCAML, on aurais :

let o f g = f g;;
(* val o : ('a -> 'b) -> 'a -> 'b = <fun> *)

Les filtres

Je vous ai parler un peut plus tôt de l'absence de structures conditionnel et itératif, je vais ici vous exposer les solutions a votre disposition.

Commençons avec les blocs conditionnel. En OCAML, nous disposons d'une fonction-alitée très intéressante : les filtres.
Si l'on considère la fonction continue suivante : \begin{array}{ccccc} f & : & \mathbb{Z} & \to & \mathbb{Z} \\ & & x & \mapsto &<br />
\left\{<br />
\begin{array}{ccc}<br />
x < 0 & \Rightarrow & -2x \\ x \ge 0 &  \Rightarrow & x^2<br />
\end{array}<br />
\right.<br />
\end{array}

On constate que l'on a bien deux condition, une première qui regroupe les cas des x négatif, et une deuxième qui s'intéresse aux x restant. En OCAML, on défini de la même façon :

let f = function
  | x when x < 0 -> -2 * x
  | x when x >= 0 -> x*x
  ;;

Ou bien, en omettant la deuxième condition et en considérons que la dernière condition matcheras pour "tous les cas restant"

let f = function
  | x when x < 0 -> -2 * x
  | x -> x*x
  ;;

Dans le cas où l'on a pas besoin de nommer x, on peut utiliser _. Ainsi, un dernier cas "_ -> smtg" correspondrais un peut à 'default' d'un switch.
On pourras aussi utiliser l'instruction match {variable} with {filtre}.

La récursivité terminal

Maintenant, considérons les itérations. Nous allons utiliser la récursivités terminal(tail-rec pour les intimes) affin de construire une boucle. La récursivitée terminal est une forme de récursivité ou l'unique action qui succède à l'appelle a la fonction récursive est un retour de valeur.

C'est plutôt élémentaire :

let rec aff_n = function
  | n when n < 1 -> ();
  | n -> print_endline (string_of_int n);
           aff_n (n - 1);;

() représente le type 'unit', c'est a dire que notre fonction ne retourne rien, tout comme print_endl. Nous obtenons une boucle de 10 à 1, et nous affichons les valeurs a l'écran.
Vous vous demandez alors, pourquoi de la tail rec et non une simple récursivités? La réponse est que l'interpréteur/compilateur optimise par une itération, ce qui est bien plus pratique pour nos machines qui on une mémoire limiter et ne peuvent supporter qu'un nombre restreins d'appelles récursif.

Pour conclure

OCAML est un langage fonctionnel, qui bon nombre d'aspects et concepts qui sont parfois inconnus des programmeurs aillant pratiquer uniquement des langages impératif, et constitue de par son existence une forme de culture dont il peut-être bon d'avoir connaissance. Si vous êtes curieux et désirez en savoir plus, voici quelques liens :

  1. Présentation d'ocaml
  2. Notes on OCaml
  3. Wikipedia
  4. Google

, ,

No Comments

Première semaine a Lyon1

Lecteurs, lectrices (Si vous existez ^^), j'ai terminer ma première semaine à la FAC de lyon1.

Passer les premiers  "oula c'est grand" et les "tabernacle, mais où suis-je!", il m'a fallut braver les grèves des transports lyonnais (TCL).

Cette semaine n'a en effet pas était de tout repos! Après une près rentrée et de nombreux signes précurseurs d'une galère en vue, j'ai commencer ma première journée en perdant ma veste. Histoire d'en rajouter un peut, contrôle de police a la gare, agression par une vielle femme qui voulais a tout prix monter dans le train avant moi, et mauvais biller composter... Ah oui, j'oubliais, j'étais malade depuis la veille, et je m'étais rendus en cours avec ma fièvre :) Bref, ca commençais déjà fort!

Mardi... au lit! Trop de fievre pour me lever, pas la force d'affronter le train, a greve, et de me lever a 4h pour un simple cours d'excel (Vous vous doutez qu'a coder du filesystem j'ai deja quelques notions d'informatique de base on vas dire). Et c'est ainsi que cette journée s'écoula trééés vite.

Mercredis : Constitution de la matiere. Chouette me dis-je, je vais tater de l'électron. Bon pour la matinée c'est rater, revision de ce qu'est un atome (Neutrons+Protons & électrons). Je m'achète un sandwich et skwat' le wifi du cyber, seul esseulée et solitaire. Ah, et la chimie dans l'histoire? Et bien c'est elle qui a eu sa revanche sur moi. Une jolie pluie de formule mon rendus aphone (Ça tombe bien, je ne voyais pas a qui parler). Maintenant je fait moins le malin et je vais devoir aller revoir les grands classique du calcule d'energie (Bah oui, où qu'il est passer le carrée :/). Ah oui, j'ai pus retrouver ma veste, au près des appariteurs. Alors, mercis messieurs(&dames) :$

Jeudis: Équitation. Bien que je me soit sentis extrêmement seul, c'est aussi l'une des journées ou j'ai le plus parler. Naïtika n'avais en effet pas très envie de se tenir tranquille, alors j'ai vainement essayer de la calmer :/ (Je sais, je m'enfonce...)

Vendredis... J'ai pas envi! N'aillant pas le courage de me lever a 4h30 pour rejoindre le cours de LIF1 de 8h15(et oui, grève oblige), je décide finalement d'opter pour une alternative : dormir. Oh, je n'ai rien contre le professeur de LIF1, au contraire. Disons simplement que j'ai déjà une certaine maitrise des structures logique et de la syntaxe C, et que donc ma présence en cours n'est pas indispensable (J'ai constamment envie de le reprendre sur de petits détailles, que l'évocation du bit de signe dans un moment ou le cours concernés les entiers, alors que le bit de signe n'existe que pour les doubles et les floats, la méthode du complément a 2 étant appliquer aux entiers signés... bref, je vous le disais, le prof vas me détester si je reste :/) Bon sinon aprèm', cours d'analyse, tout aussi fantastique que celui d'algèbre.

Voila, une semaine bien remplis, un wifi de la FAC pas du tout sécuriser ou vous pouvez sniffer tout le réseau sans même vous y connecter, et je ne parle pas du Man In The Middle (Promis je n'ai pas encore essayer). Bref, une très belle fac. Mon seul regret est de ne connaitre encore personne.

Bon, trêve de blabla. Je me suis permis de scanner les cours que j'ai noter (A l'exception de LIF1, je n'ai noter que ce qui etait nouveau donc je vous épargne la copie simple qui ne seras d'aucune utilité :/)

Mes notes d'analyse
Mes notes d'algèbre
Mes notes de Constitution de la Matière

Oui j'écris mal et c'est bourrer de fautes, mais si ca peux aider certains qui aurais rater leurs premier cour en cette rentrée, c'est toujours ca de gagner.

, ,

5 Comments

Cours Asm - Tek' 2

Hi,

Voila, j'ai trois petites vidéos qui trainent dans mes placards, et je me suis dis que ca pourrais intéresser les epitechs qui rentrerons bientôt(janvier) en 2nd année, et auront alors un projet en assembleur.

Ces vidéos date, j'avais prévus d'en faire plus mais ce ne seras pas le cas.

La première partie : Tuto ASM 1
La deuxième partie : Tuto ASM 2
L'annexe stack : Tuto ASM Stack

Voila, des fois que ca soit utile a certains d'entre vous...

,

4 Comments