s3Eva2016TI_T4 rampa(ω) – transformada inversa de Fourier

Ejercicio: 3Eva2016TI_T4 rampa(ω) – transformada inversa de Fourier

la función de magnitud |X(ω)|  es par en el eje vertical,

3E2016TI Tema4 Diagrama01

usando la derivada de |X(ω)|,

3E2016TI Tema4 Diagrama 03

la expresión de la gráfica usando impulsos y rectángulos en dominio ω es,

δδωX(ω)=δ(ω+ω0)1ω0Pω0/2(ω+ω02) \frac{\delta}{\delta \omega}X(\omega) = \delta( \omega +\omega_0) - \frac{1}{\omega_0} P_{\omega_0/2}\Big( \omega +\frac{\omega_0}{2}\Big) +1ω0Pω0/2(ωω02)δ(ωω0) + \frac{1}{\omega_0} P_{\omega_0/2}\Big( \omega -\frac{\omega_0}{2}\Big) - \delta( \omega - \omega_0)

aplicando la transformada inversa de Fourier

F1[δδωX(ω)]=F1[δ(ω+ω0)1ω0Pω0/2(ω+ω02)] \mathscr{F} ^{-1} \Big[ \frac{\delta}{\delta \omega}X(\omega) \Big] = \mathscr{F} ^{-1} \Big[\delta( \omega +\omega_0) - \frac{1}{\omega_0} P_{\omega_0/2}\Big( \omega +\frac{\omega_0}{2}\Big) \Big] +F1[1ω0Pω0/2(ωω02)δ(ωω0)] + \mathscr{F} ^{-1} \Big[\frac{1}{\omega_0} P_{\omega_0/2}\Big( \omega -\frac{\omega_0}{2}\Big) - \delta( \omega - \omega_0) \Big]

si se realiza por partes, y considerando solo la gráfica de magnitud |X(ω)|

F1[δδωX(ω)]=jtx1(t)\mathscr{F} ^{-1} \Big[ \frac{\delta}{\delta \omega}X(\omega) \Big] = -jtx_1(t) F1[δ(ω+ω0)]=12πejω0t \mathscr{F} ^{-1} \Big[\delta( \omega +\omega_0)\Big] = \frac{1}{2\pi} e^{-j\omega_0 t} F1[1ω0Pω0/2(ω+ω02)]=1ω01πtsin(ω02t)ejω02t \mathscr{F} ^{-1} \Big[\frac{1}{\omega_0} P_{\omega_0/2}\Big( \omega +\frac{\omega_0}{2}\Big) \Big] = \frac{1}{\omega_0} \frac{1}{\pi t} \sin \Big(\frac{\omega_0}{2} t \Big) e^{-j\frac{\omega_0}{2}t}

sustituyendo en la ecuación principal,

jtx1(t)=12πejω0t1ω01πtsin(ω02t)ejω02t -jtx_1(t) = \frac{1}{2\pi} e^{-j\omega_0 t} - \frac{1}{\omega_0} \frac{1}{\pi t} \sin \Big(\frac{\omega_0}{2} t \Big) e^{-j\frac{\omega_0}{2}t} +1ω01πtsin(ω02t)ejω02t12πejω0t + \frac{1}{\omega_0} \frac{1}{\pi t} \sin \Big(\frac{\omega_0}{2} t \Big) e^{j\frac{\omega_0}{2}t} - \frac{1}{2\pi} e^{j\omega_0 t}

agrupando,

jtx1(t)=12π(ejω0tejω0t) -jtx_1(t) = \frac{1}{2\pi}\Big( e^{-j\omega_0 t} -e^{j\omega_0 t}\Big) +1ω0πtsin(ω02t)(ejω02t+ejω02t) + \frac{1}{\omega_0 \pi t} \sin \Big(\frac{\omega_0}{2} t \Big)\Big(- e^{-j\frac{\omega_0}{2} t} +e^{j\frac{\omega_0}{2} t}\Big)

para simplificar se divide ambos lados de la ecuación para -jt

x1(t)=1πt(ejω0tejω0t2j) x_1(t) = \frac{1}{\pi t}\Big( \frac{e^{j\omega_0 t}-e^{-j\omega_0 t} }{2j}\Big) 2ω0πt2sin(ω02t)(ejω02tejω02t2j) - \frac{2}{\omega_0 \pi t^2 } \sin \Big(\frac{\omega_0}{2} t \Big)\Big(\frac{e^{j\frac{\omega_0}{2} t}- e^{-j\frac{\omega_0}{2} t}}{2j}\Big)

que es la forma exponencial del seno y coseno

x1(t)=1πtsin(ω0t)2ω0πt2sin(ω02t)sin(ω02t) x_1(t) = \frac{1}{\pi t} \sin (\omega_0 t) - \frac{2}{\omega_0 \pi t^2 } \sin \Big(\frac{\omega_0}{2} t \Big) \sin \Big( \frac{\omega_0}{2} t \Big) x1(t)=1πtsin(ω0t)2ω0πt2sin2(ω02t) x_1(t) = \frac{1}{\pi t}\sin (\omega_0 t) - \frac{2}{\omega_0 \pi t^2 }\sin^2 \Big(\frac{\omega_0}{2} t \Big) x1(t)=ω0πsin(ω0t)ω0tω02π[sin(ω02t)ω02t]2 x_1(t) = \frac{\omega_0}{\pi}\frac{\sin (\omega_0 t)}{\omega_0 t} - \frac{\omega_0}{2\pi}\Bigg[\frac{\sin \Big(\frac{\omega_0}{2} t \Big)}{\frac{\omega_0}{2} t} \Bigg]^2

ahora, considerando la gráfica de fase:
3E2016TI Tema4 Diagrama 02

se tiene que,

x(t)=x1(t3) x(t) = x_1(t-3) x(t)=ω0πsin(ω0(t3))ω0(t3)ω02π[sin(ω02(t3))ω02(t3)]2 x(t) = \frac{\omega_0}{\pi}\frac{\sin (\omega_0 (t-3))}{\omega_0 (t-3)} - \frac{\omega_0}{2\pi}\Bigg[\frac{\sin \Big(\frac{\omega_0}{2} (t-3) \Big)}{\frac{\omega_0}{2} (t-3)}\Bigg]^2

s3Eva2016TI_T3 LTI CT Circuito RL respuesta de frecuencia

Ejercicio: 3Eva2016TI_T3 LTI CT Circuito RL respuesta de frecuencia

a. Determinar su función de transferencia

voltaje en la entrada,

v1(t)=vR(t)+vL(t) v_1(t) = v_R(t) + v_L(t) v1(t)=Ri(t)+vL(t) v_1(t) = R i(t) + v_L(t)

voltaje en la salida,
v2(t)=Lδδti(t) v_2(t) = L \frac{\delta}{\delta t}i(t)

i(t)=1Ltv2(τ)δτ i(t) = \frac{1}{L} \int_{-\infty}^{t}v_2(\tau) \delta \tau

sustituyendo i(t)en la ecuacion de v1

v1(t)=R1Ltv2(τ)δτ+vL(t) v_1(t) = R \frac{1}{L} \int_{-\infty}^{t}v_2(\tau) \delta \tau + v_L(t)

usando un solo operador, el diferencial,

δδtv1(t)=RLv2(t)+δδtv2(t) \frac{\delta}{\delta t} v_1(t) = \frac{R}{L} v_2(t) + \frac{\delta}{\delta t} v_2(t)

cambiando al dominio de frecuencia ω

jωV1(ω)=RLV2(ω)+jωV2(ω) j\omega V_1(\omega) = \frac{R}{L} V_2(\omega) + j\omega V_2(\omega) jωLV1(ω)=RV2(ω)+jωLV2(ω) j\omega L V_1(\omega) = R V_2(\omega) + j\omega L V_2(\omega) jωLV1(ω)=V2(ω)(R+jωL) j\omega L V_1(\omega) = V_2(\omega)\Big( R + j\omega L \Big) H(ω)=V2(ω)V1(ω)=jωLR+jωL H(\omega) = \frac{V_2(\omega)}{V_1(\omega)} = \frac{j\omega L}{ R + j\omega L } H(ω)=jωLR1+jωLR H(\omega) = \frac{j\omega \frac{L}{R}}{ 1 + j\omega \frac{L}{R} }

usando los valores del circuito

H(ω)=jω0.210+jω0.2 H(\omega) = \frac{j\omega 0.2}{ 10 + j\omega 0.2 } H(ω)=jω50+jω H(\omega) = \frac{j\omega}{50 + j\omega } H(ω)=ω502+ω2 |H(\omega)| = \frac{|\omega|}{\sqrt{ 50^2 + \omega^2} } θH(ω)=π2arctan(ω50) \theta_{H(\omega)} = \frac{\pi}{2} - \arctan \Big( \frac{\omega}{50}\Big) ω0=RL=100.2=50rad/s \omega_0 = \frac{R}{L} = \frac{10}{0.2} = 50 rad/s

b. Determinar, esquematizar y etiquetar su respuesta de frecuencia, indicando a que tipo de filtro no ideal de frecuencias selectivas se podría asociar su comportamiento.

tarea…

c. Obtener la respuesta impulso h(t) que representa al circuito eléctrico.

h(t)=F1[H(ω)] h(t) = \mathscr{F} ^{-1} \Big[ H(\omega) \Big] =F1[jω50+jω] = \mathscr{F} ^{-1} \Big[ \frac{j\omega}{50 + j\omega } \Big]

separando en fracciones parciales y usando la tabla de transformadas de Fourier:

=F1[15050+jω] = \mathscr{F} ^{-1} \Big[ 1-\frac{50}{50 + j\omega } \Big] h(t)=δ(t)50e50tμ(t) h(t) = \delta (t) - 50 e^{-50t} \mu (t)

d. Determinar la respuesta v2(t) que se obtiene a la salida de dicho sistema cuando tiene una entrada v1(t) = sen 50t [V].
¿Qué puede decir acerca de si el sistema transmite con distorsión o sin distorsión? Justifique su respuesta de manera razonada.

V1(ω)=F[v1(t)]=F[sin(50t)] V_1(\omega) = \mathscr{F} \Big[ v_1(t)\Big] = \mathscr{F} \Big[ \sin (50t) \Big] =jπδ(ω+50)jπδ(ω50) = j\pi \delta (\omega+50) - j\pi \delta (\omega-50) V2(ω)=V1(ω)H(ω) V_2(\omega) = V_1(\omega) H(\omega) V2(ω)=(jπδ(ω+50)jπδ(ω50))(jω50+jω) V_2(\omega) =\Big( j\pi \delta (\omega+50) - j\pi \delta (\omega-50) \Big) \Big( \frac{j\omega}{50 + j\omega } \Big) =j2π(δ(ω+50)ω50+jωδ(ω50)ω50+jω) =j^2\pi \Big( \delta (\omega+50) \frac{\omega}{50 + j\omega } - \delta (\omega-50) \frac{\omega}{50 + j\omega }\Big) =(1)π(δ(ω+50)ω50+jωδ(ω50)ω50+jω) = (-1)\pi \Big( \delta (\omega+50) \frac{\omega}{50 + j\omega }- \delta (\omega-50) \frac{\omega}{50 + j\omega }\Big)

Los términos con impulso desplazados tienen magnitud solo en las posiciones donde el impulso tiene valor 1. En este caso es con ω=±50

V2(ω)=π(δ(ω+50)(1)(50)50j50δ(ω50)(1)5050+j50) V_2(\omega) =\pi \Big( \delta (\omega+50) \frac{(-1)(-50)}{50 - j50 } - \delta (\omega-50) \frac{(-1)50}{50 + j50}\Big)

dividiendo el numerador y denominador para 50 se simplifica a

=π(δ(ω+50)11j1+δ(ω50)11+j1) =\pi \Big( \delta (\omega+50) \frac{1}{1 - j1 } + \delta (\omega-50) \frac{1}{1 + j1}\Big)

multiplicando el primer coeficiente por 1+j y el segundo coeficiente por 1-j, se convierte el denominador en un número real.

=π(δ(ω+50)1(1+j)(1j1)(1+j)+δ(ω50)1(1j)(1+j1)(1j)) =\pi \Big( \delta (\omega+50) \frac{1(1+j)}{(1 - j1) (1+j)} + \delta (\omega-50) \frac{1(1-j)}{(1 + j1)(1-j)}\Big) =π(δ(ω+50)1+j2+δ(ω50)1j2) =\pi \Big( \delta (\omega+50) \frac{1+j}{2} + \delta (\omega-50) \frac{1-j}{2}\Big) =π2(δ(ω+50)+jδ(ω+50)+δ(ω50)jδ(ω50)) =\frac{\pi}{2} \Big( \delta (\omega+50)+j\delta (\omega+50) + \delta (\omega-50) - j\delta (\omega-50) \Big) V2(ω)=π2(δ(ω+50)+δ(ω50))+jπ2(δ(ω+50)δ(ω50)) V_2(\omega) =\frac{\pi}{2} \Big( \delta (\omega+50) + \delta (\omega-50)\Big) + j\frac{\pi}{2} \Big(\delta (\omega+50)- \delta (\omega-50) \Big)

