Cours de la semaine
This commit is contained in:
parent
e74c3a6dc8
commit
cc8094acc0
18
cmp/20120221-typage.tex
Normal file
18
cmp/20120221-typage.tex
Normal 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
111
cmp/20120306.tex
Normal 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
7
cmp/main.tex
Normal file
@ -0,0 +1,7 @@
|
||||
\title{Construction des compilateurs}
|
||||
\author{Rolland}
|
||||
\date{ING1}
|
||||
|
||||
\maketitle
|
||||
|
||||
\input{20120306}
|
24
foncprog/2-suite.tex
Normal file
24
foncprog/2-suite.tex
Normal 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}
|
||||
|
@ -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}$$
|
||||
|
@ -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
7
mathsignal/main.tex
Normal file
@ -0,0 +1,7 @@
|
||||
\title{Mathématiques du signal}
|
||||
\author{Patrick}
|
||||
\date{ING1}
|
||||
|
||||
\maketitle
|
||||
|
||||
\input{cours}
|
6
sgdb/2.tex
Normal file
6
sgdb/2.tex
Normal 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
206
sgdb/introduction.tex
Normal 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
8
sgdb/main.tex
Normal 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}
|
Reference in New Issue
Block a user