s1Eva2012TI_T1 LTI CT Polos y ceros de H(s) con respuesta DC conocida

Ejercicio: 1Eva2012TI_T1 LTI CT Polos y ceros de H(s) con respuesta DC conocida

Se revisan los polos y ceros para escribir la función de transferencia,

H(s) = \frac{(s-ceros_0)(s-ceros_1)}{(s-polo_0)(s-polo_1)} H(s) = \frac{(s-(-1.5j))(s-(1.5j))}{(s-(-1+0.5j))(s-(-1-0.5j))}

H(s) = \frac{s^2+2.25}{s^2+2s+1.25}

tomando el modelo proporcionado de la ecuación, se compara para encontrar los valores de las variables

H(s) = \frac{k (s^2 + b_1 s + b_2)}{s^2 + a_1 s + a_2}

k = 1, b1=0, b2=2.25, a1=2, a2=1.25

Separando en fracciones parciales, dado que el grado M del numerador y grado N denominador son iguales, ganancia el coeficiente del término de mayor grado del numerador. Lo mismo que se obtiene al dividir el numerador y denominador por s2 y hacer s→∞

H(s) = \frac{1+\frac{2.25}{s^2}}{1+2\frac{1}{s}+\frac{1.25}{s^2}} \Big|_{s=\infty} =1 H(s) = 1+\frac{k_1s+k_2}{s^2+2s+1.25} H(s) = \frac{s^2+2s+1.25+k_1s+k_2}{s^2+2s+1.25} H(s) = \frac{s^2+(2+k_1)s+(1.25+k_2)}{s^2+2s+1.25}

con lo que 2+k1=0, entonces k1=-2,
también 1.25+k2=2.25, entonces K2 = 1

con lo que se obtiene,

H(s) = 1+\frac{-2s +1}{s^2 + 2 s + 1.25}

los polos se encuentran sobre el lado izquierdo del plano s, por lo que el sistema es asintoticamente estable

Observe que para H(s) el grado del polinomio el numerador P de H(s) es igual al grado del denominador Q. por lo que M=N. por lo que se considera un función impropia (Lathi 4.3b p339, 4.2 p359). Se genera una respuesta impulso por el valor de la constante 1 que se obtiene al usar fracciones parciales.

Para la transformada inversa, para el término cuadrático, en la tabla de transformadas de Laplace se identifica el caso 12c:

\frac{As+B}{s^2+2as+c} donde A=-2, B=1,a=1,c=1.25

El valor b = \sqrt{c-a^2} se calcula como:

b = \sqrt{1.25-(1)^2} = \frac{1}{2} r = \sqrt{\frac{A^2 c +B^2 -2ABa}{c-a^2}} r = \sqrt{\frac{(-2)^2 (1.25) +(1)^2 -2(-2)(1)(1)}{1.25-(-2)^2}} =\sqrt{\frac{10}{1/4}} = 6.3245 \theta = \tan ^{-1} \Big( \frac{Aa-B}{A\sqrt{c-a^2}}\Big) \theta = \tan ^{-1} \Big( \frac{(-2)(1)-(1)}{(-2)\sqrt{1.25-(1)^2}}\Big)\tan ^{-1}(\frac{-3}{-2(1/2)} = 1.2490

h(t) = δ(t) + re-atcos (bt+θ) μ(t)

h(t) = δ(t) + 6.3245e-tcos (t/2+1.2490) μ(t)

Algoritmo en Python

Para el bloque de ingreso se debe mantener los coeficientes como números enteros o racionales. Recordando que los algoritmos de Sympy para transformadas de Laplace (hasta versión 1.11) se encuentran escritos para el dominio de los enteros y racionales (‘ZZ’), por lo que los datos se ingresan como:

k1 = sym.Rational(2.25).limit_denominator(100)
k2 = sym.Rational(1.25).limit_denominator(100)
Hs = (s**2+k1)/(s**2+2*s+k2)

con el resultado mostrado,

 H(s) = P(s)/Q(s)
    2   9   
   s  + -   
        4   
------------
 2         5
s  + 2*s + -
           4

 H(s) fracciones parciales:
   4*(2*s - 1)      
- -------------- + 1
     2              
  4*s  + 8*s + 5    

 h(t) :
                   -t    /t\                   -t    /t\             
DiracDelta(t) + 6*e  *sin|-|*Heaviside(t) - 2*e  *cos|-|*Heaviside(t)
                         \2/                         \2/             

 {polos,veces}:  {-1 - I/2: 1, -1 + I/2: 1}
 polos reales:  0  complejos:  2
 sobre lado derecho RHP: 0
 sobre Eje Imaginario, repetidos:  0  unicos: 0
 asintoticamente:  estable

 parametros Q cuadraticos s: 
{'A': -2.0, 'B': 1.0, 'a': 1.0, 'c': 1.25,
 'r': 6.324555320336759, 'b': 0.5,
 'theta': 1.2490457723982544}

Con gráficas de H(s) y polos

s1Eva2012TI_T1 polos H(s)

gráfica de h(t)

s1Eva2012TI_T1 h(t)

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
# http://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)

# H(s) y estabilidad
k1 = sym.Rational(2.25).limit_denominator(100)
k2 = sym.Rational(1.25).limit_denominator(100)
Hs = (s**2+k1)/(s**2+2*s+k2)
#Hs = (s**2+2.25)/(s**2+2*s+1.25)

# 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 = -1 ; 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)

# 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])

# Graficas polos, H(s), con polos h(t) --------
muestras_H = 101
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')
plt.show()

.