@c jean-baptiste.apoung@math.u-psud.fr
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
import numpy as np
from scipy.integrate import quad
import matplotlib.pyplot as plt
%%javascript
MathJax.Hub.Config({
TeX: { equationNumbers: { autoNumber: "AMS" } }
});
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) $$
Montrer que pour une telle formule, on a $w = \frac{2}{n}$
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) $
Déterminer l'order $p$ de la formule construite
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)$
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$.
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
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}
Déduire des expressions (1) et (2) ci-dessus que :
$$ C_\varphi = \sum_{i=0}^{N-1} h \, \varphi(x_i) $$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.$$
$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|$
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) )$
On considère cet exercice $a =1, b= 3, f(x) = \exp(-3(x-1.2)^2)$
## METTRE LA SOLUTION ICI
Fournir une fonction une fonction estimErrCompTrapeze(f,fp, fpp, a, b, h) qui prend en arguments
f
la fonctionfp
la dérivée première de f
fpp
la dérivée seconde de f
a, b
les bornes d'intégrationh
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.## METTRE LA REPONSE ICI
#def estimErrCompTrapeze(f,fp, fpp, a, b, h):
pour des subdivisions de pas $h = 2^{−1}, \ldots, 2^{−8}$ de $[a, b]$.
# 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)))
## METTRE LA REPONSE ICI
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) où
## METTRE LA REPONSE ICI
#def quad_comp_trapeze(f, x, g, der):
#### 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))
#METTRE LA REPONSE ICI