Utilisation de la bibliothèque scipy
Contents
La page ci-présente existe en version notebook téléchargeable grâce au bouton (choisir le format
.ipynb
). On rappelle qu’l 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.
3.3. Utilisation de la bibliothèque scipy#
3.3.1. Définition des fonctions pour le schéma d’Euler#
On va commencer par définir la fonction
Attention : Même si numpy
pour intégrer une équation différentielle.
Exercice A
Dans la cellule ci-après, vous devez:
Importer les deux bibliothèques
numpy
etmatplotlib.pyplot
Créer deux fonction
f_libre
etf_echelon
prenant deux argumentst
etu
(correspondant à un instantet à ) et qui renvoie la valeur pour chaque cas (régime libre et échelon de tension) (u est la tension aux bornes du condensateur comme dans l’étude présentée dans l’exemple). Vous pouvez définir et comme des variables globales que vous utilisez dans les fonctions.
Click to show
"""Ne pas oublier d'importer les bibliothèques scientifiques et d'éxécuter la cellule."""
3.3.2. Solve_ivp#
La fonction solve_ivp
appartient à la bibliothèque scipy.integrate
, sa signature est la suivante:
solve_ivp(f:callable, t_span:tuple, y0:nd.array, t_eval=t_eval:nd.array) -> dict
Arguments :
f
est la fonction du schéma d’Euler définie précédemmentt_span
est un tuple de élément(t0, tf)
donnant l’instant initial et l’instant final de l’intégration.y0
est un vecteur numpy (ou une liste classique) contenant les conditions initiales. Ceci même quand il n’y a qu’une condition initiale.t_eval
(argument optionnel donc impératif de le nommert_eval = ...
) est un vecteur numpy contenant les instants où l’on veut estimer la fonction solution. Même s’il est optionnel, il faudra toujours le donner.
Retour :
Un dictionnaire dont les clés utiles sont:
dict['t']
: les instants (donc l’argument det_eval
…)dict['y']
: un tableau numpy contenant à chaque ligne la solution . Comme il n’y a qu’une seule ligne pour une équation différentielle de degré 1, on obtiendra les pardict['y'][0]
3.3.2.1. Cas du régime libre#
Exercice B : Avec une boucle for
Définir un vecteur numpy contenant les instants
. Utiliser la fonction
solve_ivp
pour intégrer l’équation dans le cas d’un régime libre puis traceren fonction avec les avoir extraits du dictionnaire renvoyé par la fonction. Le comparer graphiquement à la solution analytique donnée ci-dessous.
On rappelle que la solution analytique est:
Note : Certaines étapes pourraient être raffinées (création du vecteur temps par exemple).
Click to show
# On rappelle que la fonction f_libre est accessible et que les bibliothèques scientifiques ont été créés.
3.3.2.2. Cas de la réponse à un échelon de tension.#
Exercice C : Avec une boucle for
Définir un vecteur numpy contenant les instants
. Utiliser la fonction
solve_ivp
pour intégrer l’équation dans le cas de la réponse à un échelon de tension puis traceren fonction avec les avoir extraits du dictionnaire renvoyé par la fonction. Le comparer graphiquement à la solution analytique donnée ci-dessous.
On rappelle que la solution analytique est: