diff --git a/tpIntegrales/Makefile b/tpIntegrales/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..9a261f706e635e1b72fbe32ebf2d13bc89e423ca --- /dev/null +++ b/tpIntegrales/Makefile @@ -0,0 +1,34 @@ +STYLES := ../css/tufte-css/tufte.css \ + ../css/pandoc.css \ + ../css/pandoc-solarized.css \ + ../css/tufte-extra.css + +OPTIONS = --filter=pandoc-numbering +OPTIONS += --filter=pandoc-crossref + +PDFOPTIONS = --pdf-engine pdflatex +PDFOPTIONS += --highlight-style kate +PDFOPTIONS += --number-sections +PDFOPTIONS += --template=./default.latex + + +HTMLOPTIONS += -t html5 +HTMLOPTIONS += -c ../css/styling.css +HTMLOPTIONS += --self-contained +HTMLOPTIONS += --mathjax=../MathJax.js + +MD=$(wildcard *.md) +HTML=$(MD:%.md=%.html) +PDF=$(MD:%.md=%.pdf) + + +all: $(HTML) $(PDF) + +%.pdf: %.md Makefile + pandoc -s $(OPTIONS) $(PDFOPTIONS) -o $@ $< + +%.html: %.md Makefile + pandoc -s $(OPTIONS) $(HTMLOPTIONS) -o $@ $< + +clean: + rm -rf *.html *.pdf diff --git a/tpIntegrales/tp_integrales_conv.md b/tpIntegrales/tp_integrales_conv.md new file mode 100644 index 0000000000000000000000000000000000000000..1f8884781b6105ae29d89d4ce06a63816a11a69e --- /dev/null +++ b/tpIntegrales/tp_integrales_conv.md @@ -0,0 +1,130 @@ +--- +# author: +# - Orestis Malaspinas +title: Travail pratique sur les intégrales +autoSectionLabels: true +autoEqnLabels: false +eqnPrefix: + - "éq." + - "éqs." +chapters: false +numberSections: false +chaptersDepth: 1 +sectionsDepth: 3 +lang: fr +documentclass: article +papersize: A4 +cref: false +pandoc-numbering: + - category: exercice +urlcolor: blue +--- +\newcommand{\dd}{\mathrm{d}} +\newcommand{\real}{\mathbb{R}} +\newcommand{\vectwo}[2]{\begin{pmatrix}#1 \\ #2 \end{pmatrix}} +\newcommand{\vecthree}[3]{\begin{pmatrix}#1 \\ #2 \\ #3 \end{pmatrix}} +\newcommand{\mat}[1]{\underline{\underline{#1}}} +\newcommand{\mattwo}[4]{\begin{pmatrix} + #1 & #2 \\ + #3 & #4 + \end{pmatrix}} + +# But du travail et rendu + +Le but de ce travail pratique est d'implanter les méthodes numériques de calcul d'intégrales que nous avons vues en cours, +afin de les comprendre de façon un peu plus approfondie. Puis, il faudra utiliser ces méthodes pour calculer +des convolutions afin de filtrer un signal. + +Aucun langage particulier n'est imposé. Il est recommandé d'utiliser octave ou python (en particulier les librairies numpy/scipy/matplotlib). + +Vous devrez rendre un petit rapport (3-4 pages) qui explique ce que vous avez fait et dans quel but. Il devra contenir +une courte introduction théorique (rappelant les formules et le but du travail), une partie expliquant dans les grandes lignes +des algorithmes (pas de copier-coller du code, pas de captures d'écran non plus sous peine de sanctions terribles). +La partie importante est celle contenant les résultats obtenus et leur discussion. Finalement, il faut inclure +une conclusion résumant votre travail. + +Le travail doit être effectué par groupes de deux +(n'oubliez pas de mentionner les deux noms sur le rapport et dans le code si le travail est fait à deux). +Je dois pouvoir exécuter le code +afin de pouvoir reproduire les résultats présentés dans le rapport (un petit *readme* pour les instructions est le bienvenu). +Je dois aussi pouvoir définir ma propre fonction à intégrer de façon simple. +Le rapport et le code doivent être déposés sur cyberlearn. + +La note sera une combinaison entre le code rendu et le rapport (moitié/moitié). + +# Intégration numérique + +## Méthodes d'intégration + +Dans un premier temps, le but est donc d'écrire un code où l'utilisateur spécifie une fonction $f(x)$ +(il écrira lui-même le code de la dite fonction) qu'on +suppose ``gentille'' (pas besoin de vérifier +si elle est bien définie partout par exemple), un intervalle $[a,b]$, et +un nombre de subdivisions $N$. Le code devra rendre la valeur numérique obtenue pour l'intégrale de la fonction +\begin{equation} +I(a,b,N,f(x)) \cong \int_a^bf(x)\dd x +\end{equation} +pour deux méthodes vues en cours (méthode du rectangle à gauche, et méthode du trapèze)[^1]. + +## Étude de l'erreur + +Lorsqu'on calcule numériquement une intégrale, on espère que la valeur de celle-ci *converge*, c'est-à-dire +que plus $N$ est grand, plus la valeur de l'approximation est bonne. Pour vérifier que cela se passe avec nos +méthodes d'intégration, vous devrez effectuer une étude de l'erreur de vos méthodes d'intégration numériques. +Pour ce faire, nous choisissons une fonction $f(x)$ +dont la primitive est simple à calculer +\begin{equation} +f(x)=-\frac{2x-1}{\exp(x^2-x+2)}, +\end{equation} +et un intervalle sur lequel la fonction est bien définie. Choisissons ici $[a,b]$ avec $a=1$ et $b=5$. +On peut donc calculer l'intégrale exactement (analytiquement) et on notera ce résultat exact $I_{exact}(a,b,f(x))$. +Puis, il faut calculer l'erreur commise par l'évaluation de la fonction $I(a,b,N,f(x))$ +pour $N=5, 10, 50, 100, 500, 1000$ pour chacune des méthodes que vous avez implémentées ci-dessus. +L'erreur $E(N)$ se calcule de la façon suivante +\begin{equation} + E(N)=\left|\frac{I_{exact}(a,b,f(x))-I(a,b,N,f(x))}{I_{exact}(a,b,f(x))}\right| +\end{equation} +Ces résultats devront être illustrés sous forme de graphique ($E$ en fonction de $N$ en échelle log-log). +Que constatez-vous? Pouvez-vous mesurer le taux de décroissance de l'erreur? + +# Convolutions et filtrage + +Nous voulons à présent essayer de voir comment utiliser la convolution pour filtrer un signal simple. + +## La convolution continue + +Le signal que nous souhaitons filtrer est définit par la fonction $s(x)$ +\begin{equation} +s(x)=\sin(2\pi\omega_1 x)+\sin(2\pi\omega_2 x). +\end{equation} +La fonction de filtrage que nous allons utiliser est définie par $f(x)$ +\begin{equation} +f(x)=\left\{\begin{array}{ll} + \frac{1}{\psi},&\mbox{ si }x\in[-\psi/2,\psi/2]\\ + 0,&\mbox{ sinon.} + \end{array}\right. +\end{equation} +Afin de se familiariser un peu avec ces deux fonctions, ne pas hésiter à les dessiner +pour différentes valeur de $\omega_1$, $\omega_2$, et $\psi$. + +Puis, calculer analytiquement (à la main avec du papier et un crayon[^2]) la convolution $(f\ast s)(x)$. +A partir du résultat de la convolution, déterminer la relation entre $\psi$ et $\omega_1$ (respectivement $\omega_2$) +pour enlever complètement la composante $\omega_1$ (respectivement $\omega_2$) du signal $s(x)$. +Utiliser ces relations pour illustrer le filtrage de $s(x)$ pour différentes valeurs de $\omega_1$ et $\omega_2$. + +## La convolution discrète + +Utiliser une des méthodes implémentées dans le chapitre précédent pour calculer numériquement +le filtrage de $s(x)$ par la fonction $f(x)$ pour différentes valeurs de $\omega_1$, $\omega_2$ et $\psi$ (essayer par exemple de reproduire +les résultats de la section précédente). Puis, répétez l'opération avec une autre fonction de filtrage +$h(x)$ définie par +\begin{equation} +h(x)=\frac{1}{2\pi\psi}\exp(-x^2/(2\psi)). +\end{equation} +Voyez-vous des différences? + + + + +[^1]: Vous retrouverez les formules dans le polycopié. +[^2]: Exceptionnellement un stylo est également toléré. \ No newline at end of file