Inscription / Connexion Nouveau Sujet
Niveau école ingénieur
Partager :

Produit de convolution - Vérification

Posté par
Rasol
10-02-16 à 17:41

Bonjour,
Voilà je suis face à une étude relativement simple qui traite de la convolution, cependant celle-ci devra être traité sur Matlab par la suite, c'est pour cela que j'aurai besoin de faire des vérifications.
Soit x fonction qui à t associe x(t)=K.(échelon-unité( de 0 à T)
Donc x(t) = K sur [0;T]  avec K constante réelle
et 0 sinon
Dans un premier temps, je propose de l'écrire en analytique  de la façon suivante :
soit Heaviside la fonction qui à t associe l'échelon-unité ;
x(t)=K. (Heaviside(t)-Heaviside(t-T))
   Maintenant j'ai encore quelque doutes à ce sujet, pouvez-vous valider cette idée ?


Ensuite j'ai une fonction h qui à t associe la fonction suivante :
h(t) = C.exp(-t.C).Heaviside(t) avec C constante réelle
Pour celle-ci pas de problème d'écriture, ( à mois que ... )

Enfin, nous avons v(t)=h*x(t) : le produit de convolution de h et x

v(t)= intégrale sur R [h(u).x(t-u)du]

   sachant que x(t-u)= 1 si (t-u) est compris entre 0 et T
et 0 sinon,
Cela va engendrer une modification sur les bornes d'intégration ( à confirmer svp)
Par ailleurs , h(u) = 0 si u est négatif.
A ce stade, nous avons 3 conditions pour avoir un produit h(u).x(t-u) non nulle :
d'abord 0<(t-u)<T   qui implique que  
u < t     et    
u > t-T         ( deux conditions de x(t-u) )
et ensuite u>0 ( condition de h(u) )
Si t est négatif , l'intégrant est nulle
Si t est nulle idem
Si t est inférieur à T, idem
Donc cela impacte les bornes de la façon suivante :
v(t)=intégrale de T à t de (h(u).x(t-u) du) = int_[ t ; T ] (C.K.exp(-u.C)) =
-K.(exp(-t.C)+Kexp(-T.C)

Êtes-vous d'accord ?

Mon problème réside dans le fait que le programme Matlab ne semble pas être d'accord lorsque je teste la solution analytique et numérique,  en effet, deux valeurs différentes sont retourné lors d'un essai avec un réel.
Je vous expose la situation :

%convolution
clear all;
R=10000;
C=50e-6; le produit RC = 10^4*5*10^-5 = 5*10^-1 = 0.5
T=pi;
syms t;
syms u;
h=@(t) (1/(R*C)*exp(-t/(R*C)))*heaviside(t);
x=@(t) (heaviside(t)-heaviside(t-T))./T;
hx=@(u) h(u)*x(t-u);
v=int(hx(u),-inf,inf)

Le résultat analytique est :
(heaviside(t - pi)*(exp(2*pi - 2*t) - 1))/pi - (heaviside(t)*(exp(-2*t) - 1))/pi

Ce qui est très probablement correcte, j'aurai tendance à plus me fier à Matlab qu'à mon propre calcul fait par hypothèses.
Effectivement, lorsque je prend une valeur quelconque pour t
par exemple 3.2> T= pi , j'obtiens par mon calcul :  
-1/pi.(exp(-t.2)+1/pi.exp(-pi.2) =  6.5535e-05
, la fonction Matlab elle retourne 0.2827.
Pourriez avoir l'amabilité de me dire laquelle des deux écriture analytique je dois choisir, celle de Matlab ou la mienne ?
J'aurai tendance à garder celle de Matlab, mais j'ai peur de me tromper.

Posté par
mdr_non
re : Produit de convolution - Vérification 10-02-16 à 17:49

bonsoir : )

Citation :
x(t)=K. (Heaviside(t)-Heaviside(t-T))
   Maintenant j'ai encore quelque doutes à ce sujet, pouvez-vous valider cette idée ?
Pourquoi as-tu des doutes ?

Tes doutes seront très vite levés si tu fais un dessin ou si tu calcules quelques valeurs à la main ou si tu détailles les valeurs sur les intervalles.
Bon allez, la formule est bonne.

Quand t < 0, H(t) = H(t - T) = 0
Quand T > t >= 0, H(t) = 1 et H(t - T) = 0 d'où H(t) - H(t - T) = 1
Quand t >= T, H(t) = H(t - T) = 1 d'où H(t) - H(t - T) = 0

Tu as donc bon. En fait j'aurais ajouté un dirac en T, pourquoi ?

x(t) = K(H(t) - H(t - T)) + Kdirac(t - T).

Posté par
mdr_non
re : Produit de convolution - Vérification 10-02-16 à 18:04

Citation :
v(t)= intégrale sur R [h(u).x(t-u)du]

   sachant que x(t-u)= 1 si (t-u) est compris entre 0 et T
et 0 sinon,
Cela va engendrer une modification sur les bornes d'intégration ( à confirmer svp)
Oui tu as raison.

La vérité c'est que les bornes d'intégrations ne sont pas changées. C'est juste qu'actuellement on intègre sur R entièrement hors la fonction intégrée est nulle sur tout R sauf sur un intervalle !
(On a une fonction à support fini.)

Ensuite attention,
x(t - u) = \left\{\begin{matrix}K \text{  si } T \geq t - u \geq 0
 \\ 0 \text{  sinon }\end{matrix}\right. = \left\{\begin{matrix}K \text{  si } t - T \leq u \leq t
 \\ 0 \text{  sinon }\end{matrix}\right.
 \\ 
 \\ h(u) =  \left\{\begin{matrix}C\exp(-uC) \text{  si } u \geq 0
 \\ 0 \text{  sinon }\end{matrix}\right.
 \\ 
 \\ \text{D'où : }
 \\ h(u)x(t - u) = \left\{\begin{matrix}KC\exp(-uC) \text{  si } t \geq u \geq t - T \geq 0
 \\ 0 \text{  sinon }\end{matrix}\right.
 \\ 
 \\ \text{puis : }
 \\ v(t) = \left\{\begin{matrix}\int_{t - T}^{t} KC\exp(-uC) \mathrm{d}u \text{  si } t \geq T
 \\ 0 \text{  sinon }\end{matrix}\right.

Posté par
mdr_non
re : Produit de convolution - Vérification 10-02-16 à 18:36

Citation :
%convolution
clear all;
R=10000;
C=50e-6; le produit RC = 10^4*5*10^-5 = 5*10^-1 = 0.5
T=pi;
syms t;
syms u;
h=@(t) (1/(R*C)*exp(-t/(R*C)))*heaviside(t);
x=@(t) (heaviside(t)-heaviside(t-T))./T;
hx=@(u) h(u)*x(t-u);
v=int(hx(u),-inf,inf)
Quelques remarques :
Le t que tu déclares en tant que variable symbolique n'est pas le t qui se trouve dans les fonction handles h et x.

Tu n'as pas besoin de mettre ./T dans l'expression de x. Juste /T suffit car T est un nombre.

En revanche aux endroits où j'ai mis du rouge tu peux (tu devrais) mettre .*

x peut être écrite de cette façon également :
x = @(t) (t >= 0) & (t <= T);

ou mieux :
x = @(K,T,t) ((t >= 0) & (t <= T)) * K;

Cette façon d'écrire est plus intéressante car la fonction heaviside de Matlab vaut 1/2 en 0.
Tu pourras tester :
myHeav = @(t) t >= 0;

heaviside(0)
myHeav(0)

Posté par
mdr_non
re : Produit de convolution - Vérification 10-02-16 à 22:03

Correction d'une bêtise :
x(t - u) = \left\{\begin{matrix}K \text{  si } T \geq t - u \geq 0
 \\ 0 \text{  sinon }\end{matrix}\right. = \left\{\begin{matrix}K \text{  si } t - T \leq u \leq t
 \\ 0 \text{  sinon }\end{matrix}\right.
 \\ 
 \\ h(u) =  \left\{\begin{matrix}C\exp(-uC) \text{  si } u \geq 0
 \\ 0 \text{  sinon }\end{matrix}\right.
 \\ 
 \\ \text{D'où : }
 \\ h(u)x(t - u) = \left\{\begin{matrix}KC\exp(-uC) \text{  si } t \geq u \geq t - T \geq 0
 \\ 0 \text{  sinon }\end{matrix}\right.
 \\ 
 \\ \text{puis : }
 \\ v(t) = \left\{\begin{matrix}\int_{0}^{t} KC\exp(-uC) \mathrm{d}u \text{  si } 0 \leq t \leq T
 \\ \int_{t - T}^{t} KC\exp(-uC) \mathrm{d}u \text{  si } t \geq T
 \\ 0 \text{  sinon }\end{matrix}\right.

Posté par
Rasol
re : Produit de convolution - Vérification 10-02-16 à 22:04

Merci

Posté par
mdr_non
re : Produit de convolution - Vérification 10-02-16 à 23:25

Lire également :

h(u)x(t - u) = \left\{\begin{matrix}KC\exp(-uC) \text{  si } t \geq u \geq t - T, u \geq 0
 \\ 0 \text{  sinon }\end{matrix}\right.
Produit de convolution - Vérification


de rien : ) bonne continuation : )



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1741 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !