Fonction exponentielle

✎ Travail n° 1 TD exponentielle

Faire les exercices présents dans ce document pdf

💻 Travail n° 2 Charge/décharge d’un condensateur

On considère le circuit électrique suivant :

circuit rc
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 :

vc t charge

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 :

  1. À 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

  2. 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].
  3. Définir enfin la variable Vc dans laquelle figure la définition de la fonction Vc(t) : vc t charge

    La fonction exponentielle est accessible dans votre script Python via np.exp().

  4. Exécuter le script pour tracer et afficher la courbe.

    courbe vc charge
    Résultat attendu
  5. En utilisant les fonctions de zoom et de déplacement dans Matplotlib, déterminer le pourcentage de charge du condensateur lorsque t = τ (rappel : τ = RC).

  6. À quelles valeurs de t — exprimée en secondes et en nombre de τ (→ t = n . τ) — le condensateur sera-t-il chargé à 95% puis à 99% ?

  7. 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 : vc t decharge

    courbe vc decharge
    Résultat attendu
  8. 🔥 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 :

      1. Trouver dans le tableau Vc la valeur la plus proche de 2.5V (→ 50% de 5V)

      2. Récupérer l’indice de cette valeur

      3. Convertir cet indice en secondes sachant que les 1000 points de la courbe couvrent 5 secondes.

      4. 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 link renseigne sur les fonction Numpy à utiliser pour trouver dans un tableau la valeur la plus proche d’un nombre ainsi que son indice

🞄  🞄  🞄