La Transformada z inversa, usa la Tabla de Pares f[n] y F[z] y los algoritmos para buscar una expresión semejante F.match() en conjunto con la tabla de propiedades y los algoritmos desarrollados en la sección anterior. El resultado se integra desde telg1001.py y se muestra en los siguientes ejemplos:
Ejemplo 1. Transformada z inversa de una fracción X[1/z]
Referencia: Oppenheim Ejemplo 10.13 p761, Lathi Ejemplo 5.1 p490
Continuando con el ejercicio presentado para convertir x[n] a X[z], se tiene que:
X[z] = \frac{1}{1-a z^{-1}}\text{ , } |z|>|a| X[z] = \frac{z}{z-a}\text{ , } \Big|z|>|a|siendo la expresión de ingreso al algoritmo:
F = z/(z - 2)
el resultado es:
f[n] : (2**n*Heaviside(n), Abs(z) > 2, True) >>>
Ejemplo 1a. Instrucciones Python
# transformada z propiedades con Sympy # aplicar luego de buscar en tabla de pares import sympy as sym import telg1001 as fcnm # INGRESO n = sym.Symbol('n', real=True) z = sym.Symbol('z') u = sym.Heaviside(n) # (a**n)*f[n] <--> F(z/a) F = z/(z - 2) #f = (2**n)*u # PROCEDIMIENTO fn = fcnm.inverse_z_transform(F,z,n) # SALIDA print('f[n] :',fn)
El algoritmo presentado puede ser tomado como punto de partida para los siguientes ejercicios. Realizado para explicación conceptual.
Ejemplo 2. Transformada z inversa usando expansión en fracciones parciales
Referencia: Lathi 5.3 a
Encuentre la transformada z inversa para:
F[z] = \frac{8z-19}{(z-2)(z-3)}el ingreso para el algoritmo del ejercicio anterior es:
F = (8*z-19)/((z-2)*(z-3))
con el resultado siguiente:
f[n] : (9*2**n + 10*3**n)*Heaviside(n)/6 - 19*DiracDelta(n)/6
activando la variable sym.SYMPY_DEBUG=True, se observa el proceso de fracción parcial modificada, la búsqueda en la tabla, y aplicación de una propiedad de la transformada z.
inverse_z_transform(F,z,n): (8*z - 19)/((z - 3)*(z - 2))
apart_z(F) : (8*z - 19)/((z - 3)*(z - 2))
_simplify_z: (8*z - 19)/((z - 3)*(z - 2))
P_leadcoef: 8 ; P_zc: 1 ; P: z - 19/8
_simplify_z k_sign: 1 ; k: 8 ; P_zc: 1 ; Q_zc: 1
F[z]: (z - 19/8)/((z - 3)*(z - 2))
_simplify_z: (z - 19/8)/(z*(z - 3)*(z - 2))
P_leadcoef: 8 ; P_zc: 1 ; P: z - 19/8
Q_leadcoef: 8 ; Q_zc: z ; Q: (z - 3)*(z - 2)
_simplify_z k_sign: 1 ; k: 1 ; P_zc: 1 ; Q_zc: z
F[z]: (z - 19/8)/((z - 3)*(z - 2))
P: (8*z - 19)/8
Q: (z - 3)*(z - 2)
P_degree: 1 ; P_zeros: {19/8: 1}
Q_degree: 3 ; Q_poles: {3: 1, 2: 1, 0: 1}
apart(F/z): 3/(16*(z - 2)) + 5/(24*(z - 3)) - 19/(48*z)
ma_Qk: {a_: 48, b_: 0, c_: 1} ; ma_Qk2: {b_: 48, a_: 0, c_: 0}
_simplify_z: -19/(48*z)
P_leadcoef: -19 ; P_zc: 1 ; P: 1
Q_leadcoef: 48 ; Q_zc: z ; Q: 1
_simplify_z k_sign: -1 ; k: 19/48 ; P_zc: 1 ; Q_zc: z
F[z]: 1
ma_Qk: {a_: 16, b_: -32, c_: 1} ; ma_Qk2: {b_: 16, c_: -32, a_: 0}
_simplify_z: 3/(16*(z - 2))
P_leadcoef: 3 ; P_zc: 1 ; P: 1
Q_leadcoef: 16 ; Q_zc: 1 ; Q: z - 2
_simplify_z k_sign: 1 ; k: 3/16 ; P_zc: 1 ; Q_zc: 1
F[z]: 1/(z - 2)
ma_Qk: {a_: 24, b_: -72, c_: 1} ; ma_Qk2: {b_: 24, c_: -72, a_: 0}
_simplify_z: 5/(24*(z - 3))
P_leadcoef: 5 ; P_zc: 1 ; P: 1
Q_leadcoef: 24 ; Q_zc: 1 ; Q: z - 3
_simplify_z k_sign: 1 ; k: 5/24 ; P_zc: 1 ; Q_zc: 1
F[z]: 1/(z - 3)
apart z*(Fz/z) : 3*z/(2*(z - 2)) + 5*z/(3*(z - 3)) - 19/6
apart_z(F) as partial fractions: (-19/6, 3*z/(2*(z - 2)), 5*z/(3*(z - 3)))
term_k[z]: -19/6
[0] _z_pairs_prop_inverse ----
_simplify_z: -19/6
P_leadcoef: -19 ; P_zc: 1 ; P: 1
Q_leadcoef: 6 ; Q_zc: 1 ; Q: 1
_simplify_z k_sign: -1 ; k: 19/6 ; P_zc: 1 ; Q_zc: 1
F[z]: 1
_z_pairs_table match:
F: 1
z_pair F[z]: 1 ; ma_z: {}
z_pair f[n]: DiracDelta(n)
try,check : True -> True
[0] pair f[n]: (-19*DiracDelta(n)/6, True, True)
term_k[n]: (-19*DiracDelta(n)/6, True, True)
term_k[z]: 3*z/(2*(z - 2))
[0] _z_pairs_prop_inverse ----
_simplify_z: 3*z/(2*(z - 2))
P_leadcoef: 3 ; P_zc: 1 ; P: z
Q_leadcoef: 2 ; Q_zc: 1 ; Q: z - 2
_simplify_z k_sign: 1 ; k: 3/2 ; P_zc: 1 ; Q_zc: 1
F[z]: z/(z - 2)
[1] z_properties_inverse_z_transform
P: z
Q: z - 2
P_degree: 1 ; P_zeros: {0: 1}
Q_degree: 1 ; Q_poles: {2: 1}
ma_P1 (a*z+ b): {a_: 1, b_: 0}
ma_Q1 (a*z-b)**c : {a_: 1, b_: 2, c_: 1}
_z_property multiply (a**n)*f[n] <--> F(z/a)
k_sign: 1 ; k: 3/2 ; k_b: 2
F[z]: z/(z - 1)
[2] _z_pairs_prop_inverse ----
_simplify_z: z/(z - 1)
F[z]: z/(z - 1)
_z_pairs_table match:
F: z/(z - 1)
z_pair F[z]: z/(z - 1) ; ma_z: {}
z_pair f[n]: Heaviside(n)
try,check : True -> True
[2] pair f[n]: (Heaviside(n), Abs(z) > 1, True)
_z_property multiply (a**n)*f[n]:
(3*2**n*Heaviside(n)/2, Abs(z) > 2, True)
[1] _z_properties_inverse f[n]: (3*2**n*Heaviside(n)/2, Abs(z) > 2, True)
[0] prop f[n]: (3*2**n*Heaviside(n)/2, Abs(z) > 2, True)
term_k[n]: (3*2**n*Heaviside(n)/2, Abs(z) > 2, True)
term_k[z]: 5*z/(3*(z - 3))
[0] _z_pairs_prop_inverse ----
_simplify_z: 5*z/(3*(z - 3))
P_leadcoef: 5 ; P_zc: 1 ; P: z
Q_leadcoef: 3 ; Q_zc: 1 ; Q: z - 3
_simplify_z k_sign: 1 ; k: 5/3 ; P_zc: 1 ; Q_zc: 1
F[z]: z/(z - 3)
[1] z_properties_inverse_z_transform
P: z
Q: z - 3
P_degree: 1 ; P_zeros: {0: 1}
Q_degree: 1 ; Q_poles: {3: 1}
ma_P1 (a*z+ b): {a_: 1, b_: 0}
ma_Q1 (a*z-b)**c : {a_: 1, b_: 3, c_: 1}
_z_property multiply (a**n)*f[n] <--> F(z/a)
k_sign: 1 ; k: 5/3 ; k_b: 3
F[z]: z/(z - 1)
[2] _z_pairs_prop_inverse ----
_simplify_z: z/(z - 1)
F[z]: z/(z - 1)
_z_pairs_table match:
F: z/(z - 1)
z_pair F[z]: z/(z - 1) ; ma_z: {}
z_pair f[n]: Heaviside(n)
try,check : True -> True
[2] pair f[n]: (Heaviside(n), Abs(z) > 1, True)
_z_property multiply (a**n)*f[n]:
(5*3**n*Heaviside(n)/3, Abs(z) > 3, True)
[1] _z_properties_inverse f[n]: (5*3**n*Heaviside(n)/3, Abs(z) > 3, True)
[0] prop f[n]: (5*3**n*Heaviside(n)/3, Abs(z) > 3, True)
term_k[n]: (5*3**n*Heaviside(n)/3, Abs(z) > 3, True)
f[n]: 3*2**n*Heaviside(n)/2 + 5*3**n*Heaviside(n)/3 - 19*DiracDelta(n)/6
f[n]: (9*2**n + 10*3**n)*Heaviside(n)/6 - 19*DiracDelta(n)/6
f[n] : (9*2**n + 10*3**n)*Heaviside(n)/6 - 19*DiracDelta(n)/6
>>>
