3.1 Sistema – Modelo entrada-salida

Referencia: Lathi 2.1 pdf114, Schaum/Hsu 2.5.B p60

La descripción de un sistema en términos de mediciones en los extremos se denomina Modelo de entrada-salida

.

Para el caso de un circuito eléctrico RLC, la creación del modelo inicia con la descripción de la ecuación que relaciona el voltaje x(t) de entrada y la corriente de salida y(t).

La respuesta de un sistema lineal puede ser expresado como la suma de dos componentes: respuesta a entrada cero y respuesta a estado cero.

Respuesta
total
= respuesta a
entrada cero
+ respuesta a
estado cero

Ejemplo

Referencia: Lathi 1.8-1 pdf/p.80. Oppenheim problema 2.61c pdf/p.191

Como ejemplo, usaremos la corriente de lazo del circuito mostrado.

FIEC05058_RLCusando la ley de voltajes en lazo se tiene que:

vL(t) + vR(t) +vC(t) = x(t)

que con las leyes de corriente para cada elemento (inductor, resistor y capacitor) se traducen en:

\frac{dy}{dt} +3 y(t) + 2\int y(t)dt = x(t)

Para tener todo en función de un solo operador, se derivan ambos lados de la ecuación:

\frac{d^{2}y}{dt^{2}} + 3\frac{dy}{dt} + 2y(t) = \frac{dx}{dt}

que es la relación de «entrada-salida» del sistema con la entrada x(t) y la salida y(t) que permitirá analizar el sistema que representa el circuito.


Notación D y 1/D

Por conveniencia, para usar una notación más compacta de la ecuación diferencial, el operador dy/dt se cambia por la notación D.

\frac{dy}{dt} = Dy(t) \frac{d^2 y}{dt^2} = D^{2}y(t)

Que convierte la ecuación de entrada-salida a la expresión:

(D^2 + 3D +2)y(t) = Dx(t)

que es identica a la expresión de entrada y salida que describe al circuito.

El operador diferencial es posible usarlo para la notación con integrales,

\int y(t)dt = \frac{1}{D}y(t)

por lo que la expresión del circuito también se puede escribir como

\Big( D + 3D + \frac{2}{D} \Big) y(t) = x(t)

al multiplicar ambos lados por el operador D se convierte nuevamente en una expresión sin denominadores D.

Recuerde: la expresión con operadores D, NO ES una ecuación algebraica, pues la expresión de operadores D aplican solo a y(t).

En adelante, el sistema descrito por ecuaciones diferenciales usa el operador D=\frac{d}{dt}, por ejemplo:

a_2 \frac{d^2}{dt^2}y(t) + a_1 \frac{d}{dt}y(t) + a_0 y(t) = b_1\frac{d}{dt}x(t) + b_0x(t) a_2 D^ 2y(t) + a_1 Dy(t) + a_0y(t) = b_1Dx(t) + b_0 x(t) (a_2 D^ 2 + a_1 D + a_0)y(t) = (b_1D + b_0 )x(t) Q(D) y(t) = P(D) x(t)

Transformada Laplace – Python

Transformadas de Laplace

La librería Sympy ofrece algunas opciones para revisar el tema de transformadas de laplace. Por ejemplo se obtienen los siguientes resultados a partir de funciones en el tiempo.

 f(t) = e**(2t) 

 2*t
e   
   1       s      
(-----, 2, - != 1)
 s - 2     2      

 f(t) = Dirac delta: 

DiracDelta(t - 2)
  -2*s            
(e    , -oo, True)

 f(t) = Piecewise: 

/0  for t < 0 
< \1 for t >= 0
 1          
(-, 0, True)
 s          

 f(t) = Heaviside: 

Heaviside(t)
 1          
(-, 0, True)
 s          
>>>

Las respuestas tienen tres partes (f,a,cond) : la función f(s), una constante a que define el plano de convergencia Re(s)>a y una condición auxiliar para convergencia.

usando las intrucciones, tiene una guia para continuar con las otras expresiones.

Note que para el impulso se dan las opciones de Piecewise() y Heaviside(). En las respuestas con escalones unitarios, Sympy usa Heaviside().

# Transformadas de Laplace con Sympy

import sympy as sym
t = sym.Symbol('t')
s = sym.Symbol('s')

# en dominio tiempo
e2 = sym.exp(2*t)
# escalon unitario
u = sym.Piecewise((0,t<0),(1,t>=0))
uH = sym.Heaviside(t)
# impulso
delta2 = sym.DiracDelta(t-2)

# Transformando a Laplace
e2s = sym.laplace_transform(e2,t,s)
delta2s = sym.laplace_transform(delta2,t,s)
us = sym.laplace_transform(u,t,s)
uHs = sym.laplace_transform(uH,t,s)

# Salida
print('\n f(t) = e**(2t) \n')
sym.pprint(e2)
sym.pprint(e2s)
print('\n f(t) = Dirac delta: \n')
sym.pprint(delta2)
sym.pprint(delta2s)
print('\n f(t) = Piecewise: \n')
sym.pprint(u)
sym.pprint(us)
print('\n f(t) = Heaviside: \n')
sym.pprint(uH)
sym.pprint(uHs)

Transformadas Inversas de Laplace

Se aplica el proceso contrario a las funciones anteriores y el ejemplo para la respuesta al impulso de la sección del sistema Modelo.

 H(s) = 

     s      
------------
 2          
s  + 3*s + 2

 / t    \  -2*t             
-\e  - 2/*e    *Heaviside(t)

 u(s) = 

 1          
(-, 0, True)
 s          

Heaviside(t)

 uH(s) = 

 1          
(-, 0, True)
 s          

Heaviside(t)
>>> 

En las instrucciones de  Python, donde se usan las respuestas anteriores de la transformada, se toma solo la primera parte (ejemplo:us[0]).

# Transformada inversa de Laplace
Hs = s/(s**2+3*s+2)

Ht = sym.inverse_laplace_transform(Hs,s,t)
ut = sym.inverse_laplace_transform(us[0],s,t)
uHt = sym.inverse_laplace_transform(uHs[0],s,t)

print('\n ******\n')
print('\n H(s) = \n')
sym.pprint(Hs)
sym.pprint(Ht)
print('\n u(s) = \n')
sym.pprint(us)
sym.pprint(ut)
print('\n uH(s) = \n')
sym.pprint(uHs)
sym.pprint(uHt)

3.2 Respuesta entrada cero-LTIC

Referencia: Lathi 2.1 pdf114, Schaum/Hsu 2.5 p60

Siguiendo el modelo entrada-salida del sistema, la respuesta se obtiene como la superposición de sus componentes:

Respuesta
total
= respuesta a
entrada cero
+ respuesta a
estado cero

Para entrada cero se usa x(t)=0, es decir al sistema no se le aplica una señal de entrada, se pone a tierra la entrada y se observa la salida. El sistema, al no tener señal entrada x(t) simplifica el problema a:

Q(D) y(t) = P(D) x(t) Q(D) y(t) = 0

Ejemplo

Referencia: Lathi Ejemplo 2.1.a pdf116, Ejemplo 2.2 pdf 119

Encuentre la respuesta a entrada cero para el sistema LTIC del circuito, descrito por la ecuación:

(D^2 + 3D +2)y(t) = Dx(t)

con las condiciones iniciales de y0(t) =0 , y’0(t) =-5
La entrada cero, x(t)=0 convierte el circuito en:

Se plantean varias formas de desarrollo, para explorar algunas opciones usando los conceptos descritos en la parte teórica:

  1. Desarrollo analítico
  2. Desarrollo usando Python:
    1. con fórmulas simbólicas con Sympy
    2. con Runge-Kutta d2y/dx2 de análisis numérico
  3. Desarrollo usando simulador con:
    1. con diagrama de bloques
    2. como circuito en simulador

1. Desarrollo analítico

Siendo el sistema descrito por:

Q(D) y(t) = P(D) x(t)

Para entrada cero se usa x(t)=0, se quita la fuente y se cierra el circuito, observando solo lo que hace el sistema sin señal de entrada. De ésta forma se simplifica la ecuación al eliminar P(D):

(D^2 + 3D +2)y(t) = 0

El polinomio Q(D) es el polinomio característico del sistema, entonces la ecuación característica del sistema es:

λ2 + 3 λ + 2 = (λ+1)(λ+2)
Raíces características Modos característicos
λ1 = -1 e-t
λ2 = -2 e-2t

con los resultados característicos se forma la respuesta a entrada cero como y0(t).

y_0 (t) = c_1 e^{-t} + c_2 e^{-2t}

Para determinar las constantes se usan las condiciones iniciales. No hay señal en la salida al tiempo cero y(0)=0, y para observar que sucedería si el circuito tuviese energía interna, por ejemplo un capacitor cargado se tiene que y'(0)=-5:

y_0 (t) = c_1 e^{-t} + c_2 e^{-2t} y'_0 (t) = -c_1 e^{-t} -2c_2 e^{-2t}
evaluando en condiciones iniciales:
 0 =  c1 +  c2
-5 = -c1 - 2c2

se resuelve obeniendo:
c1 = -5 
c2 = 5

que al sustituir en la ecuacion inicial, se tiene la respuesta a entrada cero:

y_0(t) = -5e^{-t} +5e^{-2t}

La gráfica muestra el sentido de la corriente, usando la carga residual del capacitor dentro del circuito, a pesar de no tener señal de entrada a partir del tiempo 0 hasta 5:

Para determinar los valores de las constantes, se puede usar algunas instrucciones sencillas en Pyton y Numpy, para las raices del polinomio se usan solo los coeficioentes de grado mayor a menor.

>>> import nupmpy as np

>>> np.roots([1,3,2])
array([-2., -1.])

Para los coeficientes se plantean las ecuaciones de la forma matricial Ax=B:

>>> A = [[ 1, 1],
	 [-1,-2]]
>>> B =  [ 0,-5]
>>> np.linalg.solve(A,B)
array([-5.,  5.])
>>>

La parte de las gráficas se desarrollan en las secciones dedicadas usar Python para obtener las respuestas.

3.4 Respuesta a estado cero – LTIC

Referencia: Lathi 2.4 pdf124, Oppenheim 2.1 p97/pdf125 , Schaum/Hsu 2.5.B p.60

El estado cero del sistema, «Zero-State», supone no hay energía almacenada, que los capacitores están descargados, que recien sale el equipo de la caja.  Para éste caso, la respuesta del sistema se conoce como respuesta a estado cero, «Zero-State response».

Para los problemas presentados se asume que el sistema es lineal , causal e invariante en el tiempo. En la práctica, muchos de los sistemas son causales, pues su respuesta no inicia antes de aplicar una entrada, es decir, todas las entradas a evaluar empiezan en t=0.

la respuesta del sistema y(t) para un LTIC se determina como:

y(t) = x(t) \circledast h(t) = \int_{-\infty}^{+\infty} x(\tau)h(t-\tau) d\tau

Es importante observar que el integral de convolución se realiza con respecto a τ en lugar de t.

Si la entrada x(t) y el sistema h(t) son causales, la respuesta también será causal.

y(t)=\begin{cases}\int_{0^{-}}^{t} x(\tau)h(t-\tau) d\tau , & t\ge 0\\ 0, & t<0 \end{cases}

El límite inferior del integral se usa como 0, implica aunque se escriba solo 0 se pretende evitar la dificultad cuando x(t) tiene un impulso en el origen.


Ejemplo 01

Referencia:  Lathi ejemplo 2.6 pdf129

Encuentre la corriente y(t) del circuito RLC, cuando todas las condiciones iniciales son cero y en la entrada se tiene la señal x(t) descrita por:

x(t) = 10 e^{-3t} \mu (t)

Además el sistema tiene respuesta a impulso:

h(t) = \big( 2e^{-2t} -e^{-t}\big)\mu (t)

El ejemplo es la continuación del presentado para respuesta a entrada cero, que tiene la ecuación:

(D^2 + 3D +2)y(t) = Dx(t)

Desarrollo Analítico

La respuesta se obtiene aplicando convolución:

y(t) = x(t) \circledast h(t) = [ 10 e^{-3t} \mu (t)] \circledast [(2e^{-2t} - e^{-t}) \mu (t)]

usando la propiedad distributiva de la convolución:

y(t) = [10e^{-3t} \mu (t) \circledast 2e^{-2t} \mu (t)] - [10e^{-3t} \mu (t) \circledast e^{-t} \mu (t)] = 20[e^{-3t}\mu (t) \circledast e^{-2t} \mu (t)] - 10[e^{-3t} \mu(t) \circledast e^{-t} \mu (t)]

Para éste ejercicio se usa la tabla de convoluciones, asi se enfoca en la forma de la señal resultante, el siguiente ejemplo se desarrolla el integral de convolución.

y(t) = 20\frac{e^{-3t} - e^{-2t}}{-3-(-2)}\mu (t) - 10\frac{e^{-3t} - e^{-t}}{-3-(-1)}\mu (t) = -20[e^{-3t} - e^{-2t}]\mu (t) + 5[e^{-3t} - e^{-t}]\mu (t) = [-5e^{-t} + 20e^{-2t} - 15e^{-3t}]\mu (t)

De las gráficas se observa que la entrada es semejante a conectar en la entrada un capacitor con carga, que la pierde en el tiempo.

En la salida se observa el efecto, la parte inicial corresponde a la corriente en el circuito mientras el capacitor de la entrada entrega energía al sistema. Note que en el sistema o circuito se debe ir cargando el capacitor del sistema. Luego, un poco más del segundo 1, la corriente invierte el sentido volviéndose negativa por la carga almacenada en el capacitor del sistema.

La explición breve realizada debería ser comprobada en los experimentos de laboratorio, preferiblemente a escala menor con componentes tipo electrónico.
Proponer como tarea.

Ejemplo 02

Referencia: Lathi Ejemplo 2.5 pdf127

Para un sistema LTIC, si la respuesta al impulso es

h(t) = e^{-2t} \mu (t)

determine la respuesta y(t) para la entrada

x(t) = e^{-t} \mu (t)

Desarrollo Analítico

Para éste ejercicio se desarrollará la integral de convolución. La entrada y respuesta al impulso se convierte a:

x(\tau) = e^{-\tau} u(\tau) h(t-\tau) = e^{-2(t-\tau)} u(t-\tau)

recuerde que la integración es respecto a τ enel intervalo 0≤τ≤t.

y(t) = \begin{cases} \int_{0}^{t} e^{-\tau}u(\tau) e^{-2(t-\tau)}u(t-\tau) d\tau , & t\ge 0 \\0, & t \lt 0 \end{cases}

Los valores de u(τ) =1 debido a se convierte a 0 para τ<0 y en el caso de u(t-τ)=1 se conviertea 0 cuando τ≥t.

y(t) = \int_{0}^{t}e^{-\tau} e^{-2(t-\tau)} d\tau = \int_{0}^{t} e^{-\tau} e^{-2t} e^{2\tau} d\tau = e^{-2t} \int_{0}^{t} e^{\tau} d\tau = e^{-2t} e^{\tau} \Big|_0^t

Evaluado en el rango de integración:

= e^{-2t} (e^{t} - 1) = e^{-t} - e^{-2t}

para t≥0, y además como y(t) = 0 para t<0

y(t) = (e^{-t} - e^{-2t})u(t)

3.5 Respuesta a impulsos – discreto

Referencia: Lathi 3.8 pdf193, Oppenheim 2.1.2 p77/pdf105, Schaum 2.6.C p62,

Una señal discreta de entrada x[n] se representa como una superposición de versiones escaladas de un conjunto de impulsos unitarios desplazados δ[n-k], cada uno con valor diferente de cero en un solo punto en el tiempo, especificado por el valor de k.

La respuesta de un sistema lineal y[n] a x[n] es la superposición de las respuestas escaladas del sistema a cada uno de estos impulsos desplazados.

Si usamos hk[n] como la respuesta del sistema lineal al impulso unitario desplazado por δ[n-k]. La respuesta y[n] del sistema lineal a la entrada x[n] en la ecuacion será la combinación lineal ponderada de las respuesta básicas.

y[n] = \sum_{k=-\infty}^{+\infty} x[k]h_{k}[n]

Si se conoce la respuesta de un sistema lineal al conjunto de impulsos unitarios desplazados, podemos construir una respuesta a una entrada arbitraria.

Si el sistema lineal también es invariante en el tiempo, entonces estas respuestas a impulsos unitarios desplazados en el tiempo son todas las versiones desplazadas en el tiempo unas de otras.

h[n] es la salida del sistem LTI cuando δ[n] es la entrada. Entonces para un sistema LTI la ecuación se vuelve.

y[n] = \sum_{k=-\infty}^{+\infty} x[k]h[n-k]

El resultado se conoce como la «suma de convolución» o «suma de superposición» y la operación miembro derecho de la ecuación se llama convolución de las secuencias x[n] y h[n] que se representa de manera simbólica como:

y[n] = x[n]*h[n]

Ejemplo

Referencia: Openheim Ejemplo 2.4 p85/pdf113

Considere una entrada x[n] y una respuesta al impulso unitario h[n] dada por:

x[n] = (u[n]-u[n-5])
h[n] = αn (u[n]-u[n-7])

con α>1.  Para el ejercicio, α=1.5.

Nota: si α es un entero, por ejemplo 2, usar α=2.0, para que la operación potencia se realice con números reales, como entero se puede saturar y dar error.


Al aplicar la suma de convolución obtiene:

Para aplicar el algoritmo se requiere definir u[n], por ser parte de las funciones x[n] y h[n]. Dado que la operación requiere valores fuera del rango muestreado para n, la sección suma convolución utiliza las funciones en lugar de los vectores xi, hi.

La función está definida en un intervalo simétrico, por lo que el rango de trabajo [a,b] se mantiene de la forma [-b,b] en las intrucciones.

# Ejemplo Oppenheim Ejemplo 2.3 p83/pdf111
import numpy as np

# INGRESO
# Rango [a,b], simétrico a 0
b = 15 ; a = -b

alfa = 1.5
u = lambda n: np.piecewise(n,n>=0,[1,0])

x = lambda n: u(n)-u(n-5)
h = lambda n: (alfa**n)*(u(n)-u(n-7))


# PROCEDIMIENTO
ni = np.arange(a,b+1,1)
xi = x(ni)
hi = h(ni)

# Suma de Convolucion x[n]*h[n]
muestras = len(xi)
yi = np.zeros(muestras, dtype=float)
for i in range(0,muestras):
    suma=0
    for k in range(0,muestras):
        suma = suma + x(ni[k])*h(ni[i]-ni[k])
    yi[i]= suma

# yi = np.convolve(xi,hi,'same')

# SALIDA - GRAFICA
import matplotlib.pyplot as plt

plt.figure(1)
plt.suptitle('Suma de Convolución x[n]*h[n]')

plt.subplot(311)
plt.stem(ni,xi,
         linefmt='b--',
         markerfmt='bo',
         basefmt='k-')
plt.ylabel('x[n]')

plt.subplot(312)
plt.stem(ni,hi,
         linefmt='b--',
         markerfmt='ro',
         basefmt='k-')
plt.ylabel('h[n]')

plt.subplot(313)
plt.stem(ni,yi,
         linefmt='g-.',
         markerfmt='mo',
         basefmt='k-')
plt.ylabel('x[n]*h[n]')
plt.xlabel('n')

plt.show()

La suma convolución se encuentra también disponible con Numpy en np.convolve(), la  sección de suma convoluacion se puede reemplazar y obtener los mismos resultados. Considere que para éste caso se usan los vectores xi y hi.

yi = np.convolve(xi,hi,'same')

el algoritmo se puede aplicar a otros ejercicio para comprobar los resultados.

Continúe con el ejercicio 2.5 del libro.

LTI en dominio frecuencia

Referencia: Oppenheim Ejemplo 4.15 (p.345 pdf)

Ejemplo: Considere un sistema continuo LTI con respuesta al impulso:

h(t) = δ(t-t0)

La respuesta en frecuencia es la transformada de Fourier :

H(jω) = e-jωt0

A cualquier entrada x(t) con transformada X(jω) , la salida en dominio de la frecuencia es:

Y(jω) = H(jω)X(jω) = e-jωt0 X(jω)

que usando la propiedad de desplazamiento:

y(t)=x(t-t0)

Referencia: Oppenheim Ejemplo 4.18 (p.346 pdf)

El Filtrado selectivo en frecuencia se puede representar en un filtro PASA-BAJO ideal:

H(jω) = { 1    |ω|< ωc
        { 0    |ω|> ωc

cuya respuesta en el dominio de la frecuencia es:

h(t) = sen(ωc t)/πt

Como ejemplo: para una frecuencia fs=20 y usando la transformada para una función par se obtiene:

Observaciones: h(t) no es cero para t<0, en consecuencia el filtro pasabajos ideal no es causal. NO es fácil aproximarse mucho a un filtro ideal con componentes reales, por lo que se contruye más facilmente un filtro no ideal.