obteniendo v2(t) en el dominio de tiempo,

v2(t)=F1[V2(ω)] v_2(t) = \mathscr{F}^{-1} \Big[V_2(\omega) \Big] =12F1[π(δ(ω+50)+δ(ω50))]+ =\frac{1}{2} \mathscr{F}^{-1} \Bigg[ \pi \Big(\delta (\omega+50) + \delta (\omega-50) \Big )\Bigg] + +12F1[jπ(δ(ω+50)+δ(ω50))] +\frac{1}{2} \mathscr{F}^{-1} \Bigg[ j\pi \Big(\delta (\omega+50) + \delta (\omega-50) \Big )\Bigg] v2(t)=12cos(50t)+12sin(50t) v_2(t) =\frac{1}{2} \cos(50t) + \frac{1}{2} \sin(50t)

por magnitud y fase, simplificación trigonométrica

v2(t)=12sin(50t+π4) v_2(t) =\frac{1}{\sqrt{2}} \sin\Big(50t+\frac{\pi}{4}\Big)

también con Sympy,

>>> v2=(1/2)*sym.cos(50*t)+(1/2)*sym.sin(50*t)
>>> sym.trigsimp(v2)
0.5*sqrt(2)*sin(50*t + pi/4)
>>> 

el resultado es concordante con lo que realiza la función de transferencia, respuesta al impulso H(ω) en ω=50

H(ω)=ω502+ω2 |H(\omega)| = \frac{|\omega|}{\sqrt{ 50^2 + \omega^2} } =50502+502=502(502)=12=22 = \frac{|50|}{\sqrt{ 50^2 + 50^2} } = \frac{|50|}{\sqrt{ 2(50^2)} } = \frac{1}{\sqrt{2}} = \frac{\sqrt{2}}{2} θH(ω)=π2arctan(ω50) \theta_{H(\omega)} = \frac{\pi}{2} - \arctan \Big( \frac{\omega}{50}\Big) =π2arctan(5050)=π2π4=π4 = \frac{\pi}{2} - \arctan \Big( \frac{50}{50}\Big) = \frac{\pi}{2}-\frac{\pi}{4} = \frac{\pi}{4}

considerando también que:

ω0=RL=100.2=50rad/s \omega_0 = \frac{R}{L} = \frac{10}{0.2} = 50 rad/s

s3Eva2016TI_T2 LTI CT sub-sistemas h(t) multiplicados con Fourier

Ejercicio: 3Eva2016TI_T2 LTI CT sub-sistemas h(t) multiplicados con Fourier

a. Determinar la energía contenida en la señal h(t)

h(t)=sin(11πt)πt h(t) = \frac{\sin (11 \pi t)}{\pi t} Eh(t)=h(t)2δt=12πH(ω)2δω E_{h(t)} = \int_{-\infty}^{\infty} |h(t)|^2 \delta t = \frac{1}{2\pi} \int_{-\infty}^{\infty}|H(\omega)|^2 \delta \omega =12π11π11π12δω=12πω11π11π = \frac{1}{2\pi} \int_{-11\pi}^{11\pi}|1|^2 \delta \omega = \frac{1}{2\pi} \omega \Big|_{-11\pi}^{11\pi} =12π(11π(11π))= \frac{1}{2\pi} \big(11\pi-(-11\pi)\big) =12π2(11π)=11 = \frac{1}{2\pi} 2\big(11\pi\big) = 11

b. Determinar, esquematizar y etiquetar el espectro de Fourier de la señal m(t). Es decir M(ω) vs ω.

X(ω)=F[i=11k2cos(5kπt)] X(\omega) = \mathscr{F} \Big[\sum_{i=1}^{\infty} \frac{1}{k^2} \cos(5k\pi t) \Big] =i=11k2F[cos(5kπt)] = \sum_{i=1}^{\infty} \frac{1}{k^2} \mathscr{F} \Big[\cos (5k\pi t) \Big] =i=11k2[πδ(ω+5kπ)+πδ(ω5kπ)] = \sum_{i=1}^{\infty} \frac{1}{k^2} \Big[\pi \delta (\omega +5k\pi) + \pi \delta (\omega -5k\pi) \Big] X(ω)=πi=11k2[δ(ω+5kπ)+δ(ω5kπ)] X(\omega) = \pi \sum_{i=1}^{\infty} \frac{1}{k^2} \Big[\delta (\omega +5k\pi) +\delta (\omega -5k\pi) \Big]

Para el caso de la función de transferencia H(ω) que representa un filtro pasabajo LPF,3E2016TI Tema2 Diagrama 02

H(ω)=F[cos(11πt)πt]=p11π(ω) H(\omega) = \mathscr{F} \Big[\frac{\cos (11 \pi t)}{\pi t} \Big] = p_{11\pi}(\omega) 11π<ω<11π -11\pi \lt \omega \lt 11\pi M(ω)=X(ω)H(ω) M(\omega) = X( \omega ) H( \omega ) =p11π(ω)i=11k2π[δ(ω+5kπ)+δ(ω5kπ)] = p_{11\pi}(\omega) \sum_{i=1}^{\infty} \frac{1}{k^2} \pi\Big[\delta (\omega +5k\pi) +\delta (\omega -5k\pi) \Big]

por el filtro pasabajo  LPF se limitan las señales hasta k=2

=i=121k2π[δ(ω+5kπ)+δ(ω5kπ)] = \sum_{i=1}^{2} \frac{1}{k^2} \pi\Big[\delta (\omega +5k\pi) +\delta (\omega -5k\pi) \Big] =π112[δ(ω+5π)+δ(ω5π)] = \pi \frac{1}{1^2} \Big[\delta (\omega +5\pi) +\delta (\omega -5\pi) \Big] +π122[δ(ω+5(2)π)+δ(ω5(2)π)] + \pi \frac{1}{2^2} \Big[\delta (\omega +5(2)\pi) +\delta (\omega -5(2)\pi) \Big] =πδ(ω+5π)+πδ(ω5π) = \pi \delta (\omega +5\pi) +\pi \delta (\omega -5\pi) +π4δ(ω+10π)+π4δ(ω10π) + \frac{\pi}{4} \delta (\omega +10\pi) +\frac{\pi}{4} \delta (\omega -10\pi)

c. Determinar, esquematizar y etiquetar el espectro de Fourier de la señal n(t). Es decir N(ω) vs ω

N(ω)=G(ω)H(ω) N(\omega) = G( \omega ) H( \omega ) N(ω)=G(ω)F[k=110cos(8kπt)] N(\omega) = G( \omega ) \mathscr{F} \Big[\sum_{k=1}^{10} \cos (8k \pi t) \Big] =p11π(ω)i=110π[δ(ω+8kπ)+δ(ω8kπ)] = p_{11\pi}(\omega) \sum_{i=1}^{10} \pi\Big[\delta (\omega +8k\pi) +\delta (\omega -8k\pi) \Big]

por el filtro pasabajo LPF se limitan las señales hasta k=1

=πi=11[δ(ω+8kπ)+δ(ω8kπ)] = \pi \sum_{i=1}^{1} \Big[\delta (\omega +8k\pi) +\delta (\omega -8k\pi) \Big] =π[δ(ω+8π)+δ(ω8π)] = \pi \Big[\delta (\omega +8\pi) +\delta (\omega -8\pi) \Big] =πδ(ω+8π)+πδ(ω8π) = \pi \delta (\omega +8\pi) + \pi\delta (\omega -8\pi)

d. Determinar la potencia de la señal de salida y(t) y la representación de su espectro de Series de Fourier complejas exponenciales. Indique también el orden de los armónicos que están presentes en dicha salida.

Z(ω)=F[m(t)n(t)]=12πM(ω)N(ω)] Z(\omega) = \mathscr{F}[m(t) n(t)] = \frac{1}{2 \pi} M(\omega) \circledast N(\omega)] =12π[πδ(ω+5π)+πδ(ω5π)+ = \frac{1}{2 \pi} \Big[\pi \delta (\omega +5\pi) +\pi \delta (\omega -5\pi) + +π4δ(ω+10π)+π4δ(ω10π)][πδ(ω+8π)+πδ(ω8π)]+\frac{\pi}{4} \delta (\omega +10\pi) +\frac{\pi}{4} \delta (\omega -10\pi)\Big] \circledast \Big[ \pi \delta (\omega +8\pi) + \pi\delta (\omega -8\pi) \Big]

se obtiene factor común π,  para simplificar

Z(ω)=π22π[δ(ω+5π)+δ(ω5π)+ Z(\omega) = \frac{\pi^2}{2\pi} \Big[\delta (\omega +5\pi) + \delta (\omega -5\pi) + +14δ(ω+10π)+14δ(ω10π)][δ(ω+8π)+δ(ω8π)]+\frac{1}{4} \delta (\omega +10\pi) +\frac{1}{4} \delta (\omega -10\pi)\Big] \circledast \Big[ \delta (\omega +8\pi) + \delta (\omega -8\pi) \Big] =π2[δ(ω+5π+8π)+δ(ω5π+8π)+ = \frac{\pi}{2} \Big[\delta (\omega +5\pi+8\pi) + \delta (\omega -5\pi+8\pi) + +14δ(ω+10π+8π)+14δ(ω10π+8π) +\frac{1}{4} \delta (\omega +10\pi +8\pi) +\frac{1}{4} \delta (\omega -10\pi +8\pi) +δ(ω+5π8π)+δ(ω5π8π)+ +\delta (\omega +5\pi-8\pi) + \delta (\omega -5\pi-8\pi) + +14δ(ω+10π8π)+14δ(ω10π8π)] +\frac{1}{4} \delta (\omega +10\pi -8\pi) +\frac{1}{4} \delta (\omega -10\pi -8\pi) \Big] Z(ω)=π2[δ(ω+13π)+δ(ω+3π)+ Z(\omega) = \frac{\pi}{2} \Big[\delta (\omega +13\pi) + \delta (\omega +3\pi) + +14δ(ω+18π)+14δ(ω2π) +\frac{1}{4}\delta (\omega +18\pi) +\frac{1}{4} \delta (\omega -2\pi) +δ(ω3π)+δ(ω13π)+ + \delta (\omega -3\pi) + \delta (\omega -13\pi) + +14δ(ω+2π)+14δ(ω18π)] +\frac{1}{4} \delta (\omega +2\pi) +\frac{1}{4} \delta (\omega -18\pi)\Big]

d. Determinar la potencia de la señal de salida y(t) y la representación de su espectro de Series de Fourier complejas exponenciales. Indique también el orden de los armónicos que están presentes en dicha salida.

Y(ω)=Z(ω)H(ω)]=p11π(ω)Z(ω) Y(\omega) = Z(\omega) H(\omega)] = p_{11\pi}(\omega)Z(\omega)

Las frecuencias superiores a 11ω no pasan por el filtro LPF

Z(ω)=π2[δ(ω+13π)+δ(ω+3π)+ Z(\omega) = \frac{\pi}{2} \Big[\cancel{\delta (\omega +13\pi)} + \delta (\omega +3\pi) + +14δ(ω+18π)+14δ(ω2π) +\cancel{\frac{1}{4}\delta (\omega +18\pi)} +\frac{1}{4} \delta (\omega -2\pi) +δ(ω3π)+δ(ω13π)+ + \delta (\omega -3\pi) + \cancel{\delta (\omega -13\pi)} + +14δ(ω+2π)+14δ(ω18π)] +\frac{1}{4} \delta (\omega +2\pi) +\cancel{\frac{1}{4} \delta (\omega -18\pi)}\Big] Y(ω)=π2[δ(ω+3π)+δ(ω3π)+ Y(\omega)= \frac{\pi}{2} \Big[\delta (\omega +3\pi) + \delta (\omega -3\pi) + +14δ(ω+2π)+14δ(ω2π)] +\frac{1}{4} \delta (\omega +2\pi) + \frac{1}{4} \delta (\omega -2\pi)\Big] Y(ω)=π2δ(ω+3π)+π2δ(ω3π)+ Y(\omega)= \frac{\pi}{2}\delta (\omega +3\pi) + \frac{\pi}{2}\delta (\omega -3\pi) + +π8δ(ω+2π)+π8δ(ω2π) +\frac{\pi}{8} \delta (\omega +2\pi) + \frac{\pi}{8} \delta (\omega -2\pi)

ordenando y agrupando para obtener la inversa de la transformada,

Y(ω)=18π[δ(ω+2π)+δ(ω2π)] Y(\omega)= \frac{1}{8} \pi \Big[ \delta (\omega +2\pi) + \delta (\omega -2\pi) \Big] +12π[δ(ω+3π)+δ(ω3π)] +\frac{1}{2} \pi\Big[\delta (\omega +3\pi) + \delta (\omega -3\pi) \Big]

 

3E2016TI Tema2 Diagrama05

y(t)=F1[Y(ω)] y(t) = \mathscr{F}^{-1}\Big[ Y(\omega) \Big] y(t)=18cos(2πt)+12cos(3πt) y(t) = \frac{1}{8}\cos (2 \pi t) + \frac{1}{2}\cos (3 \pi t)

para determinar las frecuencias fundamentales de y(t) se tiene:

ω1=2πf=2πT1=2π \omega_1 = 2\pi f = \frac{2\pi}{T_1} =2 \pi T1=2π2π=1 T_1 = \frac{2\pi}{2\pi} =1 ω2=2πf=2πT2=3π \omega_2 = 2\pi f = \frac{2\pi}{T_2} =3 \pi T2=2π3π=23 T_2 = \frac{2\pi}{3\pi} = \frac{2}{3} T1T2=12/3=32 \frac{T_1}{T_2} = \frac{1}{2/3} =\frac{3}{2}

la relación entre los periodos fundamentales es racional, se tiene que la señal de salida y(t) es periódica.

2T1=3T2=T0 2T_1 = 3T_2 =T_0 2(1)=323=2=T0 2(1) = 3 \frac{2}{3} = 2 =T_0 ω0=2πT0=2π2=π \omega_0 = \frac{2\pi}{T_0} =\frac{2\pi}{2} = \pi

los armónicos se pueden obtener observando la gráfica de y(ω):

k1 = 2, k2=3

para la potencia de la señal de salida y(t) se puede aplicar la relación de Parseval, siendo Ck los coeficientes de cada cos() para cada ωk, y C0 es cero por no tener componente en ω0

Py(t)=Co2+12k=1Ck2 P_{y(t)} = C_o^2 + \frac{1}{2} \sum_{k=1}^{\infty} |C_k|^2 =(0)2+12[(18)2+(12)2] =(0)^2 + \frac{1}{2} \Big[ \Big(\frac{1}{8}\Big)^2 + \Big( \frac{1}{2}\Big) ^2 \Big] =(0)2+12[164+14]=12(14)[116+1] =(0)^2 + \frac{1}{2} \Big[ \frac{1}{64} +\frac{1}{4} \Big] = \frac{1}{2}\Big(\frac{1}{4}\Big) \Big[ \frac{1}{16} +1 \Big] =181716=17128 = \frac{1}{8} \frac{17}{16} = \frac{17}{128}

 

s2Eva2016TII_T4 resolver en dominio de frecuencia

Ejercicio: 2Eva2016TII_T4 resolver en dominio de frecuencia

Partiendo de,

y(t)=x(t)h(t) y(t) = x(t) \circledast h(t) Y(ω)=X(ω)H(ω) Y(\omega) = X(\omega) H(\omega) Y(ω3)=X(ω3)H(ω3) Y\Big(\frac{\omega}{3}\Big) = X\Big(\frac{\omega}{3}\Big) H\Big(\frac{\omega}{3}\Big)

se tiene también que:

g(t)=x(3t)h(3t) g(t) = x(3t) \circledast h(3t) G(ω)=13X(ω3) 13H(ω3) G(\omega) = \frac{1}{3}X\Big(\frac{\omega}{3}\Big)\text{ } \frac{1}{3}H\Big(\frac{\omega}{3}\Big) =19X(ω3)H(ω3)=19Y(ω3) = \frac{1}{9}X\Big(\frac{\omega}{3}\Big)H\Big(\frac{\omega}{3}\Big) = \frac{1}{9}Y\Big(\frac{\omega}{3}\Big) G(ω)=13[13Y(ω3)] G(\omega) = \frac{1}{3} \Bigg[\frac{1}{3}Y\Big(\frac{\omega}{3}\Big)\Bigg] g(t)=13y(3t) g(t) = \frac{1}{3} y(3t)

A = 1/3
B = 3

 

s2Eva2016TII_T3 LTI DT sistemas en serie

Ejercicio: 2Eva2016TII_T3 LTI DT sistemas en serie

literal a

S1:w[n]=12w[n1]+x[n] S1: w[n] = \frac{1}{2}w[n-1] + x[n] S2:y[n]=αy[n1]+βw[n] S2: y[n] = \alpha y[n-1] + \beta w[n] SG:y[n]=18y[n2]+34y[n1]+x[n] SG: y[n] = -\frac{1}{8}y[n-2] + \frac{3}{4}y[n-1]+x[n]

usando transformada z:

S1:

W(z)=12z1W(z)+X(z) W(z) = \frac{1}{2} z^{-1} W(z) + X(z) W(z)12z1W(z)=X(z) W(z) - \frac{1}{2} z^{-1} W(z) = X(z) W(z)[112z1]=X(z) W(z)\Big[1 - \frac{1}{2} z^{-1} \Big] = X(z) W(z)=X(z)[112z1] W(z) = \frac{ X(z)}{\Big[1 - \frac{1}{2} z^{-1} \Big]}

S2:

Y(z)=αz1Y(z)+βW(z) Y(z) = \alpha z^{-1} Y(z) + \beta W(z) Y(z)αz1Y(z)=βW(z) Y(z) - \alpha z^{-1} Y(z) = \beta W(z) Y(z)[1αz1]=βW(z) Y(z) \Big[1 - \alpha z^{-1} \Big] = \beta W(z)

sustituyendo la ecuacion de S1 para W(z)

Y(z)[1αz1]=βX(z)[112z1] Y(z) \Big[1 - \alpha z^{-1} \Big] = \beta \frac{ X(z)}{\Big[1 - \frac{1}{2} z^{-1} \Big]} Y(z)1β[1αz1][112z1]=X(z) Y(z) \frac{1}{\beta} \Big[1 - \alpha z^{-1} \Big]\Big[1 - \frac{1}{2} z^{-1} \Big] = X(z) Y(z)[1β1/2+αβz1+12αβz2]=X(z) Y(z) \Big[ \frac{1}{\beta} - \frac{1/2+\alpha}{\beta} z^{-1}+ \frac{1}{2} \frac{\alpha}{\beta} z^{-2}\Big]= X(z)

SG:

Y(z)=18z2Y(z)+34z1Y(z)+X(z) Y(z) = -\frac{1}{8} z^{-2} Y(z) + \frac{3}{4} z^{-1}Y(z)+X(z) Y(z)+18z2Y(z)34z1Y(z)=X(z) Y(z)+\frac{1}{8} z^{-2} Y(z) - \frac{3}{4} z^{-1}Y(z) = X(z) Y(z)[134z1+18z2]=X(z) Y(z)\big[ 1 - \frac{3}{4} z^{-1} +\frac{1}{8} z^{-2} \Big] = X(z)

comparando con la ecuación de S2

1β=1 \frac{1}{\beta} = 1 β=1 \beta = 1 12αβ=18 \frac{1}{2} \frac{\alpha}{\beta} = \frac{1}{8} α=2β8=14 \alpha = \frac{2\beta}{8} = \frac{1}{4}

comprobar con

1/2+αβ=34 - \frac{1/2+\alpha}{\beta} = \frac{3}{4}

se confirma que  α = 1/4 y β=1

la función de transferencia es:

Y(z)[134z1+18z2]=X(z) Y(z)\Big[ 1 - \frac{3}{4} z^{-1} +\frac{1}{8} z^{-2} \Big] = X(z) Y(z)X(z)=1[134z1+18z2] \frac{Y(z)}{X(z)} = \frac{1}{\Big[ 1 - \frac{3}{4} z^{-1} +\frac{1}{8} z^{-2} \Big]} H(z)=z2z234z+18 H(z) = \frac{z^2}{z^2 - \frac{3}{4} z +\frac{1}{8}} H(z)z=zz234z+18 \frac{H(z)}{z} = \frac{z}{z^2 - \frac{3}{4} z +\frac{1}{8}}

usando las raices para:

z234z+18=[z14][z12] z^2 - \frac{3}{4} z +\frac{1}{8} = \Big[ z-\frac{1}{4}\Big] \Big[z-\frac{1}{2}\Big]

y la parte derecha de la ecuación:

z[z14][z12]=C1z14+C2z12 \frac{z}{\Big[ z-\frac{1}{4}\Big] \Big[z-\frac{1}{2}\Big]} = \frac{C_1}{z-\frac{1}{4}}+\frac{C_2}{z-\frac{1}{2}}

despejando para C1 y haciendo z=1/4,

C1=z[z12]=14[1412]=1 C_1 = \frac{z}{\Big[z-\frac{1}{2}\Big]} = \frac{\frac{1}{4}}{\Big[\frac{1}{4}-\frac{1}{2}\Big]} = -1

despejando para C2 y haciendo z=1/2,

C2=z[z14]=12[1214]=2 C_2 = \frac{z}{\Big[z-\frac{1}{4}\Big]} = \frac{\frac{1}{2}}{\Big[\frac{1}{2}-\frac{1}{4}\Big]} = 2

se H(z) se resume en,

H(z)=zz14+2zz12 H(z) = - \frac{z}{z - \frac{1}{4}} +2\frac{z}{z-\frac{1}{2}}

Para obtener h[n] usando la antitransformada,

h[n]=z1[H(z)] h[n]=z^{-1} \Big[ H(z) \Big] h[n]=z1[zz14+2zz12] h[n]=z^{-1} \Big[- \frac{z}{z - \frac{1}{4}} +2\frac{z}{z-\frac{1}{2}} \Big] h[n]=2[12]nμ[n]+[14]nμ[n] h[n]= 2 \Big[ \frac{1}{2}\Big]^n \mu [n] + \Big[ \frac{1}{4}\Big]^n \mu [n] h[n]=[2[12]n[14]n]μ[n] h[n]= \Bigg[ 2 \Big[ \frac{1}{2}\Big]^n - \Big[ \frac{1}{4}\Big]^n \Bigg] \mu [n]

siendo la forma de la respuesta un impulso, es un sistema IIR.


Algoritmo en Python

Usando la expresión H(z) se obtiene:

 Hz:
      2     
     z      
------------
 2   3*z   1
z  - --- + -
      4    8

 Hz en fracciones parciales
     z        2*z  
- ------- + -------
  z - 1/4   z - 1/2

 Hz en factores
          2         
         z          
--------------------
(z - 0.5)*(z - 0.25)

 {Q_polos:veces}: {1/2: 1, 1/4: 1}
 {P_ceros:veces}: {0: 2}

estabilidad asintótica en z:
circ1_dentro : 2
circ1_repetidos : 0
circ1_sobre : 0
circ1_fuera : 0
unicos : 2
repetidos : 0
asintota : estable

 h[n]:
/      n        n\             
\- 0.25  + 2*0.5 /*Heaviside(n)
>>> 

2Eva2016TII_T3 graf Hz polos

2Eva2016TII_T3 graf Hz polos02

añadiendo instrucciones para graficar h[n] se obtiene

señal discreta h[n]
n   : [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
h[n]: [1.         0.75       0.4375     0.234375   0.12109375
       0.06152344 0.03100586 0.01556396 0.00779724 0.00390244]

2Eva2016TII_T3 graf Hzpolos03

Instrucciones en Python

strong>Nota: cuando se produzca el siguiente error con Numpy para evaluar una expresión con exponente negativo,

Traceback (most recent call last):
  File "D:\MATG1052Ejemplos\Transformadaz\ejercicio....py", line 93, in 
    fi  = f_n(ki)
  File "", line 2, in _lambdifygenerated
    return (9/59)*4**(-n)*Heaviside(n, 1/2)
ValueError: Integers to negative integer powers are not allowed.

proceda actualizando los valores a evaluar como tipo real (dtype float), tan solo usando en la línea de ki con lo siguiente:

ki  = np.arange(0,muestras_fn,1.0)

quedando las instrucciones de la siguiente forma, que si evalua valores para realizar gráficas.

# Transformada z- Fracciones parciales
# https://blog.espol.edu.ec/telg1001/lti-dt-transformada-z-xz-fracciones-parciales-con-python/
import numpy as np
import sympy as sym
import matplotlib.pyplot as plt
import telg1001 as fcnm
#sym.SYMPY_DEBUG=True

# INGRESO
z = sym.Symbol('z')
n = sym.Symbol('n', real=True)

# coeficientes como racional en dominio 'ZZ' enteros
a0 = sym.Rational(3,4)
a1 = sym.Rational(1,8)

Pz = z**2
Qz = z**2-a0*z+a1

#Pz = z*z**2
#Qz = (z-1)*(z**2-(a0)*z+a1)

F = Pz/Qz

# para graficar
f_nombre = 'H'    # nombre de función[z]: H,X,Y, etc
muestras_fn = 10  # muestras para f[n]

# PROCEDIMIENTO
Fz  = fcnm.apart_z(F)
Fz_factor = sym.factor(F.evalf())
Fz_factor = fcnm._round_float_is_int(Fz_factor)

# polos y ceros de Hz
[P,Q] = Fz.as_numer_denom()
P = sym.poly(P,z)
Q = sym.poly(Q,z)
P_ceros = sym.roots(P)
Q_polos = sym.roots(Q)

estable_z = fcnm.estabilidad_asintotica_z(Q_polos)

# Inversa de transformada z
fn = 0*n ; Fz_revisar = [] ; Qz2_term =[]
term_sum = sym.Add.make_args(Fz)
for term_k in term_sum:
    term_kn = fcnm.inverse_z_transform(term_k,z,n)
    if type(term_kn)==tuple:
        fn = fn + term_kn[0]
    elif term_kn is not None:
        fn = fn + term_kn
    elif term_kn is None:
        f_noeval = f_noeval + term_k
    Qz2 = fcnm.Q_cuad_z_parametros(term_k)
    if Qz2:
        Qz2_term.append(Qz2)
fn = fn.collect(sym.Heaviside(n))
fn = fn.collect(sym.DiracDelta(n))
fn = fcnm._round_float_is_int(fn)

# SALIDA
print('\n '+f_nombre+'z:')
sym.pprint(F)
print('\n '+f_nombre+'z en fracciones parciales')
sym.pprint(Fz)
print('\n '+f_nombre+'z en factores')
sym.pprint(Fz_factor)
print('\n {Q_polos:veces}:',Q_polos)
print(' {P_ceros:veces}:',P_ceros)
if len(Qz2_term)>0:
    print('\nparametros cuadraticos: ')
    for i in range(0,len(Qz2_term),1):
        for unterm in Qz2_term[i]:
            print(' termino:',unterm)
            fcnm.print_resultado_dict(Qz2_term[i][unterm])
print('\nestabilidad asintótica en z:')
fcnm.print_resultado_dict(estable_z)
print('\n '+f_nombre.lower()+'[n]:')
sym.pprint(fn)
if len(Fz_revisar)>0:
    print('revisar terminos sin transformada de tabla:')
    for un_term in Fz_revisar:
        print(un_term)

# # GRAFICA  -----------
fig_ROC = fcnm.graficar_Fz_polos(Fz_factor,Q_polos,P_ceros,
                      muestras=101,f_nombre=f_nombre)

fig_Fz = fcnm.graficar_Fs(Fz_factor,Q_polos,P_ceros,
                     muestras=101,
                     f_nombre=f_nombre)

# graficar f[n] -------
f_n = sym.lambdify(n,fn.expand(),modules=fcnm.equivalentes)
ki  = np.arange(0,muestras_fn,1.0)
fi  = f_n(ki)

print('\nseñal discreta '+f_nombre.lower()+'[n]')
print('n   :',ki)
print(f_nombre.lower()+'[n]:',fi)

# graficar f[n]
fig_fn, grafxn = plt.subplots()
plt.axvline(0,color='grey')
plt.stem(ki,fi)
plt.grid()
plt.xlabel('n')
plt.ylabel(f_nombre.lower()+'[n]')
etiqueta = r''+f_nombre.lower()+'[n]= $'+str(sym.latex(fn))+'$'
plt.title(etiqueta)

plt.show()

 


Literal c

revisando los polos y ceros:

ceros : z = 0  y z = 0
polos: z=1/4 y z=1/2

Dado que todos los polos se encuentran dentro del círculo de radio unitario , el sistema es asintóticamente estable, por lo que es BIBO o EASA estable

literal d

S(z)=[zz1]z2z234z+18 S(z) = \Big[ \frac{z}{z-1} \Big] \frac{z^2}{z^2-\frac{3}{4}z + \frac{1}{8}} S(z)=z3(z1)(z1/4)(z1/2) S(z) = \frac{z^3}{(z-1)(z-1/4)(z-1/2)}

aplicando el mismo método anterior, se tiene:

# coeficientes como racional en dominio 'ZZ' enteros
a0 = sym.Rational(3.4)
a1 = sym.Rational(1,8)

Pz = z*z**2
Qz = (z-1)*(z**2-(a0)*z+a1)
F = Pz/Qz

# para graficar
f_nombre = 'S'    # nombre de función[z]: H,X,Y, etc
muestras_fn = 10  # muestras para f[n]

con resultado:

 Sz:
           3          
          z           
----------------------
        / 2   3*z   1\
(z - 1)*|z  - --- + -|
        \      4    8/

 Sz en fracciones parciales
     z          2*z        8*z   
----------- - ------- + ---------
3*(z - 1/4)   z - 1/2   3*(z - 1)

 Sz en factores
              3             
             z              
----------------------------
(z - 1)*(z - 0.5)*(z - 0.25)

 {Q_polos:veces}: {1: 1, 1/2: 1, 1/4: 1}
 {P_ceros:veces}: {0: 3}

 s[n]:
/    n             \             
|0.25         n   8|             
|----- - 2*0.5  + -|*Heaviside(n)
\  3              3/             
S(z)=13zz1/42zz1/2+83zz1 S(z) = \frac{1}{3}\frac{z}{z-1/4} -2\frac{z}{z-1/2} + \frac{8}{3}\frac{z}{z-1}

aplicando la transformada inversa

s(n)=[13[14]n2[12]n+83]μ[n] s(n)= \Bigg[ \frac{1}{3}\Big[ \frac{1}{4} \Big]^n -2\Big[\frac{1}{2} \Big]^n + \frac{8}{3} \Bigg] \mu [n]
señal discreta s[n]
n   : [0 1 2 3 4 5 6 7 8 9]
h[n]: [1.         1.75       2.1875     2.421875   
 2.54296875 2.60449219 2.63549805 2.65106201 2.65885925
 2.66276169]

2Eva2016TII_T3 graf Hz polos03

2Eva2016TII_T3 graf Hz polos05

2Eva2016TII_T3 graf Hzpolos04

 

s2Eva2016TII_T2 LTI CT Circuito RC respuesta de frecuencia H(ω), impulso h(t)

Ejercicio: 2Eva2016TII_T2 LTI CT Circuito RC respuesta de frecuencia H(ω), impulso h(t)

literal a

v1(t)=vR(t)+vC(t) v_1 (t) = v_R (t) +v_C (t) v1(t)=Ri(t)+v2(t) v_1 (t) = R i(t) +v_2 (t) i(t)=Cδv2(t)δt i(t) = C \frac{\delta v_2 (t)}{\delta t} v2(t)=RCδv2(t)δt+v2(t) v_2(t) = RC \frac{\delta v_2 (t)}{\delta t} +v_2 (t) V1(ω)=jωRCV2(ω)+V2(ω)=V2(ω)[1+jωRC] V_1 (\omega) = j \omega RC V_2 (\omega) + V_2(\omega) = V_2(\omega) [1+j\omega RC] H(ω)=V2(ω)V1(ω)=11+jωRC=11+jωωc H(\omega) = \frac{V_2 (\omega)}{V_1(\omega)} = \frac{1}{1+j\omega RC} = \frac{1}{1+j\frac{\omega}{\omega_c}} ωc=1RC \omega _c = \frac{1}{RC} H(ω)=V2(ω)V1(ω)=11+jω2 H(\omega) =\frac{V_2(\omega)}{V_1(\omega)} = \frac{1}{1+j\frac{\omega}{2}} {H(ω)=11+(ω2)2θH(ω)=tg1(ω2) \begin{cases} |H(\omega) = \frac{1}{\sqrt{1+\big( \frac{\omega}{2}\big)^2}} \\ \theta_{H(\omega)} = -tg^{-1} \big( \frac{\omega}{2}\big) \end{cases} ωc=1RC \omega _c = \frac{1}{RC}

literal c

La respuesta impulso del filtro LPF, se obtiene mediante:

h(t)=F1[H(ω)]=F1[11+j(ω/2)] h(t) = \mathcal{F}^{-1} \Big[ H(\omega) \Big] = \mathcal{F}^{-1} \Big[ \frac{1}{1+j(\omega /2)} \Big] =2F1[1jω+2] =2\mathcal{F}^{-1} \Big[ \frac{1}{j\omega +2} \Big] h(t)=2e2tμ(t) h(t)=2e^{2t}\mu (t)

literal d

Método 1: usando la respuesta de frecuencia

{H(ω)=11+(ω2)2θH(ω)=tg1(ω2) \begin{cases} |H(\omega) = \frac{1}{\sqrt{1+\big( \frac{\omega}{2}\big)^2}} \\ \theta_{H(\omega)} = -tg^{-1} \big( \frac{\omega}{2}\big) \end{cases} {H(50)=11+(502)2=1(626)θH(ω)=tg1(502)=87.7 \begin{cases} |H(50) = \frac{1}{\sqrt{1+\big( \frac{50}{2}\big)^2}} = \frac{1}{\sqrt(626)} \\ \theta_{H(\omega)} = -tg^{-1} \big( \frac{50}{2}\big) = -87.7\end{cases} v2(t)=H(50)sin(50t+θH(50)) v_2(t) = |H(50)| \sin \big(50t+\theta_{H(50)} \big) v2(t)=1(626)sin(50t87.7)) v_2(t) = \frac{1}{\sqrt(626)} \sin \big(50t-87.7) \big)

método 2:

V2(ω)=V1(ω)H(ω) V_2(\omega ) = V_1(\omega) H(\omega) V1(ω)=F[v1(t)]=F[sin(50t)] V_1 (\omega) = \mathcal{F}[v_1(t) ] = \mathcal{F} [ \sin (50t) ] =jπδ(ω+50)jπδ(ω50) = j \pi \delta (\omega +50) - j \pi \delta (\omega-50) V2(ω)=V1(ω)H(ω) V_2 (\omega) = V_1(\omega) H(\omega) V2(ω)=[jπδ(ω+50)jπδ(ω50)][11+j(ω/2)] V_2 (\omega) = \Big[ j \pi \delta (\omega +50) - j \pi \delta (\omega-50) \Big] \Big[ \frac{1}{1+j(\omega/2)} \Big] =jπ[δ(ω+50)11+j(ω/2)δ(ω50)11+j(ω/2)] = j \pi \Big[ \delta (\omega + 50)\frac{1}{1+j(\omega /2)} - \delta (\omega - 50)\frac{1}{1+j(\omega /2)}\Big] =jπ[δ(ω+50)11+j(50/2)δ(ω50)11+j(50/2)] = j \pi \Big[ \delta (\omega + 50)\frac{1}{1+j(50 /2)} - \delta (\omega - 50)\frac{1}{1+j(50 /2)}\Big] =jπ[δ(ω+50)1+j25626δ(ω50)1j25626] = j \pi \Big[ \delta (\omega + 50)\frac{1+j25}{626} - \delta (\omega - 50)\frac{1-j25}{626}\Big] =jπ626[δ(ω+50)δ(ω50)+j25δ(ω+50)+j25δ(ω50)] = j \frac{\pi}{626} \Big[ \delta (\omega + 50) - \delta (\omega - 50) + j25 \delta (\omega + 50) + j25 \delta (\omega - 50)\Big] =1626[jπδ(ω+50)jπδ(ω50)]25626[πδ(ω+50)+πδ(ω50)] = \frac{1}{626} \Big[ j\pi \delta (\omega + 50) - j \pi \delta(\omega - 50)\Big] - \frac{25}{626} \Big[ \pi \delta (\omega + 50) +\pi \delta(\omega - 50)\Big] v2(t)=F1[V2(ω)] v_2(t) = \mathcal{F}^{-1} [V_2 (\omega)] =1626F1[[jπδ(ω+50)jπδ(ω50)]25[πδ(ω+50)+πδ(ω50)]] = \frac{1}{626} \mathcal{F}^{-1}\Bigg[ \Big[ j\pi \delta (\omega + 50) - j \pi \delta(\omega - 50)\Big] - 25 \Big[ \pi \delta (\omega + 50) +\pi \delta(\omega - 50)\Big] \Bigg] v2(t)=1626[sin(50t)25cos(50t)] v_2(t) = \frac{1}{626} \Big[ \sin (50t) - 25 \cos (50t) \Big]

usando fasores:

v2(t)=1626cos(50t177.709)=1626sin(50t87.70) v_2(t) = \frac{1}{626} \cos (50t-177.709) = \frac{1}{626} \sin (50t-87.70)

En la salida, existe un factor de atenuación de 0.04 y un retardo de 87.70°.
Como la señal de entrada se reproduce de manera exacta en su salida a pesar tener amplitud diferente y un retardo en el tiempo.

s2Eva2012TI_T3 LTI DT causal, coeficientes de respuesta impulso h[n]

Ejercicio: 2Eva2012TI_T3 LTI DT causal, coeficientes de respuesta impulso h[n]

La ecuación de diferencias descrita se usa para crear el diagrama de bloques.

y[n]54y[n1]+136y[n2]+118y[n3]=x[n]12x[n1] y[n] - \frac{5}{4} y[n-1] + \frac{1}{36} y[n-2] + \frac{1}{18} y[n-3] = x[n] - \frac{1}{2} x[n-1]

literal a. Respuesta impulso h[n]

La forma para usar transformadas z requiere que se desplazar tres unidades.

y[n+3]54y[n+2]+136y[n+1]+118y[n]=x[n+3]12x[n+2] y[n+3] - \frac{5}{4} y[n+2] + \frac{1}{36} y[n+1] + \frac{1}{18} y[n] = x[n+3] - \frac{1}{2} x[n+2] z3Y[z]54z2Y[z]+136zY[z]+118Y[z]=z3X[z]12z2X[z] z^3 Y[z] - \frac{5}{4} z^2 Y[z] + \frac{1}{36} z Y[z] + \frac{1}{18} Y[z] = z^3X[z] - \frac{1}{2} z^2 X[z] (z354z2+136z+118)Y[z]=(z312z2)X[z] (z^3 - \frac{5}{4} z^2 + \frac{1}{36} z + \frac{1}{18}) Y[z] = (z^3 - \frac{1}{2} z^2) X[z] H[z]=Y[z]X[z]=z312z2z354z2+136z+118 H[z] = \frac{Y[z]}{X[z]} = \frac{z^3 - \frac{1}{2} z^2}{z^3 - \frac{5}{4} z^2 + \frac{1}{36} z + \frac{1}{18}}

las raíces del denominador obtenidas con Sympy-Python:

>>> sym.roots(Pz)
{1/2: 1, 0: 2}
>>> sym.factor(Pz)
z**2*(2*z - 1)/2
>>> sym.factor(Qz)
(4*z - 1)*(9*z**2 - 9*z - 2)/36
>>> sym.roots(Qz)
{1/4: 1, 1/2 - sqrt(17)/6: 1, 1/2 + sqrt(17)/6: 1}
>>> 

Observación: existe una raíz con distancia al origen superior al radio=1, por lo que habría un termino creciente no acotado.

2Eva2012TI_T3 graf Hz polos01

que se observa también como:

2Eva2012TI_T3 graf Hz polos02

El modelo se puede plantear como:

H[z]=z2(z12)(z14)(z2z29) H[z] = \frac{z^2\Big(z-\frac{1}{2}\Big)}{\Big(z-\frac{1}{4}\Big)\Big(z^2-z-\frac{2}{9}\Big)}

para usar fracciones parciales modificadas, se multiplica cada lado por 1/z:

H[z]z=z(z12)(z14)(z2z29) \frac{H[z]}{z} = \frac{z\Big(z-\frac{1}{2}\Big)}{\Big(z-\frac{1}{4}\Big)\Big(z^2-z-\frac{2}{9}\Big)}

Se puede plantear un modelo de respuesta por cada raíz como:

H[z]z=k1z14+k2z+k3z2z29 \frac{H[z]}{z} = \frac{k1}{z-\frac{1}{4}}+\frac{k_2 z +k_3}{z^2-z-\frac{2}{9}}

usando el método de Heaviside,

k1=z(z12)(z14)(z2z29)z=14 k_1 = \frac{z\Big(z-\frac{1}{2}\Big)}{\cancel{\Big(z-\frac{1}{4}\Big)}\Big(z^2-z-\frac{2}{9}\Big)}\Big|_{z=\frac{1}{4}} k1=14(1412)(1421429) k_1 = \frac{\frac{1}{4}\Big(\frac{1}{4}-\frac{1}{2}\Big)}{\Big(\frac{1}{4}^2-\frac{1}{4}-\frac{2}{9}\Big)} k1=1161(4)(9)(16)(9)(2)(16)(4)(16)(4)(9)=36236 k_1 = -\frac{1}{16}\frac{1}{\frac{(4)(9)-(16)(9)-(2)(16)(4)}{(16)(4)(9)}} =\frac{36}{236}

con lo que ahora en la expresión se convierte en:

H[z]z=z(z12)(z14)(z2z29)=36236z14+k2z+K3z2z29= \frac{H[z]}{z} = \frac{z\Big(z-\frac{1}{2}\Big)}{\Big(z-\frac{1}{4}\Big)\Big(z^2-z-\frac{2}{9}\Big)} =\frac{\frac{36}{236}}{z-\frac{1}{4}}+\frac{k_2 z +K_3}{z^2-z-\frac{2}{9}} =

Usando el método de los factores cuadráticos, se multiplica ambos lados por z y z→∞

H[z]zz=z2(z12)(z14)(z2z29)=36236zz14+zk2z+K3z2z29= \frac{H[z]}{z} z = \frac{z^2\Big(z-\frac{1}{2}\Big)}{\Big(z-\frac{1}{4}\Big)\Big(z^2-z-\frac{2}{9}\Big)} =\frac{\frac{36}{236}z}{z-\frac{1}{4}}+z\frac{k_2 z +K_3}{z^2-z-\frac{2}{9}} =

se divide numerador y denominador del lado izquierdo para 1/z3 y el lado derecho el primer termino 1/z y el segundo termino 1/z2

(1121z)(1141z)(11z291z2)=362361141z+k2+K31z11z291z \frac{\Big(1-\frac{1}{2}\frac{1}{z}\Big)}{\Big(1-\frac{1}{4}\frac{1}{z}\Big)\Big(1-\frac{1}{z}-\frac{2}{9}\frac{1}{z^2}\Big)} =\frac{\frac{36}{236}}{1-\frac{1}{4}\frac{1}{z}}+\frac{k_2 +K_3\frac{1}{z}}{1-\frac{1}{z}-\frac{2}{9}\frac{1}{z}}

y cuando z→∞

(112(0))(114(0))(1(0)29(0))=36236114(0)+k2+K3(0)1(0)29(0) \frac{\Big(1-\frac{1}{2}(0)\Big)}{\Big(1-\frac{1}{4}(0)\Big)\Big(1-(0)-\frac{2}{9}(0)\Big)} =\frac{\frac{36}{236}}{1-\frac{1}{4}(0)}+\frac{k_2 +K_3(0)}{1-(0)-\frac{2}{9}(0)} 1=36236+k2 1 =\frac{36}{236}+k_2 k2=136236=200236=5059 k_2 = 1-\frac{36}{236}=\frac{200}{236} = \frac{50}{59}

con lo que K2=50/59 , para encontrar K3 se usa un valor conveniente de z=0

H[0]=(0)((0)12)((0)14)((0)2(0)29)=36236(0)14+5059(0)+K3(0)2(0)29= H[0] = \frac{(0)\Big((0)-\frac{1}{2}\Big)}{\Big((0)-\frac{1}{4}\Big)\Big((0)^2-(0)-\frac{2}{9}\Big)} =\frac{\frac{36}{236}}{(0)-\frac{1}{4}}+\frac{\frac{50}{59}(0) +K_3}{(0)^2-(0)-\frac{2}{9}} = 0=3623614+K329= 0 =\frac{\frac{36}{236}}{-\frac{1}{4}}+\frac{K_3}{-\frac{2}{9}} = K3=293623614=42936236=859 K_3 = \frac{2}{9}\frac{\frac{36}{236}}{-\frac{1}{4}} = -4\frac{2}{9}\frac{36}{236} = -\frac{8}{59} H[z]z=362361z14+50/59z8/59z2z29= \frac{H[z]}{z} = \frac{36}{236}\frac{1}{z-\frac{1}{4}}+\frac{50/59 z -8/59}{z^2-z-\frac{2}{9}} = H[z]z=362361z14+25925z4z2z29 \frac{H[z]}{z} = \frac{36}{236}\frac{1}{z-\frac{1}{4}}+\frac{2}{59}\frac{25 z -4}{z^2-z-\frac{2}{9}}

y restaurando en fracciones parciales al multiplicar por z cada lado

H[z]=959zz14+259z(25z4)z2z29 H[z] = \frac{9}{59}\frac{z}{z-\frac{1}{4}}+\frac{2}{59}\frac{z(25 z -4)}{z^2-z-\frac{2}{9}}

los valores no se ajustan al modelo planteado en el enunciado, y existe un polo con radio>1, por lo que el sistema es creciente,y otro polo en posición r<0.

h[n]=aαnμ[n]+bβnμ[n]+cγnμ[n] h[n] = a \alpha^n \mu [n] + b \beta^n \mu[n] + c \gamma^n \mu [n]

obtenga entonces los valores pertinentes.

a= 9/59 = 0.1525 b= … creciente sin cota, con polo mayor a 1 c=… con polo negativo, lo que es un término con signo alternado.
α= 1/4 = 0.25 β = 1/2 + np.sqrt(17)/6 = 1.1871842709362768 γ = 1/2 – np.sqrt(17)/6 = -0.18718427093627676

Resultados iniciales con el algoritmo

Se encuentra que hay un término que no se puede usar para encontrar la transformada z.

 Hz:
            2      
       3   z       
      z  - --      
           2       
-------------------
        2          
 3   5*z    z    1 
z  - ---- + -- + --
      4     36   18

 Hz en fracciones parciales
50*z*(z - 4/25)       9*z     
--------------- + ------------
   / 2       2\   59*(z - 1/4)
59*|z  - z - -|               
   \         9/               

 Hz en factores
               2                       
              z *(z - 0.5)             
---------------------------------------
           / 2                        \
(z - 0.25)*\z  - z - 0.222222222222222/

 {Q_polos:veces}: {1/4: 1, 1/2 - sqrt(17)/6: 1, 1/2 + sqrt(17)/6: 1}
 {P_ceros:veces}: {1/2: 1, 0: 2}

parametros cuadraticos: 
 termino: 50*z*(z - 4/25)/(59*(z**2 - z - 2/9))
r : 120.72788283210394
gamma : None
beta : None
theta : None

estabilidad asintótica en z:
circ1_dentro : 2
circ1_repetidos : 0
circ1_sobre : 0
circ1_fuera : 1
unicos : 3
repetidos : 0
asintota : inestable

 h[n]:
   -n             
9*4  *Heaviside(n)
------------------
        59        
revisar terminos sin transformada de tabla:
50*z*(z - 4/25)/(59*(z**2 - z - 2/9))

señal discreta h[n]
n   : [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
h[n]: [1.52542373e-01 3.81355932e-02 9.53389831e-03 2.38347458e-03
 5.95868644e-04 1.48967161e-04 3.72417903e-05 9.31044756e-06
 2.32761189e-06 5.81902973e-07]

Instrucciones en Python

Desarrollo con las expresiones iniciales, sin corrección sobre los parámetros que se indican en el enunciado.

Nota: cuando se produzca el siguiente error con Numpy para evaluar una expresión con exponente negativo,

Traceback (most recent call last):
  File "D:\MATG1052Ejemplos\Transformadaz\ejercicio03.py", line 93, in 
    fi  = f_n(ki)
  File "", line 2, in _lambdifygenerated
    return (9/59)*4**(-n)*Heaviside(n, 1/2)
ValueError: Integers to negative integer powers are not allowed.

proceda actualizando los valores a evaluar como tipo real (dtype float), tan solo usando en la línea de ki con lo siguiente:

ki  = np.arange(0,muestras_fn,1.0)

quedando las instrucciones de la siguiente forma, que si evalúa valores para realizar gráficas.

# Transformada z- Fracciones parciales
# https://blog.espol.edu.ec/telg1001/lti-dt-transformada-z-xz-fracciones-parciales-con-python/
import numpy as np
import sympy as sym
import matplotlib.pyplot as plt
import telg1001 as fcnm
#sym.SYMPY_DEBUG=True

# INGRESO
z = sym.Symbol('z')
n = sym.Symbol('n', real=True)

# coeficientes como racional en dominio 'ZZ' enteros
a0 = sym.Rational(1,2)
a1 = sym.Rational(5,4)
a2 = sym.Rational(1,36)
a3 = sym.Rational(1,18)

Pz = z**3-a0*z**2
Qz = z**3-a1*z**2+a2*z+a3

F = Pz/Qz

# para graficar
f_nombre = 'H'    # nombre de función[z]: H,X,Y, etc
muestras_fn = 10  # muestras para f[n]

# PROCEDIMIENTO
Fz  = fcnm.apart_z(F)
Fz_factor = sym.factor(F.evalf())
Fz_factor = fcnm._round_float_is_int(Fz_factor)

# polos y ceros de Hz
[P,Q] = F.as_numer_denom()
P = sym.poly(P,z)
Q = sym.poly(Q,z)
P_ceros = sym.roots(P)
Q_polos = sym.roots(Q)

estable_z = fcnm.estabilidad_asintotica_z(Q_polos)

# Inversa de transformada z
fn = 0*n ; f_noeval = 0*n ; Qz2_term =[]
term_sum = sym.Add.make_args(Fz)
for term_k in term_sum:
    term_kn = fcnm.inverse_z_transform(term_k,z,n)
    if type(term_kn)==tuple:
        fn = fn + term_kn[0]
    elif term_kn is not None:
        fn = fn + term_kn
    elif term_kn is None:
        f_noeval = f_noeval + term_k
    Qz2 = fcnm.Q_cuad_z_parametros(term_k)
    if Qz2:
        Qz2_term.append(Qz2)
fn = fn.collect(sym.Heaviside(n))
fn = fn.collect(sym.DiracDelta(n))

# SALIDA
print('\n '+f_nombre+'z:')
sym.pprint(F)
print('\n '+f_nombre+'z en fracciones parciales')
sym.pprint(Fz)
print('\n '+f_nombre+'z en factores')
sym.pprint(Fz_factor)
print('\n {Q_polos:veces}:',Q_polos)
print(' {P_ceros:veces}:',P_ceros)
if len(Qz2_term)>0:
    print('\nparametros cuadraticos: ')
    for i in range(0,len(Qz2_term),1):
        for unterm in Qz2_term[i]:
            print(' termino:',unterm)
            fcnm.print_resultado_dict(Qz2_term[i][unterm])
print('\nestabilidad asintótica en z:')
fcnm.print_resultado_dict(estable_z)
print('\n '+f_nombre.lower()+'[n]:')
sym.pprint(fn)
if not f_noeval==sym.S.Zero:
    print('revisar terminos sin transformada de tabla:')
    print(f_noeval)

# # GRAFICA  -----------
fig_ROC = fcnm.graficar_Fz_polos(Fz_factor,Q_polos,P_ceros,
                      muestras=101,f_nombre=f_nombre)

fig_Fz = fcnm.graficar_Fs(Fz_factor,Q_polos,P_ceros,
                     muestras=101,
                     f_nombre=f_nombre)

# graficar f[n] -------
f_n = sym.lambdify(n,fn.expand(),modules=fcnm.equivalentes)
ki  = np.arange(0,muestras_fn,1.0)
fi  = f_n(ki)

print('\nseñal discreta '+f_nombre.lower()+'[n]')
print('n   :',ki)
print(f_nombre.lower()+'[n]:',fi)

# graficar f[n]
fig_fn, grafxn = plt.subplots()
plt.axvline(0,color='grey')
plt.stem(ki,fi)
plt.grid()
plt.xlabel('n')
plt.ylabel(f_nombre.lower()+'[n]')
etiqueta = r''+f_nombre.lower()+'[n]= $'+str(sym.latex(fn))+'$'
plt.title(etiqueta)

plt.show()

 

s2Eva2011TI_T2 LTI DT Determinar H[z] desde bloques

Ejercicio: 2Eva2011TI_T2 LTI DT Determinar H[z] desde bloques

literal a. expresión de la función de transferencia

El diagrama de bloques del enunciado se reordena de la siguiente forma:

El nuevo diagrama muestra que el sistema tiene dos sub-componentes en paralelo.

H[z]=(11/2)z+7z21z2+z292 H[z] = -\frac{(11/2)z +7}{z^2-1z-2} +\frac{z}{2} -\frac{9}{2}

como existen varios componentes, se pueden tratar de forma separada.

H[z]=H1[z]+z292 H[z] = H_1[z] +\frac{z}{2} -\frac{9}{2} H1[z]=(11/2)z+7z2z2 H_1[z] = -\frac{(11/2)z +7}{z^2-z-2}

los polos y ceros de H1

 {Q_polos:veces}: {2: 1, -1: 1}
 {P_ceros:veces}: {-14/11: 1}
H1[z]=(11/2)z+7(z2)(z+1) H_1[z] = -\frac{(11/2)z +7}{(z-2)(z+1)}

usando fracciones parciales modificadas

H1[z]z=(11/2)z+7z(z2)(z+1)=k1z+k2z2+k3z+1 \frac{H_1[z]}{z} = -\frac{(11/2)z +7}{z(z-2)(z+1)} = \frac{k_1}{z}+\frac{k_2}{z-2}+\frac{k_3}{z+1}

usando el algoritmo se tiene:

H1[z]z=72z3z212z+1 \frac{H_1[z]}{z} = \frac{\frac{7}{2}}{z}-\frac{3}{z-2}-\frac{\frac{1}{2}}{z+1}

restaurando a fracciones parciales, al multiplicar cada lado por z, se obtiene la función de transferencia H[z] completa como componentes en paralelo junto con H1

H1[z]=723zz212zz+1 H_1[z] = \frac{7}{2}-\frac{3z}{z-2}-\frac{1}{2}\frac{z}{z+1}

usando la tabla de transformadas z

h1[n]=72δ[n]3(2)nμ[n]12(1)nμ[n] h_1[n] = \frac{7}{2}\delta[n]-3(2)^n \mu[n] -\frac{1}{2}(-1)^n \mu[n]

Usando el algoritmo de la sección X[z] Fracciones parciales modificadas con Python para H1[z]

con entrada:

# coeficientes como racional en dominio 'ZZ' enteros
a0 = sym.Rational(11,2)

Pz = -(a0*z+7)
Qz = z**2-z-2

se obtiene:

 Hz:
  11*z    
- ---- - 7
   2      
----------
 2        
z  - z - 2

 Hz en fracciones parciales
      z        3*z    7
- --------- - ----- + -
  2*(z + 1)   z - 2   2

 Hz en factores
-3.5*(0.785714285714286*z + 1) 
-------------------------------
      (0.5*z - 1)*(z + 1)      

 {Q_polos:veces}: {2: 1, -1: 1}
 {P_ceros:veces}: {-14/11: 1}

estabilidad asintótica en z:
circ1_dentro : 0
circ1_repetidos : 0
circ1_sobre : 1
circ1_fuera : 1
unicos : 2
repetidos : 0
asintota : inestable

 h[n]:
/      n       \                               
|  (-1)       n|                7*DiracDelta(n)
|- ----- - 3*2 |*Heaviside(n) + ---------------
\    2         /                       2       

señal discreta h[n]
n   : [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
h[n]: [    0.     -5.5   -12.5   -23.5   -48.5
         -95.5  -192.5  -383.5  -768.5 -1535.5]

resultado que se completan con los términos de los otros componentes, al incorporar la expresión con los elementos en paralelo como se desarrolla en el siguiente literal.

2Eva2011TI_T2 graf Hz polos01

2Eva2011TI_T2 graf Hz polos02

Instrucciones en Python

# Transformada z- Fracciones parciales
# https://blog.espol.edu.ec/telg1001/lti-dt-transformada-z-xz-fracciones-parciales-con-python/
import numpy as np
import sympy as sym
import matplotlib.pyplot as plt
import telg1001 as fcnm
#sym.SYMPY_DEBUG=True

# INGRESO
z = sym.Symbol('z')
n = sym.Symbol('n', real=True)

# coeficientes como racional en dominio 'ZZ' enteros
a0 = sym.Rational(11,2).limit_denominator(100)

Pz = -(a0*z+7)
Qz = z**2-z-2
F = Pz/Qz

# para graficar
f_nombre = 'H'    # nombre de función[z]: H,X,Y, etc
muestras_fn = 10  # muestras para f[n]

# PROCEDIMIENTO
Fz  = fcnm.apart_z(F)
Fz_factor = sym.factor(F.evalf())

# polos y ceros de Hz
[P,Q] = F.as_numer_denom()
P = sym.poly(P,z)
Q = sym.poly(Q,z)
P_ceros = sym.roots(P)
Q_polos = sym.roots(Q)

estable_z = fcnm.estabilidad_asintotica_z(Q_polos)

# Inversa de transformada z
fn = 0*n ; Fz_revisar = [] ; Qz2_term =[]
term_sum = sym.Add.make_args(Fz)
for term_k in term_sum:
    term_kn = fcnm.inverse_z_transform(term_k,z,n)
    if type(term_kn)==tuple:
        fn = fn + term_kn[0]
    elif term_kn is not None:
        fn = fn + term_kn
    elif term_kn is None:
        f_noeval = f_noeval + term_k
    Qz2 = fcnm.Q_cuad_z_parametros(term_k)
    if Qz2:
        Qz2_term.append(Qz2)
fn = fn.collect(sym.Heaviside(n))
fn = fn.collect(sym.DiracDelta(n))
#fn = fcnm._round_float_is_int(fn)

# SALIDA
print('\n '+f_nombre+'z:')
sym.pprint(F)
print('\n '+f_nombre+'z en fracciones parciales')
sym.pprint(Fz)
print('\n '+f_nombre+'z en factores')
sym.pprint(Fz_factor)
print('\n {Q_polos:veces}:',Q_polos)
print(' {P_ceros:veces}:',P_ceros)
if len(Qz2_term)>0:
    print('\nparametros cuadraticos: ')
    for i in range(0,len(Qz2_term),1):
        for unterm in Qz2_term[i]:
            print(' termino:',unterm)
            fcnm.print_resultado_dict(Qz2_term[i][unterm])
print('\nestabilidad asintótica en z:')
fcnm.print_resultado_dict(estable_z)
print('\n '+f_nombre.lower()+'[n]:')
sym.pprint(fn)
if len(Fz_revisar)>0:
    print('revisar terminos sin transformada de tabla:')
    for un_term in Fz_revisar:
        print(un_term)

# # GRAFICA  -----------
fig_ROC = fcnm.graficar_Fz_polos(Fz_factor,Q_polos,P_ceros,
                      muestras=101,f_nombre=f_nombre)

fig_Fz = fcnm.graficar_Fs(Fz_factor,Q_polos,P_ceros,
                     muestras=101,
                     f_nombre=f_nombre)

# graficar f[n] -------
f_n = sym.lambdify(n,fn.expand(),modules=fcnm.equivalentes)
ki  = np.arange(0,muestras_fn,1.0)
fi  = f_n(ki)

print('\nseñal discreta '+f_nombre.lower()+'[n]')
print('n   :',ki)
print(f_nombre.lower()+'[n]:',fi)

# graficar f[n]
fig_fn, grafxn = plt.subplots()
plt.axvline(0,color='grey')
plt.stem(ki,fi)
plt.grid()
plt.xlabel('n')
plt.ylabel(f_nombre.lower()+'[n]')
etiqueta = r''+f_nombre.lower()+'[n]= $'+str(sym.latex(fn))+'$'
plt.title(etiqueta)

plt.show()

literal b. Ecuación de diferencias

Se realiza la conversión por la suma de cada componente (en paralelo):

Para y1[n]:

Y1[z]=H1[z]X[z]=[(11/2)z+7z2z2]X[z] Y_1[z] = H_1[z]X[z] = \Big[-\frac{(11/2)z +7}{z^2-z-2}\Big] X[z] Y1[z][z2z2]=(11/2)zX[z]7X[z] Y_1[z] [z^2-z-2]= -(11/2)zX[z] -7X[z] y![n+2]y1[n+1]2y1[n]=112x[n+1]7x[n] y_![n+2] - y_1[n+1] -2y_1[n] = -\frac{11}{2} x[n+1] -7x[n]

Para y2[n]:

Y2[z]=H2[z]X[z]=z2X[z] Y_2[z] = H_2[z]X[z] = \frac{z}{2}X[z] y2[n]=12x[n+1] y_2[n] = \frac{1}{2}x[n+1]

Para y3[n]:

Y3[z]=H3[z]X[z]=92X[z] Y_3[z] = H_3[z]X[z] = -\frac{9}{2} X[z] y3[n]=92x[n] y_3[n] = -\frac{9}{2} x[n]

se suman las expresiones obtenidas de Y1[z] + Y2[z]+Y3[z]

y[n+2]y[n+1]2y[n]+y[n]+y[n]= y[n+2] - y[n+1] -\cancel{2y[n]} +\cancel{y[n]} + \cancel{y[n]}= 112x[n+1]7x[n]+12x[n+1]92x[n] -\frac{11}{2} x[n+1] -7x[n] +\frac{1}{2}x[n+1]-\frac{9}{2} x[n]

la ecuación de diferencias simplificada es;

y[n+2]y[n+1]=5x[n+1]232x[n] y[n+2] - y[n+1] = -5 x[n+1] -\frac{23}{2} x[n]

El sistema global se puede reescribir nuevamente en z como

z2Y[z]zY[z]=5zX[z]232X[z] z^2Y[z] - zY[z] = -5 zX[z] -\frac{23}{2} X[z] z(z1)Y[z]=(5z232)X[z] z(z-1)Y[z] = (-5 z -\frac{23}{2}) X[z]

se tiene que el sistema tienen polos en 0 y 1, que se encuentran dentro del radio 1 del plano z.

literal d. Respuesta al impulso H[z]

H[z] se obtiene a partir de la última ecuación

H[z]=Y[z]H[z]=5z+232z(z1) H[z] = \frac{Y[z]}{H[z]} = -\frac{5 z +\frac{23}{2}}{z(z-1)}

aplicando fracciones parciales modificadas:

H[z]z=5z+232z2(z1) \frac{H[z]}{z} = -\frac{5 z +\frac{23}{2}}{z^2(z-1)} H[z]z=3321z+2321z23321z1 \frac{H[z]}{z} = \frac{33}{2} \frac{1}{z} +\frac{23}{2}\frac{1}{z^2} -\frac{33}{2} \frac{1}{z-1}

restaurando fracciones parciales al multiplicar por z

H[z]=332+2321z332zz1 H[z] = \frac{33}{2} +\frac{23}{2} \frac{1}{z} -\frac{33}{2} \frac{z}{z-1}

usando la tabla de transformada z se tiene:

h[n]=332δ[n]+232δ[n1]332μ[n] h[n] = \frac{33}{2}\delta [n] +\frac{23}{2} \delta [n-1] - \frac{33}{2} \mu[n]

usando el algoritmo con entrada:

# coeficientes como racional en dominio 'ZZ' enteros
a0 = sym.Rational(11,2)
a1 = sym.Rational(9,2)
a2 = sym.Rational(23,2)
#F = -(a0*z+7)/(z**2-z-2) + z/2 -a1
F = -(5*z+a2)/(z*(z-1))

se tiene como resultado:

 Hz:
-5*z - 23/2
-----------
 z*(z - 1) 

 Hz en fracciones parciales
  16.5*z          11.5
- ------ + 16.5 + ----
  z - 1            z  

 Hz en factores
-11.5*(0.434782608695652*z + 1) 
--------------------------------
           z*(z - 1)            

 {Q_polos:veces}: {1: 1, 0: 1}
 {P_ceros:veces}: {-2.30000000000000: 1}

estabilidad asintótica en z:
circ1_dentro : 1   circ1_repetidos : 0 
circ1_sobre : 1  circ1_fuera : 0
unicos : 2  repetidos : 0
asintota : marginalmente estable

 h[n]:
16.5*DiracDelta(n) + 11.5*DiracDelta(n - 1) - 16.5*Heaviside(n)

señal discreta h[n]
n   : [0. 1. 2. 3. 4. 5. 6.]
h[n]: [  0.   -5.  -16.5 -16.5 -16.5 -16.5 -16.5]

2Eva2011TI_T2 graf Hz polos03

2Eva2011TI_T2 graf Hz polos04

2Eva2011TI_T2 graf Hz polos05

s2Eva2010TI_T3 LTI CT simplificar H(s) por Bloques

Ejercicio: 2Eva2010TI_T3 LTI CT simplificar H(s) por Bloques

Se ubican algunos puntos de referencia sobre el diagrama de bloques para plantear las ecuaciones, dejando para el último el bloque en serie del exponencial e(-3s) o retraso en tiempo

W1(s)=X(s) W_1(s) = X(s) W2(s)=W1(s)6s+5W4(s) W_2(s) = W_1(s)-\frac{6}{s+5} W_4(s) W2(s)=X(s)6s+5W4(s) W_2(s) = X(s)- -\frac{6}{s+5} W_4(s) W3(s)=1sW2(s)=1s[X(s)6s+5W4(s)] W_3(s) = \frac{1}{s} W_2(s) = \frac{1}{s} \Big[ X(s) -\frac{6}{s+5} W_4(s) \Big] W3(s)=1sX(s)6s(s+5)W4(s) W_3(s) = \frac{1}{s} X(s) -\frac{6}{s(s+5)} W_4(s) W4(s)=W3(s)+1s+4X(s) W_4(s) = W_3(s) +\frac{1}{s+4}X(s)

Se plantea la simplificación de H(s) =W4(s)/X(s), dejando el término exponencial o retraso de tiempo para el final. Por lo que se despeja W4(s)

W4(s)=1sX(s)6s(s+5)W4(s)+1s+4X(s) W_4(s) = \frac{1}{s} X(s) -\frac{6}{s(s+5)} W_4(s) +\frac{1}{s+4}X(s) W4(s)+6s(s+5)W4(s)=1sX(s)+1s+4X(s) W_4(s) +\frac{6}{s(s+5)} W_4(s) = \frac{1}{s} X(s) +\frac{1}{s+4}X(s) [1+6s(s+5)]W4(s)=[1s+1s+4]X(s) \Big[1 +\frac{6}{s(s+5)}\Big] W_4(s) = \Big[ \frac{1}{s} +\frac{1}{s+4} \Big] X(s) s(s+5)+6s(s+5)W4(s)=(s+4)+ss(s+4)X(s) \frac{s(s+5)+6}{s(s+5)} W_4(s) = \frac{(s+4)+s}{s(s+4)} X(s) s2+5s+6s+5W4(s)=2(s+2)s+4X(s) \frac{s^2+5s+6}{s+5} W_4(s) = \frac{2(s+2)}{s+4} X(s) (s+2)(s+3)s+5W4(s)=2(s+2)s+4X(s) \frac{(s+2)(s+3)}{s+5} W_4(s) = \frac{2(s+2)}{s+4} X(s) s+3s+5W4(s)=2s+4X(s) \frac{s+3}{s+5} W_4(s) = \frac{2}{s+4} X(s) W4(s)X(s)=2(s+5)(s+4)(s+3) \frac{W_4(s)}{X(s)} = \frac{2(s+5)}{(s+4)(s+3)}

La respuesta al impulso H1(s) tiene polos en s=-3 y s=-4, que se encuentran en el lado izquierdo del plano imaginario s. Por lo que sus componentes en el dominio del tiempo son exponenciales decrecientes, el sistema es asintóticamente estable.

El grado del polinomio P del numerador es menor al grado del polinomio Q del numerador.

Separando en fracciones parciales para H1(s) :

H1(s)=2(s+5)(s+4)(s+3) H_1(s) =\frac{2(s+5)}{(s+4)(s+3)} H1(s)=k1s+4+k2s+3= H_1(s) = \frac{k_1}{s+4} +\frac{k_2}{s+3} = k1=2(s+5)(s+4)(s+3)s=4=2(4+5)(4+3)=2(1)1=2 k_1 =\frac{2(s+5)}{\cancel{(s+4)}(s+3)}\Bigg|_{s=-4} = \frac{2(-4+5)}{(-4+3)} = \frac{2(1)}{-1} = -2 k2=2(s+5)(s+4)(s+3)s=3=2(3+5)(3+4)=2(2)1=4 k_2 =\frac{2(s+5)}{(s+4)\cancel{(s+3)}} \Bigg|_{s=-3} = \frac{2(-3+5)}{(-3+4)} = \frac{2(2)}{1} = 4 H1(s)=2s+4+4s+3= H_1(s) = -\frac{2}{s+4} +\frac{4}{s+3} =

Finalmente, añadiendo el término exponencial, que es el retraso en tiempo del sistema:

H(s)=[2s+4+4s+3]e3s H(s) = \Big[-\frac{2}{s+4} +\frac{4}{s+3} \Big] e^{-3s}

s2Eva2010TI_T3 polos

se observa el comportamiento de H(s) junto a los polos en la parte real e imaginaria:

s2Eva2010TI_T3 polos H(s)

el resultado con el algoritmo para el literal a es:

 H(s) = P(s)/Q(s):
/    2       4  \  -3*s
|- ----- + -----|*e    
\  s + 4   s + 3/      
 H(s) en factores:
           -3*s
2*(s + 5)*e    
---------------
(s + 3)*(s + 4)

 h(t) :
/   9  -3*t      12  -4*t\                 
\4*e *e     - 2*e  *e    /*Heaviside(t - 3)

polosceros:
exp(-3*s) : {'Q_polos': {-3: 1, -4: 1}, 'P_ceros': {-5: 1}, 'Hs_k': 2*(s + 5)/((s + 3)*(s + 4))}
Q_polos : {-3: 1, -4: 1}
P_ceros : {-5: 1}

Estabilidad de H(s):
 n_polos_real : 2
 n_polos_imag : 0
 enRHP : 0
 unicos : 0
 repetidos : 0
 asintota : estable

literal b. mostrar h(t)

H(s)=[2s+4+4s+3]e3s H(s) = \Big[-\frac{2}{s+4} +\frac{4}{s+3} \Big] e^{-3s}

Usando la tabla de transformadas de Laplace, para la línea 5 y la propiedad de desplazamiento en t, se obtiene:

h(t)=[2e4(t3)+4e3(t3)]μ(t3) h(t) = \Big[-2 e^{-4(t-3)} +4e^{-3(t-3)} \Big] \mu(t-3)

literal c. Y(s) con entrada exponencial decreciente

La señal de salida Y(s)=H(s)X(s) ante una entrada X(s)=1/(s+5) que es la transformada de Laplace de x(t)=e-5t μ(t)

Y(s)=H(s)x(s)=[2(s+5)(s+4)(s+3)][1s+5]e3s Y(s) = H(s)x(s) = \Big[\frac{2(s+5)}{(s+4)(s+3)}\Big]\Big[\frac{1}{s+5}\Big] e^{-3s} Y(s)=2(s+4)(s+3)e3s Y(s) = \frac{2}{(s+4)(s+3)}e^{-3s}

Tarea: Realizar el desarrollo analítico y revisar los resultados del algoritmo

al realizar las fracciones parciales, se obtiene:

Y(s)=[2s+4+2s+3]e3s Y(s) = \Big[-\frac{2}{s+4} +\frac{2}{s+3} \Big] e^{-3s}

Con transformada inversa de Laplace, usando nuevamete la tabla de transformadas de Laplace, para la línea 5 y la propiedad de desplazamiento en t, se obtiene:

y(t)=(2e4(t3)+2e3(t3))μ(t3) y(t) = \Big(-2 e^{-4(t-3)} +2e^{-3(t-3)}\Big) \mu (t-3)

s2Eva2010TI_T3 y(t)

El resultado del algoritmo para el literal c del ejercicio es:

 X(s): 
  1  
-----
s + 5

Respuesta entrada cero ZIR H(s) y condiciones iniciales
term_cero : 0
ZIR :
0
yt_ZIR :
0

 ZSR respuesta estado cero:
ZSR :
/    2       2  \  -3*s
|- ----- + -----|*e    
\  s + 4   s + 3/      
yt_ZSR :
/   9  -3*t      12  -4*t\                 
\2*e *e     - 2*e  *e    /*Heaviside(t - 3)

 Y(s)_total = ZIR + ZSR:
/    2       2  \  -3*s
|- ----- + -----|*e    
\  s + 4   s + 3/      

 y(t)_total = ZIR + ZSR:
/   9  -3*t      12  -4*t\                 
\2*e *e     - 2*e  *e    /*Heaviside(t - 3)
>>>

Instrucciones en Python

Usando los bloques desarrollados en la Unidad 4 Sistemas LTI – Laplace  y las funciones resumidas como telg1001.py que pueden ser usados en cada pregunta.

# Y(s) Respuesta total con entada cero y estado cero
# Qs Y(s) = Ps X(s) ; H(s)=Ps/Qs
# https://blog.espol.edu.ec/telg1001/
import sympy as sym
import matplotlib.pyplot as plt
import telg1001 as fcnm

# INGRESO
s = sym.Symbol('s')
t = sym.Symbol('t', real=True)
d = sym.DiracDelta(t)
u = sym.Heaviside(t)

# Literal a. H(s) y estabilidad
Hs = 2*(s+5)/((s+4)*(s+3)) * sym.exp(-3*s)
#Hs = 1+0*s cuando es constante

# literal c. X(s) Señal de entrada
xt = sym.exp(-5*t)*u

# condiciones iniciales, [y'(0),y(0)] orden descendente
t0 = 0
cond_inicio = [0, 0] # estado cero no se usan

# Grafica, intervalo tiempo [t_a,t_b]
t_a = 0 ; t_b = 5
muestras = 101  # 51 resolucion grafica

# PROCEDIMIENTO
Hs = fcnm.apart_s(Hs) # fracciones parciales
Hs_fc = fcnm.factor_exp(Hs) # en factores
Hs_Qs2 = fcnm.Q_cuad_s_parametros(Hs_fc)

polosceros = fcnm.busca_polosceros(Hs)
Q_polos = polosceros['Q_polos']
P_ceros = polosceros['P_ceros']

estable = fcnm.estabilidad_asintotica_s(Q_polos)

# H(t) respuesta al impulso
ht = 0*s
term_suma = sym.Add.make_args(Hs)
for term_k in term_suma:
    ht_k = sym.inverse_laplace_transform(term_k,s,t)
    # simplifica log(exp()) ej: e**(-2s)/(s**2)
    if ht_k.has(sym.log):
        ht_k = sym.simplify(ht_k,inverse=True)
    ht  = ht + ht_k
lista_escalon = ht.atoms(sym.Heaviside)
ht = sym.expand(ht,t) # terminos suma
ht = sym.collect(ht,lista_escalon)

# PROCEDIMIENTO Respuesta ZIR, ZSR
Xs = fcnm.laplace_transform_suma(xt)

# ZIR_s respuesta entrada cero de s
sol_ZIR = fcnm.respuesta_ZIR_s(Hs,cond_inicio)
ZIR = sol_ZIR['ZIR']
yt_ZIR = sol_ZIR['yt_ZIR']

# ZSR respuesta estado cero, Y(s) a entrada X(s)
sol_ZSR = fcnm.respuesta_ZSR_s(Hs,Xs)
ZSR = sol_ZSR['ZSR']
yt_ZSR = sol_ZSR['yt_ZSR']

# Respuesta total Y(s) y y(t)
Ys = ZIR + ZSR
Ys = fcnm.apart_s(Ys)
yt = yt_ZIR + yt_ZSR
lista_escalon = yt.atoms(sym.Heaviside)
yt = sym.collect(yt,lista_escalon)

# SALIDA
print(' H(s) = P(s)/Q(s):')
sym.pprint(Hs)
print(' H(s) en factores:')
sym.pprint(Hs_fc)
if len(Hs_Qs2)>0:
    print('\nH(s) parámetros cuadraticos:')
    fcnm.print_resultado_dict(Hs_Qs2)

print('\n h(t) :')
sym.pprint(ht)

print('\npolosceros:')
fcnm.print_resultado_dict(polosceros)

print('\nEstabilidad de H(s):')
for k in estable:
    print('',k,':',estable[k])

print('\n X(s): ')
sym.pprint(Xs)
print('\nRespuesta entrada cero ZIR H(s) y condiciones iniciales')

if not(sol_ZIR == sym.nan): # existe resultado
    fcnm.print_resultado_dict(sol_ZIR)
else:
    print(' insuficientes condiciones iniciales')
    print(' revisar los valores de cond_inicio[]')

print('\n ZSR respuesta estado cero:')
fcnm.print_resultado_dict(sol_ZSR)

print('\n Y(s)_total = ZIR + ZSR:')
sym.pprint(Ys)
print('\n y(t)_total = ZIR + ZSR:')
sym.pprint(yt)

# Graficas polos, H(s), con polos h(t) --------
muestras_H = 201
figura_s  = fcnm.graficar_Fs(Hs_fc,Q_polos,P_ceros,f_nombre='H',solopolos=True)
figura_Hs = fcnm.graficar_Fs(Hs_fc,Q_polos,P_ceros,muestras=muestras_H,f_nombre='H')
figura_ht = fcnm.graficar_ft(ht,t_a,t_b,muestras,f_nombre='h')
# GRAFICAS y(t),x(t),h(t) ---------------------
figura_ft = fcnm.graficar_xh_y(xt,ht,yt,t_a,t_b,muestras)
plt.show()

s2Eva2010TI_T1 LTI DT Bloques de H[z] para ecuación de diferencias

Ejercicio: 2Eva2010TI_T1 LTI DT Bloques de H[z] para ecuación de diferencias

2E2010TI_T1 LTID diagrama1

litera a. La función de transferencia H(z)

El diagrama mostrado se reordena y añade anotaciones para facilitar la escritura de la ecuación de diferencias:

Dado que hay dos bloques (1/z) o de retraso hacia abajo, se identifica que los polinomios son de segundo orden (N=2).

Los coeficientes de retraso se leen de arriba hacia abajo como a0,-a1,-a2 ordenados en la siguiente tabla:

coeficientes
retraso adelanto
a0 = 1 b0 = 0
a1 = -(1.6) = -1.6 b1 = 4
a2 = -(-0.63) = 0.63 b2 = -4

Se aplica lo mismo para los coeficientes de adelanto y se completa el modelo para los polinomios del numerador y denominador:

H[z]=b0zN+b1zN1+ ... +bN1z+bNzN+a1zN1+ ... +aN1z+aN H[z] = \frac{b_0 z^N +b_1 z^{N-1} + \text{ ... } + b_{N-1} z + b_N}{z^N + a_1 z^{N-1} +\text{ ... } + a_{N-1}z +a_N} H[z]=4z4z21.6z+0.63 H[z] = \frac{4z-4}{z^2 -1.6 z + 0.63}

Con el polinomio del denominador Qz  se encuentran las raíces

polos: {0.70: 1, 0.90: 1}

se aplican fracciones parciales modificadas al dividir cada lado para z,

H[z]z=4zz1(z0.7)(z0.9)=k1z0.7+k2z0.9+k3z \frac{H[z]}{z} = \frac{4}{z}\frac{z-1}{(z-0.7)(z-0.9)} = \frac{k_1}{z-0.7} +\frac{k_2}{z-0.9}+\frac{k_3}{z}

aplicando el método de Heaviside:

k1=4zz1(z0.7)(z0.9)z=0.7=40.7(0.7)1((0.7)0.9)=8.5714 k_1 = \frac{4}{z}\frac{z-1}{\cancel{(z-0.7)}(z-0.9)}\Big|_{z=0.7} = \frac{4}{0.7}\frac{(0.7)-1}{((0.7)-0.9)} = 8.5714 k2=4zz1(z0.7)(z0.9)z=0.9=40.9(0.9)1((0.9)0.7)=2.2222 k_2 = \frac{4}{z}\frac{z-1}{(z-0.7)\cancel{(z-0.9)}}\Big|_{z=0.9} = \frac{4}{0.9}\frac{(0.9)-1}{((0.9)-0.7)} = -2.2222 k3=4zz1(z0.7)(z0.9)z=0=4(0)1((0)0.7)((0)0.9)=6.3492 k_3 = \frac{4}{\cancel{z}}\frac{z-1}{(z-0.7)(z-0.9)}\Big|_{z=0} = 4\frac{(0)-1}{((0)-0.7)((0)-0.9)} = -6.3492 H[z]z=8.5714z0.72.2222z0.96.3492z \frac{H[z]}{z} = \frac{8.5714}{z-0.7} -\frac{2.2222}{z-0.9}-\frac{6.3492}{z}

restaurando a fracciones parciales al multiplicar por z

H[z]=8.5714zz0.72.2222zz0.96.3492 H[z] = \frac{8.5714z}{z-0.7} -\frac{2.2222z}{z-0.9}-6.3492

usando la tabla de transformadas z

h[n]=8.5714(0.7)nμ[n]2.2222(0.9)nμ[n]6.3492δ[n] h[n] = 8.5714 (0.7)^n \mu[n] -2.2222(0.9)^n \mu[n] -6.3492 \delta[n]

Algoritmo en Python

Usando el algoritmo de la sección X[z] Fracciones parciales modificadas con Python

con entrada:

Pz = 4*z-4
Qz = z**2-1.6*z+0.63

y resultado:

 Hz:
     4*z - 4     
-----------------
 2               
z  - 1.6*z + 0.63

 Hz en fracciones parciales
8.57142857142857*z   2.22222222222222*z                   
------------------ - ------------------ - 6.34920634920635
     z - 0.7              z - 0.9                         

 Hz en factores
     4*(z - 1)     
-------------------
(z - 0.9)*(z - 0.7)

 {Q_polos:veces}: {0.700000000000000: 1, 0.900000000000000: 1}
 {P_ceros:veces}: {1: 1}

estabilidad asintótica en z:
circ1_dentro : 2
circ1_repetidos : 0
circ1_sobre : 0
circ1_fuera : 0
unicos : 2
repetidos : 0
asintota : estable

 h[n]:
/                    n                       n\                               
\8.57142857142857*0.7  - 2.22222222222222*0.9 /*Heaviside(n) 

  - 6.34920634920635*DiracDelta(n)

señal discreta h[n]
n   : [0 1 2 3 4 5 6 7 8 9]
h[n]: [ 0.   4.   2.4   1.32   0.6   0.1284
       -0.17256    -0.356988   -0.462468   -0.51504636]

2Eva2010TI_T1 Hz polos01

2Eva2010TI_T1 h[n]

Observaciones:

Las raíces características o frecuencias naturales del sistema se encuentran dentro del círculo de radio unitario. El sistema es asintóticamente estable, que implica que es BIBO estable.

literal c. Ecuación de diferencias

H[z]=4z4z21.6z+0.63 H[z] = \frac{4z-4}{z^2 -1.6 z + 0.63} Y[z](z21.6z+0.63)=(4z4)X[z] Y[z](z^2 -1.6 z+ 0.63) = (4z-4)X[z] y[n+2]1.6y[n+1]+0.63y[n]=4x[n+1]4x[n] y[n+2] - 1.6 y[n+1] + 0.63y[n] = 4x[n+1]-4x[n]

literal d. entrada x[n]

x(t) = cos(1500t) = cos (2πf) con intervalo de muestreo Ts = 0.0015 = 1/fs.

De la señal de entrada se tiene que 2πf=1500, por lo que f = 1500/(2π)

Para un buen muestreo de la señal de entrada, se debe cumplir la frecuencia de Nyquist, es decir fs>2f

fs=10.0015=666.66 ; f=15002π=238.73 fs = \frac{1}{0.0015} = 666.66 \text{ ; } f= \frac{1500}{2 \pi}=238.73 fs>2f=2(238.73)=477.46 fs > 2*f = 2(238.73) = 477.46

que cumple con la frecuencia mínima de muestreo y no se presentan inconvenientes para el funcionamiento de la señal por sub-muestreo

Instrucciones en Python

# Transformada z- Fracciones parciales
# https://blog.espol.edu.ec/telg1001/lti-dt-transformada-z-xz-fracciones-parciales-con-python/
import numpy as np
import sympy as sym
import matplotlib.pyplot as plt
import telg1001 as fcnm
#sym.SYMPY_DEBUG=True

# INGRESO
z = sym.Symbol('z')
n = sym.Symbol('n', real=True)

# coeficientes como racional en dominio 'ZZ' enteros
Pz = 4*z-4
Qz = z**2-1.6*z+0.63

F = Pz/Qz

# para graficar
f_nombre = 'H'    # nombre de función[z]: H,X,Y, etc
muestras_fn = 10  # muestras para f[n]

# PROCEDIMIENTO
Fz  = fcnm.apart_z(F)
Fz_factor = sym.factor(F.evalf())
Fz_factor = fcnm._round_float_is_int(Fz_factor)

# polos y ceros de Hz
[P,Q] = F.as_numer_denom()
P = sym.poly(P,z)
Q = sym.poly(Q,z)
P_ceros = sym.roots(P)
Q_polos = sym.roots(Q)
estable_z = fcnm.estabilidad_asintotica_z(Q_polos)

# Inversa de transformada z
fn = 0*n ; Fz_revisar = [] ; Qz2_term =[]
term_sum = sym.Add.make_args(Fz)
for term_k in term_sum:
    term_kn = fcnm.inverse_z_transform(term_k,z,n)
    if type(term_kn)==tuple:
        fn = fn + term_kn[0]
    elif term_kn is not None:
        fn = fn + term_kn
    elif term_kn is None:
        f_noeval = f_noeval + term_k
    Qz2 = fcnm.Q_cuad_z_parametros(term_k)
    if Qz2:
        Qz2_term.append(Qz2)
fn = fn.collect(sym.Heaviside(n))
fn = fn.collect(sym.DiracDelta(n))
fn = fcnm._round_float_is_int(fn)

# SALIDA
print('\n '+f_nombre+'z:')
sym.pprint(F)
print('\n '+f_nombre+'z en fracciones parciales')
sym.pprint(Fz)
print('\n '+f_nombre+'z en factores')
sym.pprint(Fz_factor)
print('\n {Q_polos:veces}:',Q_polos)
print(' {P_ceros:veces}:',P_ceros)
if len(Qz2_term)>0:
    print('\nparametros cuadraticos: ')
    for i in range(0,len(Qz2_term),1):
        for unterm in Qz2_term[i]:
            print(' termino:',unterm)
            fcnm.print_resultado_dict(Qz2_term[i][unterm])
print('\nestabilidad asintótica en z:')
fcnm.print_resultado_dict(estable_z)
print('\n '+f_nombre.lower()+'[n]:')
sym.pprint(fn)
if len(Fz_revisar)>0:
    print('revisar terminos sin transformada de tabla:')
    for un_term in Fz_revisar:
        print(un_term)

# # GRAFICA  -----------
fig_ROC = fcnm.graficar_Fz_polos(Fz_factor,Q_polos,P_ceros,
                      muestras=101,f_nombre=f_nombre)

fig_Fz = fcnm.graficar_Fs(Fz_factor,Q_polos,P_ceros,
                     muestras=101,
                     f_nombre=f_nombre)

# graficar f[n] -------
f_n = sym.lambdify(n,fn.expand(),modules=fcnm.equivalentes)
ki  = np.arange(0,muestras_fn,1.0)
fi  = f_n(ki)

print('\nseñal discreta '+f_nombre.lower()+'[n]')
print('n   :',ki)
print(f_nombre.lower()+'[n]:',fi)

# graficar f[n]
fig_fn, grafxn = plt.subplots()
plt.axvline(0,color='grey')
plt.stem(ki,fi)
plt.grid()
plt.xlabel('n')
plt.ylabel(f_nombre.lower()+'[n]')
etiqueta = r''+f_nombre.lower()+'[n]= $'+str(sym.latex(fn))+'$'
plt.title(etiqueta)

plt.show()