Referencia: 1Eva2009TII_T5 LTI DT bloques H[z] en serie
1. Las respuestas impulso de cada subsistema

usando la tabla de transformadas z
h_1[n] = (0.7)^n \mu[n]Continuando con el subsistema de la derecha
H_2[z] = \frac{z}{z-(-0.5)} = \frac{z}{z+0.5} h_2[n] = (-0.5)^n \mu[n]El sistema total:
H[z] = H_1[z] H_2[z] = \frac{z}{(z-0.7)} \frac{z}{(z+0.5)} = \frac{z^2}{(z-0.7)(z+0.5)}fracciones parciales modificadas, multiplica ambos lados por 1/z
\frac{H[z]}{z} = \Big( \frac{1}{z} \Big) \frac{z^2}{(z-0.7)(z+0.5)}= \frac{z}{(z-0.7)(z+0.5)} \frac{H[z]}{z} = \frac{z}{(z-0.7)(z+0.5)} = \frac{k_1}{z-0.7} +\frac{k_2}{z+0.5} k_1 = \frac{z}{\cancel{(z-0.7)}(z+0.5)} \Big|_{z=0.7} = \frac{0.7}{(0.7+0.5)} = 0.5833 k_2 = \frac{z}{(z-0.7)\cancel{(z+0.5)}} \Big|_{z=-0.5} = \frac{-0.5}{(-0.5-0.7)} = 0.4166 \frac{H[z]}{z} = \frac{0.5833}{z-0.7} +\frac{0.4166}{z+0.5}Restaura fracciones parciales, multiplica ambos lados por z
H[z] = \frac{0.5833 z}{z-0.7} +\frac{0.4166z}{z+0.5}usando la tabla de transformadas z
h[n] = 0.5833 \Big(0.7 \Big)^n \mu[n] +0.4166 \Big(-0.5\Big)^n \mu[n]factor común μ[n]
h[n] = \Bigg( 0.5833 \Big(0.7 \Big)^n +0.4166 \Big(-0.5\Big)^n \Bigg) \mu[n]Revisando el resultado con el algoritmo en Python


Hz:
2
z
───────────────────
(z - 0.7)⋅(z + 0.5)
fracciones parciales z:
0.416666666666667⋅z 0.583333333333333⋅z
─────────────────── + ───────────────────
z + 0.5 z - 0.7
polos: {0.700000000000000: 1, -0.500000000000000: 1}
ceros: {0: 2}
h[n]:
⎛ n n⎞
⎝0.416666666666667⋅-0.5 + 0.583333333333333⋅0.7 ⎠⋅θ(n)
Tarea: 2. Su respuesta y[n]=s]n], expresada a la mínima expresión frente a la siguiente excitación x[n]=μ[n], esquematizar.
Algoritmo en Python
Algoritmos desarrollados en H[z] Fracciones parciales modificadas con Python
y la parte gráfica de Transformada z con Sympy-Python
# Transformada z- Fracciones parciales
# Polos únicos, repetidos y complejos
# Lathi Ejercicio 5.3a pdf495
# https://blog.espol.edu.ec/algoritmos101/senales/ss-unidades/ss-unidad-7/
import numpy as np
import sympy as sym
import telg1001 as fcnm
# INGRESO
z = sym.Symbol('z')
Pz = z**2
Qz = (z-0.7)*(z+0.5)
# Pz = z**2
# Qz = (z-0.7)*(z+0.5)
#Pz = 8*z-19
#Qz = (z-2)*(z-3)
#Pz = z*(2*z**2-11*z+12)
#Qz = (z-1)*(z-2)**3
#Pz = 2*z*(3*z+17)
#Qz = (z-1)*(z**2-6*z+25)
Hz = Pz/Qz
muestras = 10 #para la gráfica
# PROCEDIMIENTO
Fz = fcnm.apart_z(Hz)
Qs2 = fcnm.Q_cuad_z_parametros(Fz)
[Q_polos,P_ceros] = fcnm.busca_polosceros_z(Fz)
n = sym.Symbol('n')
hn = fcnm.inverse_z_transform(Fz,z,n)
# SALIDA
print('\n Hz:')
sym.pprint(Hz)
print('\nfracciones parciales z:')
sym.pprint(Fz)
print('\npolos:',Q_polos)
print('ceros:',P_ceros)
if len(Qs2)>0:
print('\nparametros cuadraticos: ')
for unterm in Qs2:
print(unterm,':')
for unparam in Qs2[unterm]:
print(unparam,':',Qs2[unterm][unparam])
print('h[n]:')
sym.pprint(hn)
# GRAFICAR polos y ceros en z
import matplotlib.pyplot as plt
# para graficar polos y ceros
f_nombre = 'H' # nombre de función[z]: H,X,Y, etc
# grafica de polos y zeros
fig_ROC = fcnm.graficar_Fz_polos(Hz,Q_polos,P_ceros,
muestras=101,f_nombre=f_nombre)
#plt.show()
# h[n] usando tabla de transformadas
fn = sym.lambdify(n,hn)
ki = np.arange(0,muestras,1)
fi = fn(ki)
# grafica h[n]
fig_fn, graf_fn = plt.subplots()
plt.stem(ki,fi)
plt.xlabel('ki')
plt.ylabel(f_nombre.lower()+'[n]')
untitulo = r''+f_nombre.lower()+'[n]=$'
untitulo = untitulo+str(sym.latex(hn))+'$'
plt.title(untitulo)
plt.show()