Intégration numérique
La page ci-présente existe en version notebook téléchargeable grâce au bouton (choisir le format .ipynb
). On rappelle qu’il faut ensuite l’enregistrer dans un répertoire adéquat sur votre ordinateur (capa_num
par exemple dans votre répertoire personnel) puis lancer Jupyter Notebook depuis Anaconda pour accéder au notebook, le modifier et exécutez les cellules de code adéquates.
2.4. Intégration numérique#
Exercice 1:
Ecrire quatre fonctions
i_g(f:callable, x0:float, xf:float, N:int)
,i_d(f:callable, x0:float, xf:float, N:int)
,i_c(f:callable, x0:float, xf:float, N:int)
eti_t(f:callable, x0:float, xf:float, N:int)
qui renvoie respectivement l’intégrale de \(f\) entre \(x_0\) et \(x_f\) estimée par des rectangles à gauche, à droite, centrée puis par des trapèzes avec \(N\) rectangles.L’appliquer pour déterminer l’intégrale entre \(x=0\) et \(x=2\) des fonctions suivantes:
\(f(x) = \sqrt{\frac{3x^2 + 2x + 1}{x + 1 + \ln(1 + x)}}\) avec un pas de \(10^{-3}\)
\(g(x) = \exp{\cos(x^2 + 2)}\) avec un pas de \(10^{-3}\)
Tracer la représentation graphique des primitives des deux fonctions précédentes sur \([0,2]\) avec le même pas que précédemment en imposante que la primitive s’annule en \(x_0\). On utilisera les fonctions crées précédemment.
Reprendre la question précédente mais en utilisation une récurrence pour calculer chaque point de la primitive.
NOTE : Pour permettre le calcul de nombreuses valeurs de \(f'\) sans avoir besoin d’utiliser une boucle, il faut travailler avec numpy et que la fonction f
écrite en Python soit vectorialisable. On pensera pour cela à utiliser les fonctions usuelles (sin, cos, log, exp
) issues de la bibliothèque numpy
.
Exercice 2:
Télécharger le fichier de données suivant et l’ouvrir depuis pyzo (possible même si ce n’est pas un .py). Obtenir alors le chemin absolu vers ce fichier (clic droit sur l’onglet du nom de fichier et copier le chemin).
Dans votre script python, importer la fonction
chdir
du moduleos
puis avec la commandechdir(nom_du_repertoire_precedent_SANS_LE_NOM_DU_FICHIER)
, définir le répertoire de travail (le répertoire dans lequel Python va chercher les fichiers).Importer les données dans deux vecteurs numpy
temps
ettension
avec la méthode expliquée ici.Ecrire une fonction integ(x:numpy.ndarray, y:numpy.ndarray) -> numpy.ndarray qui doit calculer les intégrales \(\int_{x=x_0}^{x_i} y(x')dx'\) par la méthode des trapèzes où \(x_0\) est le premier terme de
x
et lesx_i
sont les valeurs successives dex_i
(cela revient à estimer la primitive de \(y\) qui s’annule en \(x_0\) aux points \(x_i\)).Utiliser la fonction précédente pour obtenir la primitive de la fonction tension(temps) s’annule \(t_0\) le premier temps de mesures puis la tracer.