#!/usr/bin/env python # -*- coding: utf-8 -*- """ Tracé d'un diagramme de Bode """ __author__ = "Dominique Lefebvre" __copyright__ = "Copyright 2019 - TangenteX.com" __version__ = "1.0" __date__ = "16 décembre 2019" __email__ = "dominique.lefebvre@tangentex.com" from scipy import angle, log10, logspace, absolute from matplotlib.pylab import figure, subplot,semilogx,grid, title, xlabel, ylabel # Définition de la fonction de transfert def H(x): return (1.0/(1.0 + 1j*x)) # Fonction de calcul du gain def Gain(x): return 20*log10(x) # Définition du domaine de calcul omega_min = 0.1 omega_max = 1000.0 nbpoints = 100 x = logspace(log10(omega_min),log10(omega_max),nbpoints) # Calcul de la courbe de gain y_gain = Gain(absolute(H(x))) # Calcul de la courbe de phase (en radian) y_phase = angle(H(x)) # Tracé des courbes fig1 = figure(figsize=(10,8)) subplot(211) semilogx(x,y_gain) grid(True) title(u'Diagramme de Bode - Courbe de gain') ylabel(u'gain (dB)') subplot(212) semilogx(x,y_phase) grid(True) title(u'Diagramme de Bode - Courbe de phase') xlabel(u'x') ylabel(u'phase (rad)')