Module & Argument

✎ Travail n° 1 Fonction de transfert n°1

🎯 Travail à faire :

✎ Travail n° 2 Fonction de transfert n°2

🎯 Travail à faire :

💻 Travail n° 3 Programmation Python

Ci-dessous figure un script Python qui répond à la question 5b) du TD du travail n°1.

btsciel1-doc13-filtre1.py
import cmath as cm
import numpy as np
import matplotlib.pyplot as plt

# Fonction de transfert isochrone
def H(x) :
    return 10 / (1 + x*1j)

#Point d'entrée du script
if __name__ == "__main__":
    # Domaine de définition
    # -> de 0 à 10 en 100 pas répartis
    pulsationsReduites = np.linspace(0, 10, 100)

    # Calcul des modules et arguments de H(x) pour les
    # différentes valeurs des pulsations réduites
    modules = np.absolute(H(pulsationsReduites))
    arguments = np.angle(H(pulsationsReduites))

    # Création d'une figure comportant 2 courbes
    fig, (axg, axp) = plt.subplots(2,1,layout="constrained")

    # Tracé des courbes de gains (axg) et de phases (axp) dans la figure
    axg.set_xscale('log')
    axg.plot(pulsationsReduites
             , modules
             , "blue"
             )

    axp.set_xscale('log')
    axp.plot(pulsationsReduites
             , arguments
             , "green"
             )

    # Ajout des labels
    axg.set_ylabel('Gain [db]')
    axg.set_xlabel(r'x = $\omega$/$\omega_0$')

    axp.set_ylabel('Phase [rad]')
    axp.set_xlabel(r'x = $\omega$/$\omega_0$')

    # Ajout des grilles
    for ax in (axg, axp):
        ax.grid(True)
        ax.grid(which='minor')

    # Affichage de la figure
    plt.show()

Voici les courbes produites par ce script :

btsciel1 doc13 filtre1

🎯 Travail à faire :

  1. S’appuyer sur ce script pour en créer un nouveau qui permet de répondre aux questions 2 et 3 du TD du travail n°2.

    Question 2.

    Les fonctions real() et imag() de Numpy permettent respectivement de calculer les parties réelles et imaginaires d’un nombre complexe.

    Exemple :

    demo.py
    import numpy as np
    
    z = 10 - 5j
    re = np.real(z)
    im = np.imag(z)
    
    print(f"Re{z} = {re} / Im{z} = {im}")

    Résultat d’exécution :

    > python demo.py
    Re(10-5j) = 10.0 / Im(10-5j) = -5.0
  2. Analyser les courbes produites pour répondre à la question 4 du TD.

  3. Répondre à la question 5 du TD en faisant afficher par votre script Python le déphasage maximal introduit par le filtre.

    Question 5

    Le maximum d’un tableau Numpy est obtenu avec la fonction max().

    Exemple :

    demo.py
    import numpy as np
    
    tab = np.array([1, -5, 2, 3.14, 10, 9.89, 5, 3])
    print(f"max. tab = {np.max(tab)}")

    Résultat d’exécution :

    > python demo.py
    max. tab = 10.0

1. Sujet rédigé par P.Marchadour

🞄  🞄  🞄