quarta-feira, 6 de maio de 2020

Convolução: um problema exemplo.

Não tenha medo da convolução, apenas estude um pouco mais!

Um sistema linear apresenta a seguinte resposta ao impulso:
\[ h(t) = \left(2e^{-t} - e^{-2t}\right)u(t).\]
Se a entrada for o sinal $x(t) = \cos(3t)u(t)$, qual a resposta $y(t)$? Considere que o sistema não possui energia inicial. Lembrar que $h(t)$ representa a resposta ao impulso $\delta(t)$ e que $u(t)$ é a função degrau unitário.

Solução

Sabemos que a solução pode ser calculada pela convolução: $y(t) = x(t)*h(t)$. Então:
\begin{align*}
y(t) =& \int_0^{t} x(\tau)h(t-\tau) d\tau \\
     =& \int_0^{t} \cos(3\tau)\left(2e^{-t+\tau} - e^{-2t+2\tau}\right) d\tau \\
   =& 2e^{-t}\int_0^{t} \cos(3\tau)e^{\tau} d\tau - e^{-2t}\int_0^{t} \cos(3\tau)e^{2\tau} d\tau \\
\end{align*}
Lembramos que:
\[ \int \cos(bx)e^{cx} dx = \frac{e^{cx}}{c^{2}+b^{2}}(c\cos bx+b\sin bx) \]
Então:
\begin{align*}
y(t) =& 2e^{-t}\left[\frac{e^{\tau}}{9 + 1}(\cos(3\tau) + 3\sin(3\tau)) \right]_0^t - e^{-2t}\left[\frac{e^{2\tau}}{9 + 4}(2\cos(3\tau) + 3\sin(3\tau)) \right]_0^t \\
 =& 2e^{-t}\left[\frac{e^{t}}{10} (\cos(3t) + 3\sin(3t)) - \frac{1}{10} \right] - e^{-2t}\left[\frac{e^{2t}}{13}( 2\cos(3t) + 3\sin(3t)) - \frac{2}{13} \right] \\
 =& \frac{1}{5}\cos(3t) + \frac{3}{5}\sin(3t) - \frac{1}{5}e^{-t} - \frac{2}{13}\cos(3t) - \frac{3}{13}\sin(3t) + \frac{2}{13}e^{-2t}\\
& \text{finalmente:}\\
y(t) =& \frac{3}{65}\cos(3t) + \frac{24}{65}\sin(3t) - \frac{1}{5}e^{-t} + \frac{2}{13}e^{-2t}, \text{para } t \geq 0. \\
\end{align*}

Gráficos:
Código Scilab:

clc; close; 
dt = 0.01;
t=0:dt:12;  // "tempo"
// Sinais "contínuos":
h = 2*exp(-t) - exp(-2*t);  // resposta ao impulso
x = cos(3*t);  // sinal de entrda
y = dt*convol(h,x);  // resposta do sistema

// resposta teórica:
yt = (3/65)*cos(3*t) + (24/65)*sin(3*t) - (1/5)*exp(-t) + (2/13)*exp(-2*t);

// Gráficos:
subplot(2,2,1); plot(t,h); title('h(t)'); 
subplot(2,2,2); plot(t,x); title('x(t)');
subplot(2,1,2); plot(t,y(1:max(size(t))),t,yt);
title('y(t) = x(t)*h(t)'); xlabel('tempo');

Nenhum comentário:

Postar um comentário