Partie 2 - Intégration numérique (10 pts)

@c jean-baptiste.apoung@math.u-psud.fr

ATTENTION:

LES EXERCICES 1 et 2 SONT À FAIRE ENTIÈREMENT SUR COPIES

In [1]:
%matplotlib inline
%config InlineBackend.figure_format = 'retina'

import numpy as np
from scipy.integrate import quad
import matplotlib.pyplot as plt
In [2]:
%%javascript
MathJax.Hub.Config({
    TeX: { equationNumbers: { autoNumber: "AMS" } }
});

Exercice 1 : Questions de cours

On appelle formule de quadrature de Tchebychev à n points $t_1, \ldots, t_n$ toute formule élémentaire de la forme : $$ \int_{-1}^1 f(t) \, dt \approx w \left( f(t_1) + f(t_2)+ \ldots + f(t_n) \right) $$

Question 1 : Détermination du poids

Montrer que pour une telle formule, on a $w = \frac{2}{n}$

Question 2: Construction d'une telle formule à 2 points

Question 2-1 :

Construire une telle formule à deux points,. On posera $\tau_1, \tau_2$ les deux points c'est-à-dire : $ \int_{-1}^1 f(t) \, dt \approx f(\tau_1) + f(\tau_2) $

Question 2-2:

Déterminer l'order $p$ de la formule construite

Question 2-3:

Montrer que cette formule sur un intervalle $[\alpha, \beta]$ s'écrit : $$ \int_{\alpha}^\beta f(x) \, dx \approx \frac{\beta - \alpha}{2} \left( f(\alpha + \frac{\beta - \alpha}{2}(1+\tau_1)) + f(\alpha + \frac{\beta - \alpha}{2}(1+\tau_2)) \right) $$

Notation : On posera $I_e[f;[\alpha, \beta]] = \frac{\beta - \alpha}{2} \left( f(\alpha + \frac{\beta - \alpha}{2}(1+\tau_1)) + f(\alpha + \frac{\beta - \alpha}{2}(1+\tau_2)) \right)$

Question 2-4: Estimation d'erreur de la formule élémentaire

Endéduire sans faire de calcul la plus petite valeur de $r$ et plus grande de $m \in\mathbf{N}$ telles que Pour toute $f \in C^r([\alpha, \beta])$, il existe $C_e > 0$ tel que $$ \left|\int_{\alpha}^\beta f(x) dx - \frac{\beta - \alpha}{2} \left( f(\alpha + \frac{\beta - \alpha}{2}(1+\tau_1)) + f(\alpha + \frac{\beta - \alpha}{2}(1+\tau_2)) \right) \right| \leq C_e \sup_{\alpha \leq x \leq \beta} |f^{(r)}(x) | (\beta - \alpha)^m $$ Un bonus sera accordé si l'on peut préciser une valeur de $C_e$.

Question 2-5: Estimation d'erreur de la formule composite

Soit $I_c[f;[a,b];h]$ la formule composite correspondante associée à une subdiviion unforme de pas $h = \frac{b-a}{N}$, $N\in\mathbf{N}^*$ c'est -à dire : $$ I_c[f;[a,b];h] = \sum_{i = 0}^{N-1} I_e[f;[x_i, x_i + h]] $$

Déterminer sans faire de calcul la petite valeur de $s$ et la plus grande de $q \in\mathbf{N}$ telles que : $$ \forall f \in C^s([a,b]), \, \left| \int_{a}^b f(x) dx - I_c[f;[a,b];h] \right| \leq C_e \sup_{a \leq x \leq b} |f^{(s)}(x) | (b - a)\, h^q $$ Un bonus sera accordé si l'on peut préciser une valeur de $C_e$.s

Exercice 2 : Une approximation calculable de l'erreur de la formule composite

On considère $I_e[f;[-1,1]]$ une formule de quadratre élémentaire d'ordre $p$. et on désigne par $I_c[f;[a,b];h]$ la formule composite correspondante associée à une subdivision uniforme de pas $h = \frac{b-a}{N}$ de $[a,b]$. C'est-à-dire. $Si x_i = a + i h, i= 0, \ldots, N$, sont les noeuds de la subdivision, $$ I_c[f;[a,b];h] = \sum_{i = 0}^{N-1} I_e[f;[x_i, x_i + h]] $$

On s'intéresse à la détermination d'une fonction $\varphi$ et d'une constante $C_\varphi$ telles que pour f de classe $C^{p}$: \begin{equation} \label{eq:elm} \int_{x}^{x+h} f(t)\, dt - I_e[f;[x, x+h]] = \varphi(x) h^{p+1} + \mathcal{O}(h^{p+2}) \end{equation} \begin{equation} \label{eq:comp} \int_{a}^b f(x) \, dx - I_c[f;[a,b];h] = C_\varphi \, h^p + \mathcal{O}(h^{p+1}) \end{equation}

Question 1 :  Expression de $C_\varphi$

Déduire des expressions (1) et (2) ci-dessus que :

$$ C_\varphi = \sum_{i=0}^{N-1} h \, \varphi(x_i) $$

Question 2 : Approximation de $C_\varphi$.

En remarquant que cette expression est une formule composite de rectangle à gauche, en déduire que si $\varphi$ est de classe $C^1$, on a :

$$ C_\varphi = \int_{a}^b \varphi(x) dx + \mathcal{O}(h) $$

On posera $$C_{c\varphi} = \int_{a}^b \varphi(x) dx.$$

Question 4: Endéduire de la formule (2) que si $C_{c\varphi} \neq 0$ alors

$h^p |C_\varphi|$ et $h^p |C_{c\varphi}|$ sont des approximations convenables de $ \left| \int_{a}^b f(x) dx - I_c[f;[a,b];h] \right|$

Question 5: Exemple d'expression de $\varphi$.

On suppose $f$ de classe $C^3$. Et on consdère la formule des trapèzes: $I_e[f;[x,x+h] = \frac{h}{2}( f(x) + f(x+h) )$

Question 5-1 Montrer qu'ici on a $$\varphi(x) = -\frac{1}{12} f^{''}(x)$$

Question 5-2 En déduire l'expression de $C_\varphi$ et $C_{c\varphi}$ et exhiber un défaut de $C_{c\varphi}$.(On pensera aux fonctions périodiques)

Exercice 3 : Validations numériques

On considère cet exercice $a =1, b= 3, f(x) = \exp(-3(x-1.2)^2)$

Question 1 :

  • Calculer et implementez $f'(x)$ et $f^{''}(x)$
  • Tracer la fonction f et mettre un titre
  • Calculer et afficher une valeur approchée de $I = \int_a^b f(x) \, dx $ en utilisant la fonction quad du module scipy.integrate. Afficher cette valeur.
In [3]:
## METTRE LA SOLUTION ICI

Question 2

Fournir une fonction une fonction estimErrCompTrapeze(f,fp, fpp, a, b, h) qui prend en arguments

  • f la fonction
  • fp la dérivée première de f
  • fpp la dérivée seconde de f
  • a, b les bornes d'intégration
  • h le pas de la formule composite Et qui calcule et retourne les valeurs de $h^2 \,C_\varphi, h^2 \,C_{r\varphi}$ de l'Exercice 2 pour la formule composite de trapèzes.
In [4]:
## METTRE LA REPONSE ICI

#def estimErrCompTrapeze(f,fp, fpp, a, b, h):
    
    
    
    
    
    
    
    
    
    

Question 3

  • Calculer puis afficher numériquement ou graphiquement (dans ce cas à l'échelle log) les valeurs de
    • $\Big| I - I_c[f;[a,b],h]\Big|$
    • $h^2 \, |C_\varphi|$
    • $h^2 \, |C_{r\varphi}|$

pour des subdivisions de pas $h = 2^{−1}, \ldots, 2^{−8}$ de $[a, b]$.

  • Commenter le résultat
In [5]:
# On fournit ici la formule les fonctions suivantes

def quad_comp(f, x, quad_elem):
    return quad_elem(f, x[:-1], x[1:])

def trapeze(f, a, b):
    return np.sum(.5 * (b - a) * (f(a) + f(b)))
In [6]:
## METTRE LA REPONSE ICI

Question 4 : Applications 1/2

Modifier la fontion composite de trapeze de sorte quelle retourne aussi l'estimation de l'erreur commise

Fournir pour cette fin une fonction quad_comp_trapeze(f, x, g, der)

  • l'avant dernier argument g est au choix $f^{'}$ ou $f^{''}$
  • et le dernier argument der est soit 1 ou 2 indiquant si g est $f^{'}$ ou $f^{''}$
In [7]:
## METTRE LA REPONSE ICI
#def quad_comp_trapeze(f, x, g, der):
  • Testez votre implementation à l'aide du script ci-dessous
In [ ]:
#### CHANGER LE TYPE DE CETTE CELLULE En  code 
h = 0.01
x = np.arange(a,b+h,h)
Ic,err = quad_comp_trapeze(f, x, fp, der=1)
print("Ic = {:e}  à  {:e} près ".format(Ic,err))

Ic,err = quad_comp_trapeze(f, x, fpp, der=2)
print("Ic = {:e}  à  {:e} près ".format(Ic,err))

Question 5 : Applications 2/2

  • Estimer le pas $h$ de la subdivision nécessaire pour approcher l'intégrale avec une précision $\varepsilon = 10^{-8}$
  • Vérifier numériquement le résultat obtenu
In [8]:
#METTRE LA REPONSE ICI
In [ ]: