Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • alexis.durgnat/homepage
  • orestis.malaspin/homepage
2 results
Select Git revision
Show changes
---
title: Example Blog Post
author: Stephen Diehl
date: 2013-11-13
mathjax: on
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
non est in neque luctus eleifend. Sed tincidunt vestibulum
facilisis. Aenean ut pulvinar massa.
Some math:
$$
\begin{aligned}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0 \end{aligned}
$$
Some code:
```haskell
newtype MonadMonoid m a = MonadMonoid { unMonad :: a -> m a }
instance Monad m => Monoid (MonadMonoid m a) where
mempty = MonadMonoid return
mappend f g = MonadMonoid (f >=> g)
```
Fin.
---
author:
- Orestis Malaspinas
title: Mathématiques en technologie de l'Information
autoSectionLabels: false
autoEqnLabels: true
eqnPrefix:
- "éq."
- "éqs."
chapters: true
numberSections: false
chaptersDepth: 1
sectionsDepth: 3
lang: fr
documentclass: book
papersize: A4
cref: false
urlcolor: blue
date: 2013-11-13
mathjax: on
---
\newcommand{\ux}{\bm{x}}
\newcommand{\dd}{\mathrm{d}}
\newcommand{\real}{\mathbb{R}}
\newcommand{\grad}{\mathrm{grad}}
# Intégrales
## Interprétation géométrique
Dans ce chapitre nous nous intéressons au calcul d’aires sous une
fonction $f$. La fonction $f$ satisfait les hypothèses suivantes.
1. $f(x)$ est bornée dans l’intervalle $[a,b]\in{\real}$.
2. $f(x)$ est continue presque partout.
Nous définissions également l’infimum de $f$ sur un intervalle
$[x_0,x_1]$, noté $$\inf\limits_{[x_0,x_1]} f(x)$$ comme étant la plus grande valeur
bornant par dessous toutes les valeurs prises par $f(x)$ dans
l’intervalle $[x_0,x_1]$. Le suprémum sur un intervalle $[x_0,x_1]$,
noté $$\sup\limits_{[x_0,x_1]} f(x)$$ comme étant la plus petite valeur bornant par
dessus toutes les valeurs prises par $f(x)$ dans l’intervalle
$[x_0,x_1]$.
Finalement nous définissons une subdivision
$$\Delta_n=\{a=x_0<x_1<...<x_{n-1}<x_{n}=b\}$$ est une suite finie
contenant $n+1$ termes dans $[a,b]$.
On peut à présent approximer l’aire sous la fonction $f(x)$ dans
l’intervalle $[a,b]$ de plusieurs façons:
1. $A^i(n)=\sum_{i=0}^{n-1} \inf\limits_{[x_i,x_{i+1}]} f(x)\cdot (x_{i+1}-x_i)$
comme étant l’aire inférieure.
2. $A^s(n)=\sum_{i=0}^{n-1} \sup\limits_{[x_i,x_{i+1}]} f(x)\cdot (x_{i+1}-x_i)$
comme étant l’aire supérieure.
3. $A^R(n)=\sum_{i=0}^{n-1} f(\xi_i)\cdot (x_{i+1}-x_i)$, $\xi_i\in [x_i,x_{i+1}]$
1 et 2 sont les sommes de Darboux, 3 est une somme de Riemann qui, dépendant des choix des $\xi_i$, peut être égale à 1 ou à 2.
L’aire de sous la fonction $f(x)$ est donnée par la limite pour
$n\rightarrow\infty$ de $A^i$ ou $A^s$ (si elle existe). Dans ce cas $n\rightarrow\infty$ $A^R$ (pris en sandwich entre $A^i$ et $A^n$)
nous donne aussi l'aire sous la fonction.
Remarque +.#
1. Ces sommes peuvent être positives ou négatives en fonction du signe
de $f$.
2. Une implémentation informatique est immédiate, en particulier pour la somme de Riemann.
Définition (Intégrabilité au sens de Riemann) +.#
Une fonction est dite intégrable au sens de Riemann si
$$\lim\limits_{n\rightarrow\infty}A^i(n)=\lim\limits_{n\rightarrow\infty}A^s(n)=\int_a^b f(x){\mathrm{d}}x.$$
Dans la formule
$$\int_a^b f(x){\mathrm{d}}x,$$
$x$ est appelée
variable d’intégration, $a$ et $b$ sont les bornes d’intégration. Pour
des raisons de consistance dans les notations la variable d’intégration
ne peut être désignée avec le même symbole qu’une des bornes
d’intégration.
---
Exemple (Intégration de Riemann) +.#
Intégrer de $f(x)=x$ dans intervalle $[0,1]$.
---
---
Solution (Intégration de Riemann) +.#
Il est élémentaire de calculer que cette aire vaut $1/2$ (c’est l’aire d’un
triangle rectangle de côté 1). Néanmoins, évaluons également cette aire
à l’aide de $A^i$ et $A^s$. Commençons par subdiviser $[0,1]$ en $n$
intervalles égaux de longueur $\delta=1/n$. Comme $f(x)$ est strictement
croissante, on a que $\inf\limits_{[x_i,x_{i+1}]}f(x)=f(x_i)$ et que
$\sup\limits_{[x_i,x_{i+1}]}f(x)=f(x_{i+1})$. On a donc que
1. $A^i(n)=\delta\sum_{i=0}^{n-1} x_i=\delta\sum_{i=0}^{n-1}\frac{i}{n}=\frac{n(n-1)}{2n^2}=\frac{n-1}{2n}$[^2].
Et donc en prenant la limite pour $n\rightarrow\infty$ il vient
$$A^i=\lim\limits_{n\rightarrow\infty}\frac{n-1}{2n}=\frac{1}{2}.$$
2. $A^s(n)=\delta\sum_{i=0}^{n-1} x_{i+1}=\delta\sum_{i=0}^{n-1}\frac{i+1}{n}=\delta\sum_{i=0}^{n}\frac{i}{n}=\frac{n(n+1)}{2n^2}=\frac{n+1}{2n}$.
Et donc en prenant la limite pour $n\rightarrow\infty$ il vient
$$A^s=\lim\limits_{n\rightarrow\infty}\frac{n+1}{2n}=\frac{1}{2}.$$
---
---
Exemple (Intégration de Riemann de $x^2$) +.#
Calculer l’aire sous la courbe de $f(x)=x^2$ dans intervalle $[0,1]$.
Indication: $\sum_{i=0}^n i^2=\frac{1}{6}n(n+1)(2n+1).$
---
Interprétation physique
-----------------------
Supposons que nous ayons une fonction, $x(t)$, qui donne la position
d’un objet pour un intervalle de temps $t\in[a,b]$. Nous pouvons
aisément en déduire la vitesse $v(t)$ de l’objet, comme étant la
variation de $x(t)$ quand $t$ varie. Autrement dit $v(t)=x'(t)$.
Supposons à présent que nous ne connaissions que la vitesse $v(t)$ de
notre objet. Afin de déduire sa position nous prendrions un certain
nombre d’intervalles de temps $\delta t_i=t_{i+1}-t_i$ que nous
multiplierions par $v(t_i)$ afin de retrouver la distance parcourue
pendant l’intervalle $\delta t_i$ et ainsi de suite. Afin d’améliorer
l’approximation de la distance parcourue nous diminuerions la valeur de
$\delta t_i$ jusqu’à ce que $\delta t_i\rightarrow 0$.
Nous voyons ainsi que cette méthode, n’est autre qu’une façon “intuitive”
d’intégrer la vitesse afin de trouver la position. Et que
l’intégrale et la dérivée sont étroitement liées: la vitesse étant la
dérivée de la position et la position étant l’intégrale de la vitesse.
Primitive
---------
Si maintenant nous essayons de généraliser le calcul de l’intégrale
d’une fonction, il s’avère que le calcul d’une intégrale est l’inverse
du calcul d’une dérivée.
Définition (Primitive) +.#
Soit $f$ une fonction. On dit que $F$ est une primitive de $f$ sur
l’intervalle $D\subseteq{\real}$ si $F'(x)=f(x)$ $\forall x\in D$.
Si $F$ est une primitive de $f$, alors on peut définir la fonction $G$
telle que $G(x)=F(x)+C$, $C\in{\real}$ qui est aussi une
primitive de $f$. On voit que la primitive de $f$ est définie à une
constante additive près. En effet, si $F'=f$ on a
$$G'=F'+\underbrace{C'}_{=0}=F'=f.$$
Théorème (Unicité) +.#
Pour $a\in D$ et $b\in{\real}$ il existe une unique
primitive $F$ telle que $F(a)=b$.
---
Illustration (Unicité) +.#
Soit $f(x)=x$, alors l’ensemble de primitives correspondantes est
$G=x^2/2+C$. Si nous cherchons la primitive telle que $G(0)=0$, il vient
que $C=0$ et donc la primitive est unique et vaut $F(x)=x^2/2$.
---
---
Exercices (Primitives) +.#
Calculez les primitives suivantes (*indication: il s’agit de trouver les
fonctions $F(x)$ telles que $F'(x)=f(x)$*):
1. $F(x)=\int x^2{\mathrm{d}}x$.
2. $F(x)=\int x^n{\mathrm{d}}x$, $n\in {\real}\backslash\{-1\}$.
3. $F(x)=\int \sqrt{x}{\mathrm{d}}x$.
4. $F(x)=\int \frac{1}{x}{\mathrm{d}}x$.
5. $F(x)=\int \exp(x){\mathrm{d}}x$.
6. $F(x)=\int \sin(x){\mathrm{d}}x$.
---
Maintenant que vous avez calculé toutes ces primitives de base, nous
pouvons récapituler des formules qui seront importantes pour la suite:
1. $\int x^n{\mathrm{d}}x=\frac{1}{n+1}x^{n+1}+C$,
$n\in {\real}\backslash\{-1\}$.
2. $\int \frac{1}{x}{\mathrm{d}}x=\ln(x)+C$.
3. $\int \exp(x){\mathrm{d}}x=\exp(x)+C$.
4. $\int \sin(x){\mathrm{d}}x=-\cos(x)+C$.
5. $\int \cos(x){\mathrm{d}}x=\sin(x)+C$.
Théorème (Théorème fondamental du calcul intégral) +.#
En définissant à présent l’intégrale à l’aide de la notion
de primitive, nous avons que pour $a,b\in{\real}$ et $a<b$
$$\int_a^b f(x){\mathrm{d}}x=\left.F\right|_a^b=F(b)-F(a).$${#eq:thm_fond}
On dit que $x$ est la variable d’intégration. Elle est dite “muette” car
elle disparaît après que l’intégrale ait été effectuée. On peut donc
écrire l’équation ci-dessus de façon équivalente en remplaçant le
symbole $x$ par n’importe quelle autre lettre (sauf $a,b,f,F$).
---
Remarque +.#
On notera que la constante additive $C$ a disparu de cette formule. En
effet, remplaçons $F$ par $G=F+C$, il vient
$$\int_a^b f(x){\mathrm{d}}x=G(b)-G(a)=F(b)+C-F(a)-C=F(b)-F(a).$$
---
Il suit de l'@eq:thm_fond que
$$\int_a^af(x){\mathrm{d}}x=F(a)-F(a)=0$$ et que
$$\int_a^bf(x){\mathrm{d}}x= -\int_b^af(x){\mathrm{d}}x$$
Nous pouvons à présent définir la fonction $G(x)$ telle que
$$G(x)=\int_a^xf(y){\mathrm{d}}y=F(x)-F(a).$$ Il suit que $G(x)$
est la primitive de $f$ telle que $G(a)=0$.
Propriétés +.#
Soient $f$ et $g$ deux fonctions intégrables sur un intervalle
$D=[a,b]\subseteq{\real}$, $c\in[a,b]$, et $\alpha\in{\real}$.
On a
1. La dérivée et l’intégrale “s’annulent”
$$\left(\int_a^x f(x){\mathrm{d}}x\right)'=\left(F(x)-F(a)\right)'=F'(x)-\left(F(a)\right)'=F'(x)=f(x).$$
2. La fonction $h=f+g$ admet aussi une primitive sur $D$, et on a
$$\int_a^b(f(x)+g(x)){\mathrm{d}}x=\int_a^b f(x){\mathrm{d}}x+\int_a^b g(x){\mathrm{d}}x.$$
3. La fonction $h=\alpha f$ admet aussi une primitive sur $D$, et on a
$$\int_a^b\alpha f(x){\mathrm{d}}x=\alpha\int_a^b f(x){\mathrm{d}}x.$$
4. Relation de Chasles (faire la démonstration en exercice)
$$\int_a^c f(x){\mathrm{d}}x=\int_a^b f(x){\mathrm{d}}x+\int_b^c f(x){\mathrm{d}}x.$$
De cette relation on déduit qu’on peut calculer l’intégrale d’une
fonction continue par morceaux sur $[a,b]$.
5. Si $f$ est paire alors
$$\int_{-a}^a f(x){\mathrm{d}}x = 2\int_0^a f(x){\mathrm{d}}x.$$
6. Si $f$ est impaire alors $$\int_{-a}^a f(x){\mathrm{d}}x = 0.$$
### Intégrales impropres
Si une des bornes d’intégration ou si la fonction à intégrer admet une
discontinuité à des points bien définis, nous parlons intégrales
impropres.
Lorsqu’une borne d’intégration est infinie, alors nous pouvons avoir les
cas de figures suivants $$\begin{aligned}
&\int_a^\infty f(x){\mathrm{d}}x=\lim\limits_{b\rightarrow\infty}\int_a^b f(x){\mathrm{d}}x,\\
&\int_{-\infty}^b f(x){\mathrm{d}}x=\lim\limits_{a\rightarrow\infty}\int_{-a}^b f(x){\mathrm{d}}x,\\
&\int_{-\infty}^\infty f(x){\mathrm{d}}x=\lim\limits_{a\rightarrow\infty}\int_{-a}^a f(x){\mathrm{d}}x.\end{aligned}$$
---
Exemple (Intégrale impropre) +.#
Calculer l’intégrale suivante
$$\int_0^\infty e^{-ax}{\mathrm{d}}x,\quad a>0.$$
Solution (Intégrale impropre) +.#
Nous pouvons réécrire
l’intégrale ci-dessus comme
$$\int_0^\infty e^{-ax}{\mathrm{d}}x=\lim\limits_{b\rightarrow \infty}\int_0^b e^{-ax}{\mathrm{d}}x=-\frac{1}{a}\lim\limits_{b\rightarrow\infty}\left[e^{-ax}\right]_0^b=-\frac{1}{a}\left[\lim\limits_{b\rightarrow \infty}e^{-ab}-1\right]=\frac{1}{a}.$$
---
---
Exercice +.#
Calculer l’intégrale suivante
$$\int_1^\infty \frac{1}{x^2}{\mathrm{d}}x.$$
---
Lorsque nous avons une discontinuité dans la fonction $f$ au point
$c\in[a,b]$ nous avons
$$\int_a^b f(x){\mathrm{d}}x = \lim\limits_{\varepsilon\rightarrow 0}\int_a^{c-\varepsilon} f(x){\mathrm{d}}x +\int_{c+\varepsilon}^b f(x){\mathrm{d}}x.$$
Exercice +.#
Montrer que $$\int_{-1}^2\frac{1}{x}=\ln{2}.$$
Définition (Valeur moyenne) +.#
Soit une fonction $f$ admettant une primitive sur $[a,b]$ avec $a<b$,
alors la valeur moyenne $\bar{f}$ de cette fonction sur $[a,b]$, est définie par
$$\bar{f}=\frac{1}{b-a}\int_a^bf(x){\mathrm{d}}x.$$
Méthodes d’intégration
----------------------
Dans cette section, nous allons étudier différentes méthodes pour
intégrer des fonctions.
### Intégration de fonctions usuelles et cas particuliers
Le calcul d’une primitive ou d’une intégrale n’est en général pas une
chose aisée. Nous connaissons les formules d’intégration pour certaines
fonctions particulières.
#### Polynômes
Les polynômes s’intègrent terme à terme. Pour
$(\{a_i\}_{i=0}^{n}\in{\real}$ $$\begin{aligned}
&\int a_0 + a_1 x + a_2 x^2+\cdots+a_{n-1} x^{n-1}+a_{n} x^{n}{\mathrm{d}}x\\
=&\int a_0{\mathrm{d}}x + \int a_1 x{\mathrm{d}}x + \int a_2 x^2{\mathrm{d}}x+\cdots+\int a_{n-1} x^{n-1}{\mathrm{d}}x+\int a_{n} x^{n}){\mathrm{d}}x\\
=&a_0 x + \frac{a_1}{2}x^2+\frac{a_2}{3}x^3+\cdots+\frac{a_n}{n+1}x^{n+1}+c.\end{aligned}$$
---
Exercice +.#
Intégrer la fonction suivante
$$\int (x+2)(x^3+3x^2+4x-3){\mathrm{d}}x.$$
---
#### Application de la règle de chaîne pour l’intégration
Une primitive d'une fonction de la forme $f(x)f'(x)$ se calcule aisément
$$\int f(x)f'(x){\mathrm{d}}x=\frac{1}{2}f(x)^2+c.$$
Nous calculons par exemple
$$\int \sin(x)\cos(x){\mathrm{d}}x=\frac{1}{2}\sin^2(x)+c=-\frac{1}{2}\cos^2(x)+c'.$${#eq:sin_cos}
#### Inverse de la dérivation logarithmique
Une primitive de la forme
$$\int \frac{f'(x)}{f(x)}{\mathrm{d}}x=\ln(f(x))+c.$$
---
Exemple +.#
Calculer la primitive suivante
$$
\int \frac{1}{x}{\mathrm{d}}x.
$$
Solution +.#
Le calcul de la primitive de suivante
$$\int \frac{1}{x}{\mathrm{d}}x=\int \frac{(x)'}{x}{\mathrm{d}}x=\ln(x)+c.$$
---
#### Règle de chaîne
Une des façons les plus simples de calculer une primitive est
de reconnaître la règle de chaîne dans le terme à intégrer
$$\int g'(f(x))f'(x){\mathrm{d}}x=\int [g(f(x))]' {\mathrm{d}}x=g(f(x))+c.$$
Illustration +.#
Si $g$ est définie comme $g(x)=x^{-1}$ et $f(x)=3x^2+2$, alors la
primitive
$$\int \frac{f'(x)}{g'(f(x))}{\mathrm{d}}x=\int -\frac{6 x}{(3x^2+2)^2}{\mathrm{d}}x=\frac{1}{3x^2+2}+c.$$
### Intégration par parties
La dérivation d’un produit de fonctions $f\cdot g$ s’écrit
$$(f(x)g(x))'=f'(x) g(x)+f(x) g'(x).$$ En intégrant cette équation on
obtient
$$f(x)g(x)=\int f'(x) g(x){\mathrm{d}}x+\int f(x) g'(x){\mathrm{d}}x.$$
Une primitive de la forme $\int f'(x) g(x){\mathrm{d}}x$ peut ainsi se
calculer de la façon suivante
$$\int f'(x) g(x){\mathrm{d}}x=f(x)g(x)-\int f(x) g'(x){\mathrm{d}}x.$$
De façon similaire si nous nous intéressons à une intégrale définie
$$\int_a^b f'(x) g(x){\mathrm{d}}x=\left.(f(x)g(x))\right|_a^b-\int_a^b f(x) g'(x){\mathrm{d}}x.$$
Le choix des fonctions est complètement arbitraire. Néanmoins, le but de
cette transformation est de remplacer une intégrale par une autre dont
on connaîtrait la solution.
Des “règles” pour utiliser cette technique seraient que
1. $g'$ soit facile à calculer et aurait une forme plus simple que $g$.
2. $\int f'{\mathrm{d}}x$ soit facile à calculer et aurait une forme
plus simple que $f'$.
---
Exemple +.#
Calculer les primitives suivantes
1. $\int x e^x{\mathrm{d}}x$.
2. $\int \cos(x)\sin(x){\mathrm{d}}x$.
Solution +.#
1. $\int x e^x{\mathrm{d}}x$. $g(x)=x$, $f'(x)=e^x$ et donc $g'(x)=1$,
$f(x)=e^x$. Il vient
$$\int x e^x=x e^x-\int e^x{\mathrm{d}}x=x e^x-e^x+c.$$
2. $\int \cos(x)\sin(x){\mathrm{d}}x$. $g= \cos(x)$, $f'(x)=\sin(x)$ et
donc $g'(x)=-\sin(x)$, $f(x)=-\cos(x)$. Il vient $$\begin{aligned}
&\int \cos(x)\sin(x){\mathrm{d}}x=\sin^2(x)-\int \cos(x)\sin(x){\mathrm{d}}x\nonumber\\
\Rightarrow &\int \cos(x)\sin(x){\mathrm{d}}x=\frac{1}{2}\sin^2(x).
\end{aligned}$$
On voit que le résultat de l’intégration par
partie nous redonne l’intégrale de départ. Ceci nous permet
d’évaluer directement la dite intégrale pour retrouver le résultat de l'@eq:sin_cos
---
Il est également possible d’enchaîner plusieurs intégrations par
parties.
---
Exemple +.#
Calculer l’intégrale de $\int x^2 e^x{\mathrm{d}}x$.
Solution +.#
En posant $g(x)=x^2$,
$f'(x)=e^x$ et donc $g'(x)=2x$, $f(x)=e^x$. Il vient
$$\int x^2 e^x{\mathrm{d}}x=x^2e^x-2\int x e^x{\mathrm{d}}x.$$ On pose
de façon similaire $g(x)=x$, $f'(x)=e^x$ et donc $g'(x)=1$, $f(x)=e^x$
et il vient
$$\int x^2 e^x{\mathrm{d}}x=x^2e^x-2\left(x e^x -\int e^x{\mathrm{d}}x\right)=x^2e^x-2x e^x +2e^x+c.$$
---
---
Exercice +.#
Calculer les primitives suivantes
1. $\int \ln(x){\mathrm{d}}x$
2. $\int x^2 \sin(x){\mathrm{d}}x$
3. $\int e^x\sin(x){\mathrm{d}}x$
---
### Intégration par changement de variables
On observe que la dérivation de la composition de deux fonctions $F$ et
$g$ est donnée par
$$(F\circ g)'=(f\circ g)\cdot g',\mbox{ ou } [F(g(y))]'=f(g(y))\cdot g'(y),$$
où $f=F'$. Si nous intégrons cette relation on obtient $$\begin{aligned}
\int_a^b f(g(y))g'(y){\mathrm{d}}y = \int_a^b [F(g(y))]'{\mathrm{d}}y=\left.F(g(y))\right|_a^b=F(g(b))-F(g(a))=\int_{g(a)}^{g(b)}f(x){\mathrm{d}}x.\end{aligned}$$
Cette relation nous mène au théorème suivant.
Théorème (Intégration par changement de variables) +.#
Soit $f$ une fonction continue presque partout, et $g$ une fonction dont
la dérivée est continue presque partout sur un intervalle $[a,b]$. Soit
également l’image de $g$ contenue dans le domaine de définition de $f$.
Alors
$$\int_a^b f(g(x))g'(x){\mathrm{d}}x = \int_{g(a)}^{g(b)}f(z){\mathrm{d}}z.$$
Nous utilisons ce théorème de la façon suivante. L’idée est de remplacer
la fonction $g(x)$ par $z$. Puis il faut également remplacer
${\mathrm{d}}x$ par ${\mathrm{d}}z$ où nous avons que
${\mathrm{d}}x={\mathrm{d}}z/g'(x)$. Finalement, il faut changer les
bornes d’intégration par $a\rightarrow g(a)$ et $b\rightarrow g(b)$. Si
on ne calcule pas l’intégrale mais la primitive, on ne modifie
(évidemment) pas les bornes d’intégration, mais en revanche pour trouver
la primitive il faut également appliquer la transformation $x=g^{-1}(z)$
sur la solution.
---
Exemple (Changement de variable) +.#
Intégrer par changement de variables $\int_1^3 6x\ln(x^2){\mathrm{d}}x$.
Solution (Changement de variable) +.#
En définissant $z=x^2$, nous avons ${\mathrm{d}}x={\mathrm{d}}z/(2x)$.
Les bornes d’intégration deviennent $z(1)=1^2=1$ et $z(3)=3^2=9$. On
obtient donc $$\begin{aligned}
\int_1^3 6x\ln(x^2){\mathrm{d}}x&=\int_1^9 6x\ln(z)\frac{1}{2x}{\mathrm{d}}z=\int_1^9\ln(z){\mathrm{d}}z\nonumber\\
&=3\left[z\ln(z)-z\right]_1^9=3(9\ln(9)-9-\ln(1)+1)=27\ln(9)-24.
\end{aligned}$$
---
---
Exercice +.#
Calculer les primitives suivantes par changement de variable
1. $\int \frac{1}{5x-7}{\mathrm{d}}x$
2. $\int \sin(3-7x){\mathrm{d}}x$
3. $\int x e^{x^2}{\mathrm{d}}x$
---
## Le produit de convolution
Les convolutions sont très utilisées pour le traitement du signal, le traitement d'images et
les réseaux de neurones convolutifs entre autres.
### La convolution continue
La convolution de deux fonctions intégrables, $f(t)$, et $g(t)$, notée $f\ast g$ se définit comme
\begin{equation}
(f\ast g)(x)=\int_{-\infty}^\infty f(x-t)g(t)\dd t.
\end{equation}
On constate que le membre de gauche de l'équation ci-dessus n'est rien d'autre qu'une fonction de $x$.
Pour chaque valeur de $x=x_0$, on calcule l'intégrale,
\begin{equation}
\int_{-\infty}^\infty f(x_0-t)g(t)\dd t.
\end{equation}
---
Exercice (Commutativité) +.#
Démontrer que le produit de convolution est commutatif, soit
\begin{equation}
(f\ast g)(x)=(g\ast f)(x).
\end{equation}
Indication: utiliser la substitution $\tau=x-t$.
---
Afin de pouvoir interpêter un peu
ce que cela veut dire, il est intéressant de faire un calcul
"simple" pour se faire une idée.
---
Exercice +.#
Calculer la convolution du signal $f(t)$
\begin{equation}
f(t)=\left\{\begin{array}{ll}
1,&\mbox{ si }t\in[0,1]\\
0,&\mbox{ sinon.}
\end{array}\right.
\end{equation}
Indication: faites un dessin de ce que représente la convolution de ce $f$ avec lui-même.
---
#### Interprétation avec les mains
Afin d'interpréter ce que représente le produit de convolution, introduisons la fonction delta de Dirac, $\delta_a(x)$. Cette fonction est un peu particulière, elle vaut zéro partout sauf en $0$ (où elle est "infinie"), et son
intégrale vaut $1$
\begin{equation}
\int_{-\infty}^\infty\delta(x)\dd x=1.
\end{equation}
Même si cela peut sembler étrange, on peut tenter de construire une telle fonction en prenant une suite de rectangles, centrés en $0$,
dont la surface vaut 1. Puis on rend ces rectangles de plus en plus fins, en imposant que la surface vaut toujours 1 et le tour est joué.
Cette fonction est intéressante, car elle a la propriété suivante lorsqu'on l'utilise pour effectuer des convolutions.
\begin{equation}
\int_{-\infty}^\infty f(y)\delta(y-x)\dd y=f(x).
\end{equation}
En d'autre termes cette intégrale est égale à la valeur de $f$ au point où l'argument du $\delta$ est nul.
A présent, si nous considérons la convolution de $f(t)$ avec
la fonction $\delta(t-a)=\delta_a$, on obtient
\begin{equation}
(f\ast\delta_a)(x)=\int_{-\infty}^\infty f(x-t)\delta(t-a)\dd t=f(x-a).
\end{equation}
En fait la convolution d'une fonction $f$ avec le delta de Dirac centré en $a$ ne fait que translater la fonction $f$ d'une distance $a$.
En effectuant à présent la convolution avec une combinaison linéaire de $\delta$ de Dirac
\begin{equation}
(f\ast(\alpha\cdot \delta_a+\beta\cdot \delta_b))(x)=\int_{-\infty}^\infty f(x-y)(\alpha\cdot\delta(y-a)+\beta\cdot\delta(y-b))\dd y=\alpha\cdot f(x-a)+\beta\cdot f(x-b).
\end{equation}
La convolution est donc la moyenne pondérée de $f$ translatée en $a$ et en $b$ par $\alpha$ et $\beta$ respectivement.
On voit que de façon générale, qu'on peut interpréter la convolution de deux fonctions $f(t)$ et $g(t)$ comme la moyenne de $f(t)$ pondérée par la fonction $g(t)$.
#### Le lien avec les filtres
Il se trouve que dans le cas où le filtre est linéaire (filtrer la combinaison de deux signaux
est la même chose que de faire la combinaison linéaires des signaux filtrés)
et indépendant du temps (les translations temporelles n'ont aucun effet sur lui)
alors on peut lier la convolution et le filtrage.
Si on définit la réponse impulsionnelle d'un filtre, $h(t)$, le filtrage d'un signal $s(t)$,
noté $f(s)$, n'est autre que la convolution de $h(t)$ avec $s(t)$
\begin{equation}
f(s)=(s\ast h)(x)=\int_{-\infty}^\infty f(x-t)g(t)\dd t.
\end{equation}
<!-- ### La convolution discrète
En se rappelant que l'intégrale n'est rien d'autre qu'une somme un peu plus compliquée -->
Intégration numérique
---------------------
Dans certains cas, il est impossible d’évaluer analytiquement une
intégrale ou alors elle est très compliquée à calculer. Dans ce cas, on
va approximer l’intégrale et donc commettre une erreur.
Pour ce faire on subdivise l’espace d’intégration $[a,b]$ en $N$ pas
équidistants (pour simplifier) $\delta x=(b-a)/N$, et on approxime
l’intégrale par une somme finie
$$\int_a^bf(x){\mathrm{d}}x=\sum_{i=0}^{N-1} \delta x f(a+i\delta x) g_i+E(a,b,\delta x)\cong\sum_{i=0}^{N-1} \delta x f(a+i\delta x) g_i,$$
où $g_i$ est un coefficient qui va dépendre de la méthode d’intégration
que nous allons utiliser, $E$ est l’erreur commise par l’intégration
numérique et va dépendre des bornes d’intégration, de $\delta x$ (du
nombre de pas d’intégration), de la forme de $f(x)$ (combien est
“gentille”) et finalement de la méthode d’intégration.
### Erreur d’une méthode d’intégration
D’une façon générale plus $\delta x$ est petit ($N$ est grand) plus
l’erreur sera petite et donc l’intégration sera précise (et plus le
calcul sera long). Néanmoins, comme la précision des machines sur
lesquelles nous évaluons les intégrales est finie, si $\delta x$ devient
proche de la précision de la machine des erreurs d’arrondi vont dégrader
dramatiquement la précision de l’intégration.
---
Remarque +.#
De façon générale il est difficile de connaître à l’avance la valeur
exacte de $E$. En revanche on est capable de déterminer **l’ordre**
de l’erreur.
---
---
Définition (Ordre d'une méthode) +.#
On dit qu’une méthode d’intégration est d’ordre $k$, si l’erreur commise
par la méthode varie proportionnellement à $\delta x^k$. On note qu’une
erreur est d’ordre $k$ par le symbole $\mathcal{O}(\delta x^k)$.
Exemple: si une méthode est d’ordre deux, alors en diminuant $\delta x$
d’un facteur $2$, l’erreur sera elle divisée par $2^2=4$. Si une méthode
est d’ordre $3$, alors en diminuant $\delta x$ d’un facteur $2$, nous
aurons que l’erreur est divisée par un facteur $2^3=8$. Etc.
---
Comme le calcul d’une intégrale de façon numérique ne donne en général
pas un résultat exact, mais un résultat qui va dépendre d’un certain
nombre de paramètres utilisés pour l’intégration, il faut définir un
critère qui va nous dire si notre intégrale est calculée avec une
précision suffisante.
Notons $I(N,a,b,f,g)$ l’approximation du calcul de l’intégrale
entre $a$ et $b$ de la fonction $f$ avec une résolution $N$ pour la
méthode d’intégration $g$
$$I(N,a,b,f,g)=\sum_{i=0}^{N-1} \delta x f(a+i\delta x) g_i,$$ où $g_i$
est encore à préciser. Afin de déterminer si le nombre de points que
nous avons choisi est suffisant, après avoir évalué $I(N,a,b,f,g)$, nous
évaluons $I(2\cdot N,a,b,f,g)$. En d’autres termes nous évaluons
l’intégrales de la même fonction avec la même méthode mais avec un
nombre de points deux fois plus élevé. Puis, nous pouvons définir
$\varepsilon(N)$ comme étant l’erreur relative de notre intégration avec
une résolution $N$ et $2\cdot N$
$$\varepsilon(N)\equiv\left|\frac{I(2N)-I(N)}{I(2N)}\right|.$$ Si à
présent nous choisissons un $\varepsilon_0>0$ (mais plus grand que la
précision machine), nous pouvons dire que le calcul numérique de notre
intégrale a **convergé** (on parle de **convergence** du calcul
également) pour une résolution $N$ quand $\varepsilon(N)<\varepsilon_0$.
### Méthode des rectangles
Pour la méthode des rectangles, nous allons calculer l’intégrale en
approximant l’aire sous la fonction par une somme de rectangles, comme
nous l’avons fait pour la définition de l’intégration au sens de
Riemann. La différence principale est que nous ne regarderons pas les
valeurs minimales ou maximales de $f$ sur les subdivisions de l’espace,
mais uniquement les valeurs sur les bornes. Cette approximation donne
donc la formule suivante $$\begin{aligned}
\int_a^bf(x){\mathrm{d}}x&\cong\sum_{i=0}^{N-1} \delta x f(a+i\cdot\delta x)+\mathcal{O}(\delta x),\\
&\cong\sum_{i=1}^{N} \delta x f(a+i\cdot\delta x)+\mathcal{O}(\delta x)\end{aligned}$${#eq:rect_gauche}
Cette méthode est d’ordre $1$. Une exception s’applique cependant
concernant l’ordre de l’intégration. Si la fonction à intégrer est une
constante $f(x)=c$, alors l’intégration est exacte.
Dans les deux cas ci-dessus on a évalué la fonction sur une des bornes.
On peut améliorer la précision en utilisant le “point du milieu” pour
évaluer l’aire du rectangle. L’approximation devient alors
$$\begin{aligned}
\int_a^bf(x){\mathrm{d}}x&\cong\sum_{i=0}^{N-1} \delta x f(a+(i+1/2)\cdot\delta x)+\mathcal{O}(\delta x^2).\end{aligned}$$
Cette astuce permet d’améliorer la précision de la méthode à très faible
coût. En effet, la précision de la méthode des rectangles est améliorée
et devient d’ordre 2. Elle est exacte pour les fonctions linéaires $f(x)=c\cdot x + d$.
### Méthode des trapèzes
Pour la méthode des trapèzes, nous allons calculer l’intégrale en
approximant l’aire sous la fonction par une somme de trapèzes. Pour
rappel l’aire d’un trapèze, dont les côtés parallèles sont de longueurs
$c$ et $d$ et la hauteur $h$, est donnée pas $$A=(c+d)h/2.$$ Cette
approximation donne donc la formule suivante
$$\int_a^bf(x){\mathrm{d}}x\cong\sum_{i=0}^{N-1} \delta x \frac{f(a+i\cdot\delta x)+f(a+(i+1)\cdot\delta x)}{2}+\mathcal{O}(\delta x^2).$$
Cette méthode est d’ordre $2$. Cette méthode d’intégration est aussi exacte
pour les fonctions linéaires $f(x)=c\cdot x + d$.
### Méthode de Simpson
Pour cette méthode, on approxime la fonction à intégrer dans un
intervalle par une parabole.
Commençons par évaluer l’intégrale à l’aide d’une subdivision dans
l’ensemble $[a,b]$.
L’idée est la suivante. On pose $f(x)=c\cdot x^2+d\cdot x+e$ et il
faut déterminer $c$, $d$, et $e$. Il faut donc choisir 3
points dans l’intervalle $[a,b]$ pour déterminer ces constantes. On
choisit comme précédemment $f(a)$, $f(b)$, et le troisième point est
pris comme étant le point du milieu $(f(a+b)/2)$. On se retrouve ainsi
avec trois équations à trois inconnues $$\begin{aligned}
f(a)&=c\cdot a^2+d\cdot a+e,\\
f(b)&=c\cdot b^2+d\cdot b+e,\\
f((a+b)/2)&=\frac{c}{4}\cdot (a+b)^2+\frac{d}{2}\cdot (a+b)+e.\end{aligned}$$
En résolvant ce système (nous n’écrivons pas la solution ici) nous
pouvons à présent évaluer l’intégrale $$\begin{aligned}
I&=\int_a^b f(x){\mathrm{d}}x\cong\int_a^b (cx^2+dx+e){\mathrm{d}}x,\nonumber\\
&=\frac{b-a}{6}(f(a)+f(b)+4f((a+b)/2))+\mathcal{O}(\delta x^4).\end{aligned}$$
On peut généraliser et affiner cette formule en rajoutant des
intervalles comme précédemment et en répétant cette opération pour
chaque intervalle.
Il vient donc que $$\begin{aligned}
I&=\frac{\delta x}{6}\sum_{i=0}^{N-1}\left[f(a+i\cdot \delta x)+f(a+(i+1)\cdot\delta x)\right.\nonumber\\
&\left.+4f(a+(i+1/2)\cdot\delta x)\right]+\mathcal{O}(\delta x^4).\end{aligned}$$
Cette méthode permet d’évaluer exactement les intégrales des polynômes d’ordre 3,
$f(x)=ax^3+bx^2+cx+d$.
hakyll-bootstrap/sample.png

46.9 KiB

# This file was automatically generated by 'stack init'
#
# Some commonly used options have been documented as comments in this file.
# For advanced use and comprehensive documentation of the format, please see:
# https://docs.haskellstack.org/en/stable/yaml_configuration/
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example:
#
# resolver: lts-3.5
# resolver: nightly-2015-09-21
# resolver: ghc-7.10.2
#
# The location of a snapshot can be provided as a file or url. Stack assumes
# a snapshot provided as a file might change, whereas a url resource does not.
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver: nightly-2020-04-18
# User packages to be built.
# Various formats can be used as shown in the example below.
#
# packages:
# - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
# subdirs:
# - auto-update
# - wai
packages:
- .
# Dependency packages to be pulled from upstream that are not in the resolver.
# These entries can reference officially published versions as well as
# forks / in-progress versions pinned to a git hash. For example:
#
# extra-deps:
# - acme-missiles-0.3
# - git: https://github.com/commercialhaskell/stack.git
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
#
extra-deps:
- pandoc-crossref-0.3.6.2
- data-accessor-template-0.2.1.16
- roman-numerals-0.5.1.5
# Override default flag values for local packages and extra-deps
# flags: {}
# Extra package databases containing global packages
# extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=2.2"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor
allow-newer: true
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<title>$title$</title>
<link href="/css/bootstrap.css" rel="stylesheet">
<link href="/css/syntax.css" rel="stylesheet">
<link href="/css/carousel.css" rel="stylesheet">
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<style>
body {
font-family: 'Open Sans', sans-serif;
}
body { margin-top: 80px; }
footer { margin-top: 80px; }
</style>
</head>
<body>
$partial("templates/nav.html")$
<div class="container">
<h2>$title$</h2>
<ul>
$for(posts)$
<li>
<a href="$url$">$title$</a> - $date$
</li>
$endfor$
</ul>
$partial("templates/footer.html")$
</div>
</div><!-- /.container -->
<script src="/js/jquery.js"></script>
<script src="/js/bootstrap.js"></script>
<script src="/js/holder.js"></script>
</body>
</html>
<footer>
<p class="pull-right"><a href="#">Back to top</a></p>
<p>&copy; 2013 My Company &middot; <a href="/pages/privacy.html">Privacy</a> &middot; <a href="/pages/tos.html">Terms</a></p>
</footer>
<div class="navbar-wrapper">
<div class="container">
<div class="navbar navbar-inverse navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/index.html">My Company</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/index.html">Home</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Products <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Warp Drive</a></li>
<li><a href="#">Fusion Reactor</a></li>
<li><a href="#">Sufficiently Smart Compiler</a></li>
<li class="divider"></li>
<li class="dropdown-header">Services</li>
<li><a href="#">Enlightenment</a></li>
</ul>
<li><a href="/archive.html">Blog</a></li>
<li><a href="/pages/team.html">Team</a></li>
<li><a href="/pages/about.html">About Us</a></li>
<li><a href="/pages/contact.html">Contact </a></li>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<title>$title$</title>
<link href="/css/bootstrap.css" rel="stylesheet">
<link href="/css/syntax.css" rel="stylesheet">
<link href="/css/carousel.css" rel="stylesheet">
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<style>
body {
font-family: 'Open Sans', sans-serif;
}
body { margin-top: 80px; }
footer { margin-top: 80px; }
</style>
</head>
<body>
$partial("templates/nav.html")$
<div class="container">
$body$
$partial("templates/footer.html")$
</div>
<script src="/js/jquery.js"></script>
<script src="/js/bootstrap.js"></script>
<script src="/js/holder.js"></script>
</body>
</html>
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<title>$title$</title>
<link href="/css/bootstrap.css" rel="stylesheet">
<link href="/css/syntax.css" rel="stylesheet">
<link href="/css/carousel.css" rel="stylesheet">
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
$mathjax$
<style>
body {
font-family: 'Open Sans', sans-serif;
}
body { margin-top: 80px; }
</style>
</head>
<body>
$partial("templates/nav.html")$
<div class="container">
<h2>$title$</h2>
$body$
$partial("templates/footer.html")$
</div>
</div><!-- /.container -->
<script src="/js/jquery.js"></script>
<script src="/js/bootstrap.js"></script>
<script src="/js/holder.js"></script>
</body>
</html>
---
author:
- Orestis Malaspinas
title: Quelques cours de la filière ITI de hepia
- Orestis Malaspinas, bureau A401, ISC, HEPIA
title: Quelques cours de la filière ISC de hepia
autoSectionLabels: true
autoEqnLabels: true
eqnPrefix:
......@@ -15,127 +15,209 @@ lang: fr
documentclass: book
papersize: A4
cref: false
pandoc-numbering:
- category: exercice
listing: Liste des exercices
urlcolor: blue
corrige: false
---
<div align="left">
<div align="center">
<video width="640" poster="figs/intro.svg" height="360" controls="true" autoplay="false">
<source src="http://129.194.185.180/videos/malaspinas.mp4" type="video/mp4">
<source src="videos/malaspinas.mp4" type="video/mp4">
</video>
<iframe poster="figs/intro.svg" title="omhepia's player frame" i18n-title="channel#ShareDialog:playerEmbedFrame|Embed player Frame copied from share dialog" allowfullscreen="true" src="https://mixer.com/embed/player/omhepia?disableLowLatency=1" width="640" height="360">
</iframe>
</div>
La chaîne *mixer.com* de mes cours se trouve sur <https://www.mixer.com/omhepia>
:::::::::::::: {.columns}
::: {.column width="40%"}
# Première année
# Prog. séquentielle en C
<!-- Chaîne *BBB* du cours <https://bbb.hesge.ch/rooms/wkm-a1q-7d1-rjb/join> -->
## Bibliographie
* Débutants: [E. Barthomier, D. Schang, Le C en 20 heures](https://c.developpez.com/cours/20-heures/)
* Moyens: [J. Gustedt, Modern C](https://hal.inria.fr/hal-02383654/document)
---
## [Théorie](https://malaspinas.academy/prog_seq_c_cours/index.html)
## [Tutoriel git](https://malaspinas.academy/git_tuto/git_tutorial.pdf)
<!-- ## Théorie
### Introduction [PDF](prog_seq_c_cours/intro.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/cours) -->
---
## Exercices
# Cours de programmationquentielle en C
<!-- ### 02.06.2023: Plus court chemin, [HTML](https://malaspinas.academy/prog_seq_c_tp/shortest_path/graphes.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/shortest_path/graphes.pdf), [MAIN](https://malaspinas.academy/prog_seq_c_tp/shortest_path/squelette/c/main_dijkstra.c), [XML_PARSER_H](https://malaspinas.academy/prog_seq_c_tp/shortest_path/xml_parser.h), [XML_PARSER_C](https://malaspinas.academy/prog_seq_c_tp/shortest_path/xml_parser.c), [TEST_INPUT](https://malaspinas.academy/prog_seq_c_tp/shortest_path/squelette/commandes_de_test/cmd_a_tester_dijkstra.txt), [TEST_OUTPUT](https://malaspinas.academy/prog_seq_c_tp/shortest_path/squelette/results_out/output_dijkstra), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/shortest_path/enonce)
## [Récapitulatif](prog_seq_c_cours/index.html)
### 23.05.2023: Barbes euh... B-arbres, [HTML](https://malaspinas.academy/prog_seq_c_tp/b_arbres/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/b_arbres/b_arbres.pdf), [HEADER](https://malaspinas.academy/prog_seq_c_tp/b_arbres/b_arbre.h), [SQUELETTE](https://malaspinas.academy/prog_seq_c_tp/b_arbres/b_arbre_skel.c), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/b_arbres/enonce)
## Introduction [PDF](prog_seq_c_cours/intro.pdf)
### 16.05.2023: Classification, [HTML](https://malaspinas.academy/prog_seq_c_tp/classification/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/classification/classification.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/classification/enonce)
## Base 1 [PDF](prog_seq_c_cours/base_1.pdf)
### 02.05.2023: Arbres quaternaires, [HTML](https://malaspinas.academy/prog_seq_c_tp/quadtree/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/quadtree/quadtree.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/quadtree/enonce), [BUZZ](https://malaspinas.academy/prog_seq_c_tp/quadtree/buzz.pgm)
## Base 2 [PDF](prog_seq_c_cours/base_2.pdf)
### 18.04.2023: Julia, [HTML](https://malaspinas.academy/prog_seq_c_tp/julia/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/julia/julia.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/julia/enonce)
## Base 3 [PDF](prog_seq_c_cours/base_3.pdf)
### 28.03.2023: Arbres AVL, [HTML](https://malaspinas.academy/prog_seq_c_tp/arbres_avl/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/arbres_avl/arbres_avl.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/arbres_avl/enonce)
## Intro à `make` [PDF](prog_seq_c_cours/make.pdf)
### 21.03.2023: Tris, [HTML](https://malaspinas.academy/prog_seq_c_tp/tris/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/tris/tris.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/tris/enonce)
## Tests unitaires et assertions [PDF](prog_seq_c_cours/tests_assertions.pdf)
### 14.03.2023: Code morse, [HTML](https://malaspinas.academy/prog_seq_c_tp/morse/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/morse/code_morse.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/code_morse/enonce), [texte-morse.txt](https://malaspinas.academy/prog_seq_c_tp/morse/texte-morse.txt), [code-morse.txt](https://malaspinas.academy/prog_seq_c_tp/morse/code-morse.txt)
## Chaînes de caractères [PDF](prog_seq_c_cours/strings.pdf)
### 28.02.2023: Table de hachage, [HTML](https://malaspinas.academy/prog_seq_c_tp/hashmap/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/hashmap/hashmap.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/hashmap/enonce), [students.txt](https://malaspinas.academy/prog_seq_c_tp/hashmap/students.txt)
## La ligne de commande [PDF](prog_seq_c_cours/ligne_commande.pdf)
### 21.02.2023: Doubles pointeurs, [HTML](https://malaspinas.academy/prog_seq_c_tp/doubles_pointeurs/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/doubles_pointeurs/doubles_pointeurs.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/doubles_pointeurs/enonce)
## Les pointeurs avancés [PDF](prog_seq_c_cours/pointeurs_avances.pdf)
### 10.01.2023: Jeu du serpent, [HTML](https://malaspinas.academy/prog_seq_c_tp/serpent/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/serpent/serpent.pdf), [GFX](https://malaspinas.academy/prog_seq_c_tp/serpent/gfx.tar), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/serpent/enonce)
## Théorie sur Delaunay [PDF](prog_seq_c_cours/delaunay.pdf)
### 28.11.2022: Puissance 4, [HTML](https://malaspinas.academy/prog_seq_c_tp/puissance4/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/puissance4/puissance4.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/puissance4/enonce), [Skeleton](https://malaspinas.academy/prog_seq_c_tp/puissance4/skeleton_for_students.tar.gz)
# Exercices de programmationquentielle en C
### 20.09.2022: Calendrier, [HTML](https://malaspinas.academy/prog_seq_c_tp/calendar/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/calendar/calendar.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/calendar/enonce) -->
## Le nombre secret, [HTML](prog_seq_c_tp/nombre_secret/index.html), [PDF](prog_seq_c_tp/nombre_secret/nombre_secret.pdf)
<!-- ### 14.12.2023: Traitement d'image, [HTML](https://malaspinas.academy/prog_seq_c_tp/traitement_dimages/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/traitement_dimages/traitement_dimages.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/traitement_dimages/enonce) -->
<!---->
## Tableaux unidimensionnels, [HTML](prog_seq_c_tp/tableaux_unidimensionnels/index.html), [PDF](prog_seq_c_tp/tableaux_unidimensionnels/tableaux_unidimensionnels.pdf), [GFX](prog_seq_c_tp/tableaux_unidimensionnels/gfx_example.tar.gz)
### 07.01.2025: La liste doublement chaînée, [HTML](https://malaspinas.academy/prog_seq_c_tp/doubly_linked_list/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/doubly_linked_list/doubly_linked_list.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/doubly_linked_list/enonce)
## Les matrices, [HTML](prog_seq_c_tp/matrices_intro/index.html), [PDF](prog_seq_c_tp/matrices_intro/matrices_intro.pdf)
### 17.12.2024: Le serpent, [HTML](https://malaspinas.academy/prog_seq_c_tp/serpent/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/serpent/serpent.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/serpent/enonce), [GFX](https://malaspinas.academy/prog_seq_c_tp/serpent/gfx.tar)
## Les chaînes de caractères, [HTML](prog_seq_c_tp/chaines_caracteres/index.html), [PDF](prog_seq_c_tp/chaines_caracteres/chaines_caracteres.pdf)
### 10.12.2024: La calculatrice, [HTML](https://malaspinas.academy/prog_seq_c_tp/calculator/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/calculator/calculator.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/calculator/enonce)
## Traitement d'images, [HTML](prog_seq_c_tp/transformations/index.html), [PDF](prog_seq_c_tp/transformations/transformations.pdf)
### 03.12.2024: Matrices, [HTML](https://malaspinas.academy/prog_seq_c_tp/matrices/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/matrices/matrices.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/matrices/enonce)
## Vector, [HTML](prog_seq_c_tp/vector/index.html), [PDF](prog_seq_c_tp/vector/vector.pdf)
### 26.11.2024: Chaînes de caractères, [HTML](https://malaspinas.academy/prog_seq_c_tp/chaines_caracteres/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/chaines_caracteres/chaines_caracteres.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/chaines_caracteres/enonce)
## Fichier LAS, [HTML](prog_seq_c_tp/lidar/index.html), [PDF](prog_seq_c_tp/lidar/read.pdf)
### 19.11.2024: Makefiles et compilation séparée, [HTML](https://malaspinas.academy/prog_seq_c_tp/makefiles/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/makefiles/makefiles.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/makefiles/enonce)
<!---->
## Fichier STL, [HTML](prog_seq_c_tp/stl/index.html), [PDF](prog_seq_c_tp/stl/stl.pdf)
### 05.11.2024: Démineur, [HTML](https://malaspinas.academy/prog_seq_c_tp/demineur/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/demineur/demineur.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/demineur/enonce)
## List-Vector, [HTML](prog_seq_c_tp/lst_vector/index.html), [PDF](prog_seq_c_tp/lst_vector/linked_vector.pdf)
### 28.10.2024: Tris par fusion, base, et sélection, [HTML](https://malaspinas.academy/prog_seq_c_tp/tri_fusion_base_selection/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/tri_fusion_base_selection/tri_fusion_base_selection.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/tri_fusion_base_selection/enonce)
## Delaunay, [HTML](prog_seq_c_tp/delaunay/index.html), [PDF](prog_seq_c_tp/delaunay/delaunay.pdf)
### 15.10.2024: Fractions, [HTML](https://malaspinas.academy/prog_seq_c_tp/fractions/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/fractions/fractions.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/fractions/enonce)
## TP noté 2: triangulation, [HTML](prog_seq_c_tp/lidar_triangulation/index.html), [PDF](prog_seq_c_tp/lidar_triangulation/triangulation.pdf)
### 08.10.2024: Tableaux unidimensionnels, [HTML](https://malaspinas.academy/prog_seq_c_tp/tableaux_unidimensionnels/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/tableaux_unidimensionnels/tableaux_unidimensionnels.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/tableaux_unidimensionnels/enonce)
## Code Morse, [HTML](prog_seq_c_tp/morse/index.html), [PDF](prog_seq_c_tp/morse/morse.pdf)
### 01.10.2024: Bissection, [HTML](https://malaspinas.academy/prog_seq_c_tp/bissection/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/bissection/bissection.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/bissection/enonce)
## Arbres quaternaires, [HTML](prog_seq_c_tp/quadtree/index.html), [PDF](prog_seq_c_tp/quadtree/quadtree.pdf)
### 23.09.2024: Exercices introductifs, [HTML](https://malaspinas.academy/prog_seq_c_tp/exercices_intro/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/exercices_intro/exercices_intro.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/exercices_intro/enonce)
### 16.09.2024: Nombre secret, [HTML](https://malaspinas.academy/prog_seq_c_tp/nombre_secret/index.html), [PDF](https://malaspinas.academy/prog_seq_c_tp/nombre_secret/nombre_secret.pdf), [GIT](https://gitedu.hesge.ch/programmation_sequentielle/travaux_pratiques/c_lang/nombre_secret/enonce)
:::
::: {.column width="60%"}
# Algo. et structures de données
# Deuxième année
<!-- Chaîne *BBB* du cours <https://bbb.hesge.ch/rooms/jli-y03-zrx-52a> -->
# Mathématiques en technologie de l'information
## Bibliographie
## [Polycopié](mti/index.html), [git repo](https://githepia.hesge.ch/orestis.malaspin/math_tech_info), [pdf](mti/cours.pdf)
[T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein, Introduction to Algorithms, 3rd edition](https://mitpress.mit.edu/9780262533058/)
## [Travail pratique: intégrales](mti/tpIntegrales/index.html), [git repo](https://githepia.hesge.ch/orestis.malaspin/math_tech_info/tree/master/tpIntegrales), [pdf](mti/tpIntegrales/tp_integrales_conv.pdf)
---
## [Théorie](https://malaspinas.academy/algo_cours/index.html)
## [Travail pratique: EDO](mti/tpEdo/index.html), [git repo](https://githepia.hesge.ch/orestis.malaspin/math_tech_info/tree/master/tpEdo), [pdf](mti/tpEdo/tpEquadiffs.pdf)
---
# Programmation concurrente
# Prog. Système avancée
## [Polycopié](concurrence/index.html), [git repo](https://githepia.hesge.ch/orestis.malaspin/cours_prog_conc)
## [Repo git du cours](https://gitedu.hesge.ch/programmation_systeme_avancee/cours)
## [Lien BBB](https://bbb.hesge.ch/rooms/x7q-ciw-ue6-90s/join)
# Exercices de programmation concurrente
---
## TP1: L'ensemble de Julia [PDF](tp_concurrence/julia.pdf), [HTML](tp_concurrence/julia.html)
## Travaux pratiques
## 17.02.2025: Les emsembles de Julia, [HTML](https://malaspinas.academy/prog_sys_av_tp/julia/), [PDF](https://malaspinas.academy/prog_sys_av_tp/julia/julia.pdf)
## 24.02.2025: Le petit déjeuner, [HTML](https://malaspinas.academy/prog_sys_av_tp/petit_dej/), [PDF](https://malaspinas.academy/prog_sys_av_tp/petit_dej/petit_dej.pdf)
## 24.02.2025: Logging, [HTML](https://malaspinas.academy/prog_sys_av_tp/logging/), [PDF](https://malaspinas.academy/prog_sys_av_tp/logging/logging.pdf)
## 03.03.2025: Appels système, [HTML](https://malaspinas.academy/prog_sys_av_tp/syscalls/), [PDF](https://malaspinas.academy/prog_sys_av_tp/syscalls/syscalls.pdf)
## 10.03.2025: Le runtime (un peu plus) générique, [HTML](https://malaspinas.academy/prog_sys_av_tp/fibers/), [PDF](https://malaspinas.academy/prog_sys_av_tp/fibers/fibers.pdf)
## 17.03.2025: Les coroutines, [HTML](https://malaspinas.academy/prog_sys_av_tp/coroutines/), [PDF](https://malaspinas.academy/prog_sys_av_tp/coroutines/coroutines.pdf)
## 24.03.2025: Réacteur-Exécuteur, [HTML](https://malaspinas.academy/prog_sys_av_tp/executor_reactor/), [PDF](https://malaspinas.academy/prog_sys_av_tp/executor_reactor/executor_reactor.pdf)
---
## TP2: Les threads et verrous [PDF](tp_concurrence/threads.pdf), [HTML](tp_concurrence/threads.html)
# Université d'automne
## TP3: Structures de données concurrentes [PDF](tp_concurrence/synchro.pdf), [HTML](tp_concurrence/synchro.html)
## [Polycopié](https://malaspinas.academy/rust-101/book/)
## [Slides](https://malaspinas.academy/rust-101/slides)
## [Exercices](https://malaspinas.academy/rust-101/exercises)
## [Git](https://gitedu.hesge.ch/orestis.malaspin/rust-101)
:::
::::::::::::::
---
# Les projets de bachelor passés
## [Astéroides avec algorithme génétique, T. Ibanez](https://dai.ly/x6tosqh)
## [Pacman, Pong et Phoenix avec technique de renforcement, N. Nufer](https://dai.ly/x6tosqg)
## 2024
### [F. Burgener, Isochrones des transports publics suisses à partir des données HRDF](https://gradechelor.hesge.ch/2024/documents/BURGENER-674)
### [Y. Niermaréchal, Extraction automatique d'information de plans architecturaux](https://gradechelor.hesge.ch/2024/documents/NIERMAR%C3%89CHAL-693)
## 2023
### [J. Debray, Analyse automatique de plans architecturaux](https://gradechelor.hesge.ch/2023/documents/Debray-626)
### [D. Peiry, Création d'une plateforme de dépôt et d'attribution de projets de semestre/Bachelor](https://gradechelor.hesge.ch/2023/documents/Peiry-648)
## 2022
### [R. Bach, fmpi: An easy-to-use libray using Futhark and MPI to create simple parallel programs](https://sitehepia.hesge.ch/diplome/ITI/2022/documents/Bach-575)
### [A. Blancy, HEPIA Virtuel - une plateforme virtuelle pour hepia](https://sitehepia.hesge.ch/diplome/ITI/2022/documents/Blancy-578)
### [T. Dagier-Joncour, Simulation de transports publics : l'import de Genève dans A/B street](https://sitehepia.hesge.ch/diplome/ITI/2022/documents/Dagier-Joncour-583)
### [D. Fangous, Application d'entraînement pour sportifs et entraîneurs intéractive et modulaire](https://sitehepia.hesge.ch/diplome/ITI/2022/documents/Fangous-586)
### [I. N'Hairi, Modélisation de la population du canton de Genève](https://sitehepia.hesge.ch/diplome/ITI/2022/documents/N'Hairi-605)
## 2021
### [B. Coudray, MPI-Futhark : distributed high-performance computing for people](https://sitehepia.hesge.ch/diplome/ITI/2021/documents/Coudray-553)
### [J. Jose Goncalves, Générateur statique d'une plateforme d'apprentissage dynamique](https://sitehepia.hesge.ch/diplome/ITI/2021/documents/Jose%20Goncalves-556)
### [T. Kaltrachian, GAN's methods for super-resolution on fluid flow simulation](https://sitehepia.hesge.ch/diplome/ITI/2021/documents/Kaltrachian-570)
## 2020
### [J. Chétélat, Application de triangulation de points lidar sur le canton de Genève](https://sitehepia.hesge.ch/diplome/ITI/2020/documents/Ch%C3%A9telat-495)
### [L. De Biasi, Inari, Apprentissage par renforcement appliqué au jeu Dota 2](https://sitehepia.hesge.ch/diplome/ITI/2020/documents/De%20biasi-497)
### [M. El Kharroubi, Cryptographie sur GPU avec le langage Futhark](https://sitehepia.hesge.ch/diplome/ITI/2020/documents/El%20kharroubi-501)
### [T. Pirkl, Outil de scraping de sites internet](https://sitehepia.hesge.ch/diplome/ITI/2020/documents/Pirkl-532), [vidéo](https://www.youtube.com/watch?v=RKho4VPnF58)
### [M. Vachon, Développement d'IHM pour la librairie open source Palabos](https://sitehepia.hesge.ch/diplome/ITI/2020/documents/Vachon-537)
## 2019
### [N. Denby, Création d'IHM pour la librairie Palabos](https://sitehepia.hesge.ch/diplome/ITI/2019/documents/Denby-449)
### [G. Laurie, Méthode de Boltzmann sur réseau sur GPU en Futhark](https://sitehepia.hesge.ch/diplome/ITI/2019/documents/Laurie%20riveros-463)
### [S. Ollquist, Étude et visualisation d'algorithmes de classement de pages Web](https://sitehepia.hesge.ch/diplome/ITI/2019/documents/Ollquist-465)
### [A. Vanini, Logiciels et Systèmes complexes](https://sitehepia.hesge.ch/diplome/ITI/2019/documents/Vanini-482)
# Cours d'années précédentes
## 2018
## [Programmation séquentielle en Rust](prog_seq/index.html), [git repo](https://githepia.hesge.ch/orestis.malaspin/rust)
### [T. Ibanez, Astéroides avec algorithme génétique](https://sitehepia.hesge.ch/diplome/ITI/2018/documents/Ibanez-11), [video](https://dai.ly/x6tosqh)
# Exercices programmation séquentielle en Rust
### [N. Nufer, Construction d'un agent joueur par apprentissage par renforcement](https://sitehepia.hesge.ch/diplome/ITI/2018/documents/Nufer-18), [video](https://dai.ly/x6tosqg)
## TP1 Rust: Nombre secret, [HTML](prog_seq/exercices/01_nombre_secret/), [PDF](prog_seq/exercices/01_nombre_secret/index.pdf)
## TP2 Rust: Calcul de $\pi$, [HTML](prog_seq/exercices/02_calcul_pi/), [PDF](prog_seq/exercices/02_calcul_pi/index.pdf)
## TP3 Rust: Tableaux, [HTML](prog_seq/exercices/03_tableaux/), [PDF](prog_seq/exercices/03_tableaux/index.pdf)
## TP4 Rust: Couverture de la reine, [HTML](prog_seq/exercices/04_reine/), [PDF](prog_seq/exercices/04_reine/index.pdf)
## TP5 Rust: Puissance 4, [HTML](prog_seq/exercices/05_puissance4/), [PDF](prog_seq/exercices/05_puissance4/index.pdf)
## TP6 Rust: Listes, [HTML](prog_seq/exercices/06_listes/), [PDF](prog_seq/exercices/06_listes/index.pdf)
## TP7 Rust: Reed-Solomon, [HTML](prog_seq/exercices/07_reed_solomon/index.html), [PDF](prog_seq/exercices/07_reed_solomon/index.pdf)
## TP8 Rust: Transformation d'images, [HTML](prog_seq/exercices/08_transformation_images/index.html), [PDF](prog_seq/exercices/08_transformation_images/index.pdf)
## TP9 Rust: Problème du voyageur de commerce, [HTML](prog_seq/exercices/09_voyageur_commerce/index.html), [PDF](prog_seq/exercices/09_voyageur_commerce/index.pdf)
# [Cours archivés (Prog. Concurrente, Rust, Maths)](archives/index.html)