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.
bonsoir : )
myHeav = @(t) t >= 0;
heaviside(0)
myHeav(0)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :