Formule de Simpson

On rappelle la formule de Simpson pour le calcul approché d’une intégrale :

\[\begin{equation*} \begin{split} \int_a^bf(x)\mathrm dx \approx \Delta_x\sum_{i=0}^{N-1}\frac{f(x_i) + 4f(x_i+\frac{\Delta_x}2) + f(x_i + \Delta_x)}6 \equiv I(f;a,b,N) \end{split} \end{equation*}\]

où \(\Delta_x =\frac{b-a}N\) et \(x_i = a + i\Delta_x\).

  1. Ecrivez une fonction simpson_slow qui calcule l’intégrale d’une function \(f\) entre \(a\) et \(b\) avec \(N\) pas avec la méthode de Simpson en utilisant une boucle (for loop).

  2. Ecrivez une autre fonction simpson_fast qui fait la même chose sans utiliser de boucle (on suposera que la fonction \(f\) est vectorisée).

  3. Calculez l’intégrale de \(f(x) = \frac{1}{1+x^2}\) entre 0 et 1 pour \(N=1000\) et comparez le temps entre les deux fonctions en ecrirant %timeit avant la commande.

  4. Calculez la valeur théorique \(I^\star\) de l’intégrale et tracez en échelle logarithmique le residu \(|I^\star - I(f,0,1,N)|\) par rapport à \(N\). Qu’elle est la vitesse de convergence de cette intégrale ?

La solution analytique de l’intégrale est : \(\int_0^1 \frac{dx}{1+x^2} = \arctan(x)|_0^1 = \pi/4\)