Fonction exponentielle
✎ Travail n° 1 TD exponentielle
Faire les exercices présents dans ce document
💻 Travail n° 2 Charge/décharge d’un condensateur
On considère le circuit électrique suivant :
Lorsqu’on applique un échelon de tension à ce circuit (→ passage brusque de 0V à Vin) alors que le condensateur est initialement déchargé (→ Vc=0V), celui-ci va se charger électriquement de manière exponentielle jusqu’à ce que la tension à ses bornes atteigne Vin. L’évolution de la tension à ses bornes en fonction du temps est décrite par la fonction :
Le produit RC est homogène à une durée et est appelé constante de temps. On le note τ (→ tau) et il est exprimé en secondes.
On veut analyser l’évolution de cette tension depuis la représentation graphique de cette fonction tracée par un script Python.
Le code partiel de ce script vous est donné ci-dessous :
import numpy as np
import matplotlib.pyplot as plt
# À la place du mot clé "pass", définir à partir
# des consignes de l'énoncé :
# * les constantes Vin, R et C
# * la fonction Vc(t)
pass
# Création d'une figure
fig = plt.figure()
# Ajout de la courbe de la tension aux bornes du condensateur dans la figure
courbeVc = fig.add_subplot(1 # nrows
, 1 # ncols
, 1 # index
, xscale='linear'
, xlabel=r'$t$ [s]'
, ylabel=r'$u_c$ [V]'
)
# Tracé de la courbe
courbeVc.plot(t, Vc, "blue")
# Configuration des grilles
plt.grid(which='major', color='black')
plt.minorticks_on()
plt.grid(which='minor', color='lightgray')
# Affichage de la courbe
plt.show()
🎯 Travail à faire :
-
Calculer le rapport VC / Vin pour t = τ, t = 3τ et t = 5τ
Que représente ce rapport ? En déduire l’intervalle de temps minimum sur lequel on devra tracer VC(t) pour analyser l’essentiel de son évolution. -
À la place du mot clé
pass
dans le script, définir trois variables numériquesR
,C
,Vin
qui représentent la résistance (en Ω, ohms), la capacité du condensateur (en F, farads) et la tension d’entrée (en V, volts) du circuit sachant que :-
R = 8.2kΩ
-
C = 100µF
-
Vin = 5V
-
-
Définir ensuite, dans une variable
t
, une liste qui contiendra toutes les valeurs du temps pour lesquelles on veut représenter la valeur de VC.
Pour cela, utiliser la fonctionlinspace
du module Numpy de Python sachant que l’on veut étudier la fonction sur 1000 points dans l’intervalle t ∈ [0, 5s].
On vous donne ci-dessous un exemple d’utilisation de cette fonction en mode interactif ainsi qu’un extrait de sa documentation :>>> import numpy as np >>> x = np.linspace(0,2,6) (1) >>> print(x) [0. 0.4 0.8 1.2 1.6 2. ]
1 On définit une variable x
qui contient 6 valeurs également réparties sur l’intervalle [0,2].>>> help(np.linspace) linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0) Return evenly spaced numbers over a specified interval. Returns `num` evenly spaced samples, calculated over the interval [`start`, `stop`]. The endpoint of the interval can optionally be excluded. Parameters ---------- start : array_like The starting value of the sequence. stop : array_like The end value of the sequence, unless `endpoint` is set to False. In that case, the sequence consists of all but the last of ``num + 1`` evenly spaced samples, so that `stop` is excluded. Note that the step size changes when `endpoint` is False. num : int, optional Number of samples to generate. Default is 50. Must be non-negative. Examples -------- >>> np.linspace(2.0, 3.0, num=5) array([2. , 2.25, 2.5 , 2.75, 3. ]) >>> np.linspace(2.0, 3.0, num=5, endpoint=False) array([2. , 2.2, 2.4, 2.6, 2.8]) >>> np.linspace(2.0, 3.0, num=5, retstep=True) (array([2. , 2.25, 2.5 , 2.75, 3. ]), 0.25) >>> np.linspace(0,2,6) array([0. , 0.4, 0.8, 1.2, 1.6, 2. ])
-
Définir enfin la variable
Vc
dans laquelle figure la définition de la fonction Vc(t) :La fonction exponentielle est accessible dans votre script Python via
np.exp()
. -
Exécuter le script pour tracer et afficher la courbe.
Résultat attendu :
-
En utilisant les fonctions de zoom et de déplacement de Matplotlib, déterminer graphiquement le pourcentage de charge du condensateur lorsque t = τ (rappel : τ = RC).
-
Modifier le script Python pour qu’il affiche désormais la courbe de décharge du condensateur sachant qu’elle est décrite par la fonction :
-
Connaissant désormais les expressions de charge (→
) et de décharge (→
) d’un condensateur à travers une résistance, exprimer la forme générale de l’évolution de cette tension en fonction du temps et des tensions initiales et finales aux bornes du condensateur c’est-à-dire l’expression de f() dans la formule ci-dessous :
Vc(t) = f(VCinitiale , VCfinale , t) -
Plutôt que d’analyser la courbe pour savoir à quelle valeur de t le condensateur sera déchargé à 50%, déterminer ce temps (en secondes et en nombre de τ) dans le script Python …
…d’abord par calcul
…puis par analyse des points de la courbe.
Vérifier le résultat obtenu sur la courbe.La réponse attendue est t ≈ 0.57 s ≈ 0.70 . τ
-
L’algorithme à utiliser pour déterminer le temps demandé à partir des points de la courbe pourrait ressembler à ceci :
-
Trouver dans le tableau
Vc
la valeur la plus proche de 2.5V (→ 50% de 5V) -
Récupérer l’indice de cette valeur
-
Convertir cet indice en secondes sachant que les 1000 points de la courbe couvrent 5 secondes.
-
Diviser ce dernier résultat par τ pour obtenir la durée en nombre de τ plutôt qu’en secondes.
-
-
L’article Find the nearest value and the index of NumPy Array
renseigne sur les fonction Numpy à utiliser pour trouver dans un tableau la valeur la plus proche d’un nombre ainsi que son indice
-
🞄 🞄 🞄