Produit de Convolution
Distribution de Dirac
Comment Représenter mathématiquement une impulsion ?
Considérons le cas suivant :
Le condensateur étant initialement déchargé, si je ferme l’interrupteur à t=0, ce dernier aura in fine une charge Q=CU.
Il y a donc eu circulation ( infiniment brève) d’un courant, soit une impulsion de courant.
Supposons que l’on représente ce courant par une fonction telle que :
i(0)=1, i(t>0)=0
alors
donc Q=0
Cette représentation mathématique n’est donc pas valable.
Considérons maintenant :
Définition
Une distribution de dirac peut se définir ainsi :
Propriétés
Réponse Impulsionnelle
Réponse d’un système à une impulsion de dirac.
Système linéaire du première ordre :
Equation Différentielle
Résolution de l’équation différentielle pour trouver la réponse impulsionnelle
Rappel : Développement limité en 0 :
Réponse impulsionnelle
Convolution
Produit de convolution
h(t) réponse impulsionnelle
Connaissant la réponse impulsionnelle d’un système, il est possible d’en déduire tout type de réponse avec le produit de convolution.
Exemple : Réponse à un échelon (réponse indicielle):
Explication
Script Scilab pour générer les figures ci dessus
convolution.sce
N=300 ; // nombre de points
t_min=0
t_max=0.0001
y_min=0
y_max=10
t=[0:t_max/(N-1):t_max];
Nrep=30; // nombre d’impulsions élémentaires
inc=2; // Durée d'une impulsion
Ne=80 ; // Nombre d'échantillons sur une réponse élémentaire
R=10e3
C=100e-9
tau=R*C
f0=1/tau ;
omega0=2*%pi*f0 ;
n=[0:Ne-1];
e0=ones(1,inc) ; // IMPULSION
h0=omega0*exp(-omega0*n*t(1,Ne)); // REPONSE IMPULSIONNELLE
// définition des matrices où seront placées les impulsions et réponses
h=zeros(Nrep,N); // Matrice de zéros Nrep*N
e=zeros(Nrep,N);
//------------------------------------------------------------------------------
// FENETRE 0 : REPONSE INDICIELLE
//------------------------------------------------------------------------------
xset("window",0) ; xset("font size", 4); fig=get("current_figure")
index=1
for i=0:inc:inc*Nrep-1,
h(i+1, : )=[zeros(1,i), h0 ,zeros(1,N-Ne-i)];
e(i+1, : )=[zeros(1,i), e0 ,zeros(1,N-inc-i)];
xsetech([0 ,0,1,1/3]) ; plot2d2(t,e(i+1,:)) ;
a=gca();
a.x_location = "origin";
a.y_location = "origin";
a.font_style=10;
poly1= a.children(1).children(1);
poly1.foreground = index;
poly1.thickness = 1;
poly1.clip_state='off';
xsetech([0 ,1/3,1,1/3]) ; plot2d(t,h(i+1,:)) ;
a=gca();
a.x_location = "origin";
a.y_location = "origin";
a.font_style=10;
poly1= a.children(1).children(1);
poly1.foreground = index;
poly1.thickness = 1;
poly1.clip_state='off';
index=index+1; // Modif couleur
if index==8 then
index=1
end
end
s=sum(h,'r'); // calcul de la sortie
xsetech([0 ,2/3,1,1/3]) ; plot2d(t,s) ;
title(["Somme des Réponses Elémentaires"],"color","black","fontsize",2, "fontname",5);
a=gca();
a.x_location = "origin";
a.y_location = "origin";
a.font_style=10;
poly1= a.children(1).children(1);
poly1.foreground = 5;
poly1.thickness = 1;
poly1.clip_state='off';
xsetech([0 ,0,1,1/3]) ; title(["Entrée Décomposée en Impulsions"],"color","black","fontsize",2, "fontname",5);
xsetech([0 ,1/3,1,1/3]) ; title(["Réponse pour chaque Impulsion"],"color","black","fontsize",2, "fontname",5);
xs2svg(fig,'./illustrations/explication_conv.svg')
//------------------------------------------------------------------------------
// FENETRE 1 : IMPULSION ET REPONSE IMPULSIONNELLE
//------------------------------------------------------------------------------
xset("window",1) ; xset("font size", 4); fig=get("current_figure")
xsetech([0 ,0,0.5,0.5]) ;
plot2d2(t,e(1,: ))
title(["Impulsion à t=0"],"color","black","fontsize",2, "fontname",5);
a=gca();
a.font_style=10;
poly= a.children(1).children(1);
poly.foreground = 2;
poly.thickness = 1;
xsetech([0 ,0.5,0.5,0.5]) ;
plot2d(t,h(1,: )) ;
title(["Réponse h(t)"],"color","black","fontsize",2, "fontname",5);
a=gca();
a.font_style=10;
poly= a.children(1).children(1);
poly.foreground = 5;
poly.thickness = 3;
xsetech([0.5 , 0,0.5,0.5]) ;
plot2d2(t,e(33,:))
title(["Impulsion à t=k"],"color","black","fontsize",2, "fontname",5);
a=gca();
a.font_style=10;
poly= a.children(1).children(1);
poly.foreground = 2;
poly.thickness = 1;
xsetech([0.5,0.5,0.5,0.5]) ;
plot2d(t,h(33,:)) ;
title(["Réponse h(t - k)"],"color","black","fontsize",2, "fontname",5);
a=gca();
a.font_style=10;
poly= a.children(1).children(1);
poly.foreground = 5;
poly.thickness = 3;
xs2svg(fig,'./illustrations/rep_imp_dec.svg')
//*****************************************************************************