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 : Par Abaddon1337 — Cette image vectorielle contient des éléments, éventuellement modifiés, qui ont été extraits de :, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=35612055 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 : charge-condensateur.py import numpy as np import matplotlib.pyplot as plt # Fonction Vc(t) à définir ici à la place du mot clé 'pass' 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 : À la place du mot clé pass dans le script, définir trois variables numériques R, 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, un tableau qui contiendra toutes les valeurs du temps pour lesquelles on veut représenter la valeur de Vc. Pour cela, utiliser la fonction linspace 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. ] >>> 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. ]) 1 On définit une variable x qui contient 6 valeurs également réparties sur l’intervalle [0,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 dans Matplotlib, déterminer le pourcentage de charge du condensateur lorsque t = τ (rappel : τ = RC). À quelles valeurs de t — exprimée en secondes et en nombre de τ (→ t = n . τ) — le condensateur sera-t-il chargé à 95% puis à 99% ? 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 : Résultat attendu 🔥 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 τ) par calcul dans le script Python. Vérifier le résultat obtenu sur la courbe. La réponse attendue est t ≈ 0.57 s ≈ 0.70 . τ L’algorithme à utiliser 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 🞄 🞄 🞄 Fonctions circulaires CIEL1IR/ER - Statistiques