Cours de la semaine

This commit is contained in:
Némunaire 2012-03-17 06:16:57 +01:00
parent e74c3a6dc8
commit cc8094acc0
10 changed files with 792 additions and 3 deletions

18
cmp/20120221-typage.tex Normal file
View File

@ -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}

111
cmp/20120306.tex Normal file
View File

@ -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.

7
cmp/main.tex Normal file
View File

@ -0,0 +1,7 @@
\title{Construction des compilateurs}
\author{Rolland}
\date{ING1}
\maketitle
\input{20120306}

24
foncprog/2-suite.tex Normal file
View File

@ -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}

View File

@ -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}$$

View File

@ -1,5 +1,5 @@
\title{Mathématiques}
\author{Le prof}
\title{Approximation, interpolation, optimisation}
\author{Le prof de maths}
\date{ING1}
\maketitle

7
mathsignal/main.tex Normal file
View File

@ -0,0 +1,7 @@
\title{Mathématiques du signal}
\author{Patrick}
\date{ING1}
\maketitle
\input{cours}

6
sgdb/2.tex Normal file
View File

@ -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.

206
sgdb/introduction.tex Normal file
View File

@ -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.

8
sgdb/main.tex Normal file
View File

@ -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}