From cc8094acc0df7a686668aad27d29a7b2472db554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9munaire?= Date: Sat, 17 Mar 2012 06:16:57 +0100 Subject: [PATCH] Cours de la semaine --- cmp/20120221-typage.tex | 18 ++ cmp/20120306.tex | 111 +++++++++++ cmp/main.tex | 7 + foncprog/2-suite.tex | 24 +++ maths/approximations.tex | 404 ++++++++++++++++++++++++++++++++++++++- maths/main.tex | 4 +- mathsignal/main.tex | 7 + sgdb/2.tex | 6 + sgdb/introduction.tex | 206 ++++++++++++++++++++ sgdb/main.tex | 8 + 10 files changed, 792 insertions(+), 3 deletions(-) create mode 100644 cmp/20120221-typage.tex create mode 100644 cmp/20120306.tex create mode 100644 cmp/main.tex create mode 100644 foncprog/2-suite.tex create mode 100644 mathsignal/main.tex create mode 100644 sgdb/2.tex create mode 100644 sgdb/introduction.tex create mode 100644 sgdb/main.tex diff --git a/cmp/20120221-typage.tex b/cmp/20120221-typage.tex new file mode 100644 index 0000000..d27d0fa --- /dev/null +++ b/cmp/20120221-typage.tex @@ -0,0 +1,18 @@ +\chapter{Types} + +\section{Pourquoi utiliser des types} + +Au niveau du langage d'assemblage, il n'y a pas de type. + +Toutes les variables du shell sont des chaînes de caractères, il n'y a qu'un +seul type, on ne parle donc pas de typage.\\ + +Les types permettent d'aider le programmeur pour lui montrer lorsqu'il fait +quelque chose d'incorrect. + +Cela permet également d'ajouter des variables plus abstraites : tableaux, +records, ... + +\section{Le concept des types} + +\section{Introduction au calcul des séquents} diff --git a/cmp/20120306.tex b/cmp/20120306.tex new file mode 100644 index 0000000..9f969bf --- /dev/null +++ b/cmp/20120306.tex @@ -0,0 +1,111 @@ +\chapter{Représentation intermédiaire} + +void : () : sxp const 0 + +\section{Gestion de la mémoire} + +On distingue cinq types de mémoire~: +\begin{itemize} + \item \textbf{Les registres~:} dans les 32 registres sur les processeurs + MIPS.\\ + C'est une mémoire très rapide mais très chère. + \item \textbf{Cache de niveau 1~:} dans les 8ko + \item \textbf{Cache niveau 2~:} de l'ordre d'une 10aine de cycles + \item \textbf{Mémoire principale~:} 100 fois plus lent + \item \textbf{Disque de stockage~:} 1M fois plus lent +\end{itemize} + +Le but est d'avoir le plus d'informations dans le haut pour perdre le moins de +vitesse possible (d'où échappement des variables, \ldots). + +\subsection{Pas assez de registres~?} + +On le verra dans un prochain cours. + +Lorsque l'on a pas de récursion, cela signifie qu'il y a au plus autant de +fonctions présentes en mémoire que de fonctions écrite~; donc on peut avoir une +mémoire parfaitement statique où chaque fonction peut être bornée statiquement. + +À partir du moment où l'on a besoin de récursion, on a besoin d'une pile +d'appel de fonction qui est une forme d'allocation dynamique. + + +\subsection{Allocation dynamique de la mémoire} + +\verb+libgc+ : implémentation d'un grabage collector en C. + +Utilisé par GCJ. + +\subsection{Modèle mémoire de \texttt{spim}} + +Entre 0x0 et 0x400000, l'espace est réservé, pour être sûr que 0x0 soit ni +lisible ni modifiable. + +Ensuite, il y a le code, puis les datas (variables statiques, tout ce qui est +global). + +Tout en haut, il y a la pile qui descend (et sous Linux, une emplacement +mémoire réservé au noyau.) + +\subsection{Blocs d'activation (Activation blocks/Stack Frame)} + +Une activation désigne une simple instance d'une fonction. + +Toutes les variables locales sont libérés automatiquement, c'est plus +efficasse que de faire appel à \verb+malloc+. + +\subsubsection{Contenu} + +Dans la stack, on trouve~: +\begin{itemize} + \item Les arguments, + \item les variables locales, + \item l'adresse de retour~: pour que la fonction sache où revenir, + \item une sauvegarde des registres~: selon l'architecture. +\end{itemize} + +L'ordre dans lequel ces éléments sont mis dans la pile sont imposés (en vrai +pas vraiment, mais si on fait notre tambouille, on est plus compatible avec la +libc du coup ça sert un peu à rien). + +La pile esr délimité par \verb+sp+ (Stack Pointer), toujours l'adresse la plus +basse (le plus haut élément de la pile) et par le \verb+fp+ (Frame Pointer), +qui correspond au début de la fonction courante. + +Lorsque l'on quitte une fonction, on replace \verb+sp+ et \verb+fp+ dans l'état +précédent. + +\subsubsection{\texttt{std::auto\_ptr}} + +Lié aux exceptions en C++. + +Quand on lève des exceptions, on balance des pointeurs, du coup, on risque +perdre cette mémoire.\\ + +Dans le nouveau standard, il est plutôt conseillé d'utiliser +\verb+std::unique_ptr+ ou \verb+std::shared_ptr+. + +\section{Traduction vers HIR} + +\subsection{\texttt{temp}~: gestion des étiquettes} + +Génération de temporaires anonymes ou nommées. + +\verb+endo_map+~: un peu comme \verb+std::map+, pour l'allocation de registre, +plus tard. + +\subsection{Actors} + +Pour A. Apple, il utilise \verb+Exp+, chez nous c'est \verb+Sxp+ pour plus de +clareté. + +\verb+Seq+ c'est une liste d'instruction (Pair chez A. Apple). + +\subsection{\texttt{frame}} + +Gestion de la mémoire associé à une fonction (des variables, ...) + +\verb+local_alloc+~: réservation de la mémoire. + + +Le langage Tree n'est pas au courant du static link. diff --git a/cmp/main.tex b/cmp/main.tex new file mode 100644 index 0000000..e09e5d7 --- /dev/null +++ b/cmp/main.tex @@ -0,0 +1,7 @@ +\title{Construction des compilateurs} +\author{Rolland} +\date{ING1} + +\maketitle + +\input{20120306} diff --git a/foncprog/2-suite.tex b/foncprog/2-suite.tex new file mode 100644 index 0000000..89699ba --- /dev/null +++ b/foncprog/2-suite.tex @@ -0,0 +1,24 @@ +\chapter{} + +\section{Élements de syntaxe} + +\subsection{Syntaxe} + +Haskell respecte la règle de l'offside-rule (comme Python, initié par +Peter J. Landin). Il existe un séparateur implicite ; +Pour le nommage, c'est comme le C, avec en plus l'apostrophe. + +En Lisp, il n'y a pas de syntaxe ou presque. Aucun mot n'est +réservé. + +\subsection{Opérateurs et fonctions} + +En Lisp, il n'y a pas de distinction, la notation est exclusivement +préfixe. + +En Haskell, il y a une notation infixe pour les principaux +opérateurs. On peut d'ailleurs définir ses propres opérateurs infixes, +c'est génial. + +\section{Notion d'expressions} + diff --git a/maths/approximations.tex b/maths/approximations.tex index b9cfddd..e1a9e6c 100644 --- a/maths/approximations.tex +++ b/maths/approximations.tex @@ -611,8 +611,410 @@ $$P_0(x)=f(x_1)$$ Pour $m=0,\ldots,n-1$~: $$P_{m+1}(x)=P_m(x)+(x-x_1)\ldots(x-x_{m-1}).f[x_1,\ldots,x_{m+1}]$$ -%% Il cherchait à faire un tableau +\paragraph{Exercice 3} Sur $[-1,1]$ on considère la fonction $f(x)=X^3-X^2$ + +\begin{enumerate} + \item Décomposer $f(x)$ dans la base de Chebyshev. + \item En déduire $P^*_2(x)$ polynôme de meilleur approximation de degré 2 de + $f(x)$.\\ + Donner l'erreur d'approximation $||f-P^*||$ + $$||f||=max|f(x)|\qquad -1\leq x\leq 1$$ +\end{enumerate} + +\[ +\begin{array}{l l} + f(x)= & a_0.T_0(x)+a_1.T_1(x)+a_2.T_2(x)+a_3.T_3(x)$$\\ +\begin{cases} + T_0(x)=1\\ + T_1(x)=x\\ + T_2(x)=2x^2-1\\ + T_3(x)=4x^3-3x +\end{cases} + & a_0 + a_1x + a_2(2x^2-1) + a_3 (4x^3 - 3x)\\ + & a_0 + a_1x + 2a_2x^2 - a_2 + 4a_3 + 4a_3x^3 - 3a_3x\\ + & a_0 - a_2 + (a_1 - 3a_3) x + 2a_2x^2 + 4a_3 + 4a_3x^3\\ +\end{array} +\] +\[ +\Rightarrow +\begin{cases} + a_0 - a_2 = 0\\ + a_1 - 3a_3 = 0\\ + 2a_1 = -1\\ + 4a_3=1 +\end{cases} +\Rightarrow +\begin{cases} + a_0=-\frac{1}{2}\\ + a_2=-\frac{1}{2}\text{ et }a_1=\frac{3}{4}\\ + a_4=\frac{1}{4} +\end{cases} +\] + +Donc +$f(x)=-\frac{1}{2}T_0(x)+\frac{3}{4}T_5(x)-\frac{1}{2}T_2(x)+\frac{1}{4}T_3(x)$ +$$\epsilon=f(x)-P_2(x)=\frac{1}{4}=T_3(x)$$ +$$M=||\epsilon||=\max|\epsilon(x)|=\frac{1}{4}$$ + +\[ +\begin{cases} + T_3(x)=\cos(3\theta)\\ + \theta=\arccos(x) +\end{cases} +\] + +\subparagraph{Théorème} Si la fonction erreur $\epsilon(x)$ atteint la veuleur +extrême alternée $M$ et $-M$ en au moins $(n+2)$ points, alors +$P_n(x)=P^*_n(x)$. + +$$\epsilon(x)=\frac{1}{4}T_3(x)= +\frac{1}{4}\cos(3\theta)\qquad\theta=\arccos(x)$$ + +Les $x_k=\cos\frac{k\pi}{n}\quad n=3$. + +\[ +\begin{array}{l l l} + k=0 & x_0=1 & \varepsilon(x_0)=\frac{1}{4}=M\\ + k=1 & x_1=\cos\frac{\pi}{3} & \varepsilon(x_1)=-\frac{1}{4}\\ + k=2 & x_2=\cos\frac{2\pi}{3} & \varepsilon(x_2)=\frac{1}{4}\\ + k=3 & x_3=\cos\pi & \varepsilon(x)=-\frac{1}{4} +\end{array} +\Rightarrow +\begin{cases} + x_0=1\\ + x_1=\cos\frac{\pi}{3}=\frac{1}{2}\\ + x_2=\cos\frac{2\pi}{3}=-\frac{1}{2}\\ + x_3=\cos\pi=-1 +\end{cases} +\Rightarrow +P_2(x)=P_2^*(x) +\] + +Donc~: +\[ +\begin{array}{l l} + P_2^*(x)= & -\frac{1}{2}T_0(x)+\frac{3}{4}T_1(x)-\frac{1}{2}T_2(x)\\ + & = -4+\frac{3}{4}x-\frac{1}{4}(2x^3-1)\\ + & = -\frac{1}{2}+\frac{3}{4}X - x^2+\frac{1}{2}\\ + & = \frac{3}{4}x = \frac{3}{4}x-x^2 +\end{array} +\] + +\paragraph{Exercice 4} Soit $f(x)$ une fonction continue donnée aux points +$x_i(i=1,2,3,4)$. + +$f(0)=-5, f(1)=17, f(2)=115, f(4)=143$ + +En utilisant le polynôme d'interpolation de Lagrange, interpoler $f(2)$. + +$$f(0)=-5, f(1)=17, f(2)=115. f(4)=143$$ +$$P_n(x)=\sum_{i=1}^{n+1}f(x_i)$$ +$$L_i(x)=\prod^{n+1}_{j=1}\left(\frac{x-x_i}{x_i-x_j}\right)$$ + +Interpolons $f(2)$~: + +$$L_1(2)=\frac{(2-1)(2-3)(2-4)}{(-1)(-3)(-4)}=\frac{-2}{12}=\frac{-1}{6}$$ +$$L_2(2)=\frac{(2-0)(2-3)(2-4)}{1(-2)(-3)}=\frac{4}{6}=\frac{2}{3}$$ +$$L_3(2)=\frac{2(2-1)(2-4)}{3(3-1)(3-4)}=\frac{-4}{-6}=\frac{2}{3}$$ +$$L_4(2)=\frac{2(2-1)(2-3)}{4(3)(1)}=\frac{-2}{12}=\frac{-1}{6}$$ + +La valeur interpolée est~: $f(2)\simeq P_3(2)=-\frac{1}{6}(-5)+\frac{2}{3}(17) ++\frac{2}{3}(115)-\frac{1}{6}(143)\simeq 65$ + +\paragraph{Exercice 5} Soit $f\in C^{n+1}[a,b]$, $P_n(x)$ son polynôme +d'interpolation de $f(x)$ aux points $x_i\in[a,b]$ $(i=1\ldots n+1)$ + +$$\varepsilon(x)=f(x)-P_n(x)\quad\text{erreur d'interpolation}$$ + +Montrer qu'il existe $\eta_x\in[a,b]$ tel que $\varepsilon(x)= +\prod^{n+1}_{i=1}(x-x_i)\frac{f(\eta_x)}{(n+1)!}$ + +\subparagraph{Rappel} Théorème de Rolle + +$f$ continue, dérivable sur $[a,b]$. Si $f(a)=f(b)$ alors $\exists C\in]a,b]$ +tel que $f'(c)=0$. + +$$\varepsilon(x_i)=0\text{ car }P_n(x_i)=f(x_i)$$ +$$\varepsilon(x)=\prod^{n+1}_{i=1}(x-x_i)A_x\qquad x.f(x_i)\quad x\neq +x_i\quad A_x\text{ quantité inconnue}$$ + +Soit la fonction +$\varphi(y)=f(y)-P_n(y)-\prod^{n+1}_{i=1}(y-x_i)A_x\quad\forall y\in[a,b]$ + +\[ +\begin{cases} + \varphi(x_i)=0\qquad\forall i=1\ldots n+1\\ + \varphi(x)=0 +\end{cases} +\] + +$\varphi$ admet $(n+2)$ racines. $\varphi\in C^{n+1}$ car $f\in C^{n+1}$. + +On applique le théorème de Rolle $\varphi'$ admet au moins $(n+1)$ racines. + +On applique le théorème de Rolle $\varphi''$ admet au moins $n$ racines. + +On applique le théorème de Rolle $\varphi^(3)$ admet au moins $n-1$ racines. + +\hspace{6cm}\vdots + +On applique le théorème de Rolle $\varphi^(p)$ admet au moins $(n+1)-p$ +racines. + +Si $p=n+1$ $\Rightarrow\varphi^{(n+1)}$ admet au moins 1 racine +$\eta_x\quad\varphi^{(n+1)}(\eta_x)=0$ + +or~: + +$$\varphi^{(n+1)}(y)=f^{(n+1)}(y)-0-(n+1)! A_x$$ +$$\varphi^{(n+1)}(\eta_x)=0\Rightarrow f^{(n+1)}(\eta_x)-(n+1)! +A_x=0\Rightarrow A_x=\frac{f^{(n+1)}(\eta_x)}{(n+1)!}$$ + +Donc~: +$$\varepsilon(x)=\prod^{n+1}_{i=1}(x-x_i)\frac{f^{(n+1)(\eta_x)}}{(n+1)!}$$ + +$$f\left[x_1, \ldots, x_{n+1}\right]=\frac{f\left[x_1,\ldots, + x_n\right]-f\left[x_2,\ldots, x_{n+1}\right]}{x_1 - x_{n+1}}$$ \section{Dérivation numérique} +Lorsqu'une fonction $f(x)$ dont on veut calculer les dérivées siccessives +$f'(x)$, $f''(x),\ldots$ est données par les valeurs $f(x_i)$, on procède de la +manière suivante~: + +\begin{enumerate}[(i)] + \item $f(x)\simeq g(x)\qquad\text{(polynôme d'interpolation)}$. + \item $f^(k)(x)\simeq g^{(k)}\simeq g^{(k)}(x)$ +\end{enumerate} + +\subsection{Dérivée d'un polynôme par division synthétique} + +$$f(x)\simeq P_n(x)=\sum^{n}_{j=0}a_j.x^j$$ + +Soit à calculer~: + +$$f^{(k)}(x=t)\qquad\text{dérivée d'ordre }k$$ + +$$f^{(k)}\simeq P^{(k)}_n(x)=\sum^{n}_{j=k}j(j-1)\ldots(j-k+1)a_j.x^{j-k}$$ + +Il suffit alors de calculer $P_n^{(k)}(x=t)$. + +$$P_n(x) | x-t\qquad\text{(division par )x-t}$$ + +$$P_n(x)=(x-t)Q_{n-1}(x)+R_n\quad Q_{n-1}(x)=b_{n-1}X^{n+1}+\ldots+b+0$$ + +\[ +\begin{cases} + b_{n-1}=a_n\\ + b_{j-1}=t.b_j+a_j\quad j=n-1,\ldots, 1 +\end{cases} +\] + +\paragraph{Exemple} $$P_4(x)=2x^4-5x^3+x^2-7x+6\qquad t=2$$ + +\begin{figure}[h] + \centering + \begin{tabular}{c|cccccc} + $j$ & 4 & 3 & 2 & 1 & 0 &\\\hline + $P_4 a_j$ & 2 & -5 & 1 & -7 & 6 &\\ + $Q_3 b_j$ & & 2 & -1 & -1 & -9 & -12\\ + \end{tabular} +\end{figure} + +On peut poursuivre le processus~: + +\begin{figure}[h] + \centering + \begin{tabular}{c|cccccc} + $j$ & 4 & 3 & 2 & 1 & 0 & Reste\\\hline + $P_4\quad a_j$ & 2 & -5 & 1 & -7 & 6 &\\ + $Q_3\quad b_j$ & & 2 & -1 & -1 & -9 & $-12 = R_4$\\ + $Q_2\quad c_j$ & & & 2 & 3 & 5 & $1 = R_3$\\ + $Q_1\quad d_j$ & & & & 2 & 7 & $19 = R_2$\\ + $Q_0\quad e_j$ & & & & & 2 & $11 = R_1$\\ + \end{tabular} +\end{figure} + +$$R_0=a_n=2=Q_0$$ + +\[ +\left. +\begin{array}{l} + P_4(x)=(x-2).Q_3(x)-12\\ + Q_3(x)=(x-2).Q_2(x)+1\\ + Q_2(x)=(x-2).Q_1(x)+19\\ + Q_1(x)=(x-2).Q_0(x)+11\\ +\end{array} +\right\} +P_4(x)=-12+(x-2)+19(x-2)^2+11(x-2)+2(x-2)^4 +\] + +Ainsi les $R_k$ sont les coefficients du développement de $P_n(x)$ en puissance +de $(x-t)\quad(t=2)$. + +D'une manière générale~: + +$$P_n(x)=\sum^n_{l=0}R_e(x-t)^{n-l}$$ + +Em dérivant $k$ fois~: +$$P_n^{(k)}(x)=\sum^{n-k}_{l=0}(n-l)\ldots(n-l-k+1)R_e(x-t)^{n-l-k}$$ +$$x=t\Rightarrow P_n^{(k)}(t)=k!R_{n-k}$$ +$$f^{(k)}(t)\simeq k!R_{n-k}$$ + +\paragraph{Exercice 6} $f(x)$ continue, donnée aux points~: $f(-2)=69$, +$f(2)=17$, $f(3)=24$, $f(5)=-22$ + +\begin{enumerate} + \item Construire le tableau des différences divisées. + \item En déduire le polynôme d'interpolation de Newton. + \item En utilisant l'algorithme de division synthétique, interpoler $f(4)$ et + donner les approximations des dérivées $f'(4)$, $f''(4)$, $f'''(4)$. +\end{enumerate} + +\begin{figure}[h] + \centering + \begin{tabular}{c|cccc} + $x_i$ & 0 & 1 & 2 & 3 \\\hline + $-2$ & \textbf{69} & \textbf{-13} & & \\ + $2$ & 17 & & \textbf{4} & \textbf{-2}\\ + $3$ & 24 & 7 & -10 & \\ + $5$ & -22 & -23 & & \\ + \end{tabular} +\end{figure} + +Pour calculer les machins de ce tableau~: + +$$f[x_i;x_j]=\frac{f[x_i]-f[x_j]}{x_j-x_i}=\frac{f(x_i)-f(x_j)}{x_i-x_j}$$ + +$$f[-2,2,3]=\frac{f[2,3]-f[-2,2]}{5}$$ + +\subparagraph{2. Le polynôme d'interpolation de Newton} +$$P_3(x)=f[-2]+(x+2)f[-2,2]+(x+2)(x-2)f[-2,2,3]+(x+2)(x-2)(x-3)f[-2,2,3,5]$$ +On remplace ensuite les coefficients~: +$$P_3(x)=69-13(x+2)+4(x+2)(x-2)-2(x+2)(x-2)(x-3)$$ +On développe tout pour avoir le polynôme dans sa forme canonique (utile pour la +question suivante)~: +$$P_3(x)=-2x^3+10x^2-5x+3$$ +On peut vérifier que ce polynôme interpole bien les points donnés de $f$. + +\subparagraph{3. Algorithme de division synthétique} + +Pour $Q_1$,0~: 4 (coeff) * -2 (valeur précédente sur la ligne) + 2 (valeur au dessus) = -6 +\begin{figure}[h] + \centering + \begin{tabular}{c|ccccc} + $j$ & 3 & 2 & 1 & 0 & Reste\\\hline + $P_3\quad a_j$ & -2 & 10 & -5 & 3 & \\ + $Q_2\quad b_j$ & & -2 & 2 & 3 & $15 = R_3$\\ + $Q_1\quad c_j$ & & & -2 & -6 & $-21 = R_2$\\ + $Q_0\quad d_j$ & & & & -2 & $-14 = R_1$\\ + \end{tabular} +\end{figure} + +$$P_3(x)=15-21(x-4)-14(x-4)^2-2(x-4)^3$$ +$$f(4)\simeq P_3(4)=15$$ + +$$f^{(k)}(t)\simeq k!_{n-k}$$ +$$f'(4)\simeq 1!R_2=-21$$ +$$f''(4)\simeq 2!R_1=-28$$ +$$f'''(4)\simeq 3!R_0=-12$$ + +\paragraph{Exercice 7} Soit $f(x)$ continue, donnée aux points $f(-2)=32$, +$f(-1)=26$, $f(0)=30$, $f(1)=28$ + +\begin{enumerate} + \item Construire le tableau des différences divisées. + \item En déduire le polynôme d'interpolation de Newton. + \item En utilisant l'algorithme de division synthétique, interpoler $f(2)$ et + donner les approximations des dérivées $f'(2)$, $f''(2)$, $f'''(2)$. +\end{enumerate} + +\begin{figure}[h] + \centering + \begin{tabular}{c|cccc} + $x_i$ & 0 & 1 & 2 & 3 \\\hline + $-2$ & \textbf{-32} & \textbf{58} & & \\ + $-1$ & 26 & & \textbf{27} & \textbf{8}\\ + $0$ & 30 & 4 & -3 & \\ + $1$ & 28 & -2 & & \\ + \end{tabular} +\end{figure} + +\subparagraph{2. Le polynôme d'interpolation de Newton} +$$P_3(x)=f[-2]+(x+2)f[-2,-1]+(x+2)(x+1)f[-2,-1,0]+(x+2)(x+1)(x)f[-2,-1,0]$$ +On remplace ensuite les coefficients~: +$$P_3(x)=-32-58(x+2)-27(x+2)(x+1)-8(x+2)(x+1)(x)$$ +On développe tout pour avoir le polynôme dans sa forme canonique (utile pour la +question suivante)~: +$$P_3(x)=8x^3-3x^2-7x+30$$ +On peut vérifier que ce polynôme interpole bien les points donnés de $f$. + +\begin{figure}[h] + \centering + \begin{tabular}{c|ccccc} + $j$ & 3 & 2 & 1 & 0 & Reste\\\hline + $P_3\quad a_j$ & 8 & -3 & -7 & 30 & \\ + $Q_2\quad b_j$ & & 8 & 13 & 19 & $68 = R_3$\\ + $Q_1\quad c_j$ & & & 8 & 29 & $77 = R_2$\\ + $Q_0\quad d_j$ & & & & 8 & $45 = R_1$\\ + \end{tabular} +\end{figure} + +$$P_3(x)=68+77(x-2)+45(x-2)^2+8(x-2)^3$$ +$$f(2)\simeq P_3(2)=68$$ + +$$f^{(k)}(t)\simeq k!_{n-k}$$ +$$f'(2)\simeq 1!R_2=77$$ +$$f''(2)\simeq 2!R_1=90$$ +$$f'''(2)\simeq 3!R_0=48$$ + \section{Intégration numérique} + +On se propose d'étudier quelques méthodes numériques permettant d'approcher +$\int^b_af(x)dx$. De telles méthodes s'imposent en particulier lorsque la +primitive $F(x)$ de $f(x)$ n'est pas connue, ou dans le cas où $f(x)$ n'est +donnée que par points. + +Par exemple pour~: $\int^b_a e^{-x^2}dx\simeq\sum^n_{i=0}\omega_i f(x_i)$ + +\subsection{Méthode générale} + +$$I=\int^b_a f(x)p(x)dx\quad p(x):\text{fonction poids, }>0$$ + +L'idée est d'utiliser les valeurs de $f$ aux points $x_i\in[a,b]\quad i=0\ldots +n$. + +$$\int^b_a f(x)p(x)dx=\sum^a_{i=0}\omega_i.f(x_i)+E\quad E\text{ l'erreur}$$ + +Les coefficients $\omega_i$ sont déterminés de telle sorte que $E$ soit nulle +lorsque $f(x)$ appartient à une certaine classe de fonctions (les polynômes de +degré $\le N$). + +$$f(x)=\phi(x)+E(x)$$ +$$\phi(x_i)=f(x_i)\quad i=0\ldots n$$ +$$\int^b_a f(x)p(x)dx=\int^b_a\phi(x)p(x)dx+\int^b_a E(x)p(x)dx$$ + +$$\phi(x)=\sum^n_{j=0}L_j(x)f(x_j)\quad\text{Lagrange}$$ +$$\int^b_a f(x)p(x)dx=\int^b_a\left.\sum^n_{j=0}L_j(x)f(x_j)p(x)dx\right.+ +\int^b_a E(x)p(x)dx$$ +$$=\sum^n_{j=0}\left(\int^b_a L_j(x)p(x)dx\right)f(x_j)+\int^b_a E(x)p(x)dx$$ + +$$\int^b_a f(x)p(x)dx=\sum^n_{j=0}\omega_jf(x_j)+E$$ +$$\text{avec }\omega_j=\int^b_a L_j(x_j)p(x_j)dx\text{ et +}E=\int^b_aE(x)p(x)dx$$ + +\subsection{Quelques exemples de méthodes composées} + +$$[\alpha,\beta]\qquad I=\int^\beta_\alpha f(x)dx$$ +La méthode consiste à décomposer $[\alpha,\beta]$ en $k$ intervalles +$[\alpha_i,\alpha_{i+1}]\quad i=0,1,\ldots k$ et ensuite à approcher chaque +$\int^{\alpha_{i+1}}_{\alpha_i}f(x)dx$ en remplaçant $f(x)$ par son polynôme +d'interpolation. + +\paragraph{Exemple} $t_i\in[\alpha_i,\alpha_{i+1}]$ + +$$f(x)\simeq P_0(x)=f(t_i)\quad\forall x\in\left[\alpha_i,\alpha_{i+1}\right]$$ +$$\int^{\alpha_{i+1}}_{\alpha_i}f(x)dx\simeq(\alpha_{i+1}-\alpha_i)f(t_i)$$ +$$\int^\beta_\alpha +f(x)dx\simeq\sum^{k-1}_{i=0}\left(\alpha_{i+1}-\alpha_i\right)f(t_i)\quad\text{Somme +de Riemann}$$ diff --git a/maths/main.tex b/maths/main.tex index d7ba15a..735f06f 100644 --- a/maths/main.tex +++ b/maths/main.tex @@ -1,5 +1,5 @@ -\title{Mathématiques} -\author{Le prof} +\title{Approximation, interpolation, optimisation} +\author{Le prof de maths} \date{ING1} \maketitle diff --git a/mathsignal/main.tex b/mathsignal/main.tex new file mode 100644 index 0000000..9f964f3 --- /dev/null +++ b/mathsignal/main.tex @@ -0,0 +1,7 @@ +\title{Mathématiques du signal} +\author{Patrick} +\date{ING1} + +\maketitle + +\input{cours} diff --git a/sgdb/2.tex b/sgdb/2.tex new file mode 100644 index 0000000..bb0b2c1 --- /dev/null +++ b/sgdb/2.tex @@ -0,0 +1,6 @@ +\chapter{3e cours, 2e cours} + +\section{Le modèle relationnel} + +Une relation est représentée par une table. +Un attribut est une colonne. diff --git a/sgdb/introduction.tex b/sgdb/introduction.tex new file mode 100644 index 0000000..84e3138 --- /dev/null +++ b/sgdb/introduction.tex @@ -0,0 +1,206 @@ +\chapter{Introduction} + +\section{Définitions} + +Une base de données, c'est collection de données qui reflète un aperçu du monde +réel. + +Le SGBD c'est tout le système logiciel qui gére au moins une base de +données. Il peut être mono ou multi-utilisateur (plutôt multi). Il peut être +mono ou multi-utilisateur + +Les plus utilisés~: +\begin{itemize} + \item Oracle + \item Microsoft SQL Server + \item IBM db2 + \item Sybase + \item ... +\end{itemize} + +\begin{itemize} + \item PostgreSQL + \item MySQL +\end{itemize} + +En Français, on appelle \textbf{banque de données} une base de données et le +système de gestion ainsi que ses services associés. + +\section{Objectifs et fonctions d'un SGBD} + +Un SGBD sert principalement à séparer les données du programme dans le but +d'armoniser les données. On ne veut pas de redondances des données (partage +limité au niveau des fichiers, problèmes de cohérences globale (stocker deux +informations contradictoires)).\\ + +Le SGBD s'occupe de la gestion du stockage et assure l'interface entre les +programmes et les données. L'accès se fait au moyen d'un langage déclaratif, on +appelle cela une requête. + +Les requêtes sont regroupées en transations qui sont atomiques (tout est +exécuté ou rien). + +\begin{itemize} + \item \textbf{Indépendance des programmes aux données~:} d'un point de vue du + développeur, on ne sait pas où les données sont stockées ni comment elles + le sont. + \item \textbf{Simplicité~:} utilisation d'un langage non procédural. + \item \textbf{Efficacité des accès aux données~:} temps de réponse proche + d'une application dédiées. Les débits globaux sont très bons maintenant. + \item \textbf{Partage et sécurité~:} multi-utilisateurs avec des droits très + fins. Tout le monde ne peut pas faire des modifications ou lire + toutes les données.\\ + Gestion de la concurence des transactions. + \item \textbf{Conception facilité des applications~:} sauvegarde facilité des + données. Redondance contrôlée des données. + \item \textbf{Facilité de l'administration des SGBD~:} conception visuelle + des BDD, outils d'audit et de tunning, statistiques, \ldots +\end{itemize} + +\subsection{Langages des SGBDs} + +\subsubsection{Langage de définition des données} + +Définition de la base, des tables, les types des champs, etc. + +\subsubsection{Langage de manipulation de données} + +Il peut être autonome comme SQL ou intégré dans un langage de programmation. + +\subsection{Utilisateurs d'un SGBD} + +\paragraph{L'utilisateur final} il va effectuer des recherches, accéder à la +base par des interfaces applicatives ou web. Voire utiliser des langages +simples comme QBE. + +\paragraph{Le programmeur d'application} Spécialiste SQL, conçoit et implémente +des applications qui accédent à la BD + +\section{Architecture d'un SGBD} + +Premièrement, on doit avoir un gestionnaire de disques ou de fichiers (si on se +sert du système de fichiers du système). Mais les objectifs ne sont pas les +mêmes, ce n'est pas le bon choix. + +La partie interne va gérer la communication, gestionnaire de verrou, +réwcupération en cas de panne, \ldots + +La partie externe va faire l'interface avec les applications.\\ + + +On trouve 4 grands modules~: +\begin{itemize} + \item \textbf{L'évaluateur de requête~:} parse, planifie, évalue les + opérateurs, optimisation + \item \textbf{Gestion de la concurence~:} gestionnaire des transaction et des + verrous + \item \textbf{Récupération en cas de panne} + \item \textbf{Gestion des données~:} gestionnaire de l'espace disque, du + tampon, méthode d'accès et fichiers. +\end{itemize} + +Le \textbf{catalogue} est une base de données contenant des données sur les +bases de données~: type des colonnes, tables, \ldots + +\subsection{Objectifs du gestionnaire de transaction} + +Il préserve les propriétés \textbf{acid} des transactions~: +\begin{itemize} + \item Atomicité~: tout est exécuté correctement ou rien (du coup, annuler :D) + \item Cohérence de la base~: toutes les conditions des tables doivent être + validées. + \item Isolation~: on fait comme si l'on était seul dans la base. + \item Durabilité~: gérer tous les cas de pannes, \ldots +\end{itemize} + +Il doit aussi gérer les verrous et les journaux. + +\section{Organisation d'une BD} + +On distingue trois niveaux~: +\begin{itemize} + \item Niveau interne~: on a des fichiers dans lesquelles les données sont + stockées. + \item Niveau conceptuel~: il s'occupe de la modélisation du monde réel, en + prennant appuis sur le niveau interne pour regrouper les données. + \item Niveau externe~: on a des shémas externes, c'est à destination de + l'utilisateur. Cela ne correspond pas toujours à ce qui est enregistré dans + les fichiers (prix HT/TTC par exemple). +\end{itemize} + +\section{Histoire des SGBD} + +\subsection{Modéle hiérarchique (fin des années 60)} + +IBM lança IMS. Les associations entre les données sont représentées par un +arbre. Chaque enregistrement possède une clé~; dans l'arbre, chaque +enregistrement a un seul père. + +On a beaucoup de redondance d'informations (un même client qui achète deux +produits par exemple). + +\subsection{Modèle réseau (années 70)} + +Ce modèle a été proposée par Richard Bachman. Elle a été implémentée par +Honeywell sous le nom IDS, standardisée en 1969. + +Les associations entre les données sont représentées par un graphe. + +Beaucoup de problématique ne sont pas gérées comme la dépendance d'éléments. + +\subsection{Modèle relationnel (1970-80)} + +C'est Ted Codd qui définit ce modèle lorsqu'il travaillait pour IBM. Il s'en +suit deux projets majeurs~: +\begin{itemize} + \item \textbf{INGRES~:} à l'université de Berkley. Par la suite PostGreSQL + \item \textbf{System R.~:} dans un labo d'IBM, qui deviendra le produit DB2 + qui inspira Oracle. +\end{itemize} + +Le succès du modèle relationnel tient dans l'implémentation multi-plateforme +car son concurent~: le modèle réseau qui ne fonctionnait que sur les mainframe +d'IBM exclusivement.\\ + +De nombreux points de Ted Codd ont cependant été abandonnées~: le langage de +base (alpha) était très mathématique et peu adapté. Au final, la première norme +de SQL est parrue en 86. + +\subsection{Modèle entité/association} + +Proposé par Peter Chen~: chaque enregistrement est une entitée qui sont reliées +entre-elles par des associations. Personne n'a implémentés ces idées, seul +l'outils de modélisation a été conservé. + +\subsection{Modèle R++, Relationel++} + +Nouvelles briques~: notion d'attribut d'un certain type (couleur issue d'un +ensemble particulier: un domaine), aggrégation, \ldots + +Pas non plus de grand succès. Mais le modèle relationel a absorpé pas mal de +concepts. + +\subsection{Modèle sémantique} + +Notion d'héritage, de classe, de propriétés, poussant le modèle relationnel à +implémenter de la gestion objet. + +\subsection{Modèle orienté objet} + +Reprise des idées du modèle sémantique. Implémentée par une société française +(O2) par François Bancilhon. Il crée un langage déclaratif OQL. + +La compta de l'école est toujours gérée sous Orion \o/ + +Le problème de la boîte fut qu'elle soit française~! + +\subsection{Modèle relationnel objet} + +Débuté avec l'intérêt d'INGRES.\\ + +C'est actuellement le modèle actuel. + +\subsection{Recherches actuelles} + +XML, Internet et web, multimédia, aide à la prise de décision, interrogation +par le contenu d'objet multimédia, système d'informations géographique. diff --git a/sgdb/main.tex b/sgdb/main.tex new file mode 100644 index 0000000..e073dad --- /dev/null +++ b/sgdb/main.tex @@ -0,0 +1,8 @@ +\title{Système de base de données relationnel} +\author{Réda \textsc{Dehak}} +\date{} + +\maketitle + +%\input{introduction.tex} +\input{modelisation.tex}