4.2.3 Transformada Inversa de Laplace de F(s) con Sympy-Python

Referencia: Lathi 4.1. p330. Hsu 3.5.A p119, Oppenheim 9.3 p670

Se dice que la señal x(t) es la transformada inversa de Laplace X(s) se determina como:

x(t) = \frac{1}{2 \pi j} \int_{c - j \infty}^{c + j \infty} X(s) e^{st} ds

donde c es una constante seleccionada para asegurar la convergencia de la integral.

La operación para encontrar la transformada inversa de Laplace requiere un integral en el plano complejo. El camino de integración es a lo largo de c+jω, siendo que ω varía entre -∞ a ∞.

Para la señal e(-at)μ(t) wa posible si c>-a, por ejemplo para un punto c=1 con ω desde -∞ a ∞. Sin embargo esto requiere aplicar conocimientos en teoría de funciones de variable compleja. Es posible evitar estos ‘detalles’ usando la tabla de transformadas de Laplace, donde encontrar la transformada inversa consiste en buscar el modelo de expresión en el domino ‘s‘ y buscar la pareja en el dominio del tiempo ‘t‘.

La transformada inversa de Laplace con Sympy tiene la instrucción sym.inverse_laplace_transform(Fs,s,t), que para términos simples, facilita el proceso de desarrollar del integral hacia el dominio del tiempo. Para simplificar los términos de la expresión F(s) se usan las instrucciones como sym.expand(Fs,s) o para fracciones parciales sym.apart(Fs,s).

Transformada  Inversa de Laplace: [ ej1 H(s) función de transferencia ]  [ej2 con desplazamiento ] [ ej3 suma de términos s ]   [ ej4 Y(s)=H(s)*X(s) con escalones deplazados ]


Ejemplo 1. Transformada Inversa de Laplace de una función de transferencia en dominio ‘s’, H(s)

Referencia: Lathi 1.8-1 p111. Oppenheim Ejemplo 9.24 p700

El ejercicio tiene como referencia la función de transferencia del ejercicio desarrollado para el Ejemplo 1. Corriente en circuito RLC del modelo de entrada-salida. Se requiere obtener la transformada inversa de Laplace:

F(s)= \frac{s}{s^2+3s+2}
F(s): 
  2       1  
----- - -----
s + 2   s + 1

 f(t): 
/   -t      -2*t\             
\- e   + 2*e    /*Heaviside(t)
>>> 

Instrucciones en Python

La expresión de Fs es una fracción que contiene polinomios de ‘s’ y se puede escribir en una sola línea para éste caso. Para disponer de términos más simples, se aplica sym.apart(Fs,s). Para mostrar el resultado de f(t) por cada término de fracción parcial se aplica sym.expand(Fs,s).

# Transformada Inversa de Laplace con Sympy
import sympy as sym

# INGRESO
t = sym.Symbol('t', real=True)
s = sym.Symbol('s')

Fs = s/(s**2+3*s+2)

# coeficientes como racional en dominio 'ZZ'
#k1 = sym.Rational(1/3).limit_denominator(100)
#k2 = sym.Rational(4/3).limit_denominator(100)
#Fs = 1 - k2*1/(s+1) + k1*1/(s-2)

#Fs = (1/s)*(1-sym.exp(-2*s))

#Hs = sym.exp(s)/s - 2*sym.exp(-s)/s + sym.exp(-3*s)/s
#Xs = 2*sym.exp(-s)/s - 2*sym.exp(-3*s)/s
#Fs = Hs*Xs

# PROCEDIMIENTO
# convierte a Sympy si es solo constante
Fs = sym.sympify(Fs)
# separa exponenciales constantes
Fs = sym.expand_power_exp(Fs)
Fs = sym.expand(Fs,s) # terminos suma

# Fracciones parciales
if not(Fs.has(sym.exp)):
    Fs = sym.apart(Fs,s)

ft  = sym.inverse_laplace_transform(Fs,s,t)

lista_escalon = ft.atoms(sym.Heaviside)
ft = sym.expand(ft,t) # terminos suma
ft = sym.collect(ft,lista_escalon)

# SALIDA
print('\n F(s): ')
sym.pprint(Fs)

print('\n f(t): ')
sym.pprint(ft)

Transformada  Inversa de Laplace: [ ej1 H(s) función de transferencia ]  [ej2 con desplazamiento ] [ ej3 suma de términos s ]   [ ej4 Y(s)=H(s)*X(s) con escalones deplazados ]
..


Ejemplo 2. Transformada Inversa de Laplace con impulso δ(t) y suma de términos

Referencia: Oppenheim ejemplo 9.5 p661

Se requiere realizar el proceso contrario a lo desarrollado en el Ejemplo 4 de Transformadas de Laplace con Sympy. En el ejercicio se expone sobre uso de los coeficientes en forma de enteros o fracciones.

Obtener la función en el dominio del tiempo:

F(s) = 1 - \frac{4}{3}\frac{1}{s+1} + \frac{1}{3}\frac{1}{s-2}

La expresión de ingreso para F(s) en el algoritmo anterior se escribe como,

# coeficientes como racional en dominio 'ZZ'
k1 = sym.Rational(1/3).limit_denominator(100)
k2 = sym.Rational(4/3).limit_denominator(100)

Fs = 1 - k2*1/(s+1) + k1*1/(s-2)

con lo que se obteiene el resultado esperado y acorde al ejercicio original de la referencia:

F(s): 
        4           1    
1 - --------- + ---------
    3*(s + 1)   3*(s - 2)

 f(t): 
/ 2*t      -t\                             
|e      4*e  |                             
|---- - -----|*Heaviside(t) + DiracDelta(t)
\ 3       3  /                             
>>>  

Transformada  Inversa de Laplace: [ ej1 H(s) función de transferencia ]  [ej2 con desplazamiento ] [ ej3 suma de términos s ]   [ ej4 Y(s)=H(s)*X(s) con escalones deplazados ]


Ejemplo 3 Transformada Inversa de Laplace con términos de desplazamiento en tiempo

Referencia: Lathi Ejercicio 4.1.a p337

Se requiere la transformada inversa de Laplace del resultado ejercicio 2  desarrollado con Sympy para una función gate o compuerta:

F(s)= \frac{1}{s} \Big( 1 - e^{-2s} \Big)

En el caso de usar desplazamientos en tiempo, se recomienda también usar las expresiones simples de suma, para que por cada término de suma aplicar la instrucción de la transformada inversa. Recuerde usar sym.expand(Fs,s) y sym.apart(Fs,s) antes de aplicar la tranformada inversa.

La expresión en Sympy de la entrada es:

Fs = (1/s)*(1-sym.exp(-2*s))

con lo que el resultado a obtener con el algoritmo del ejemplo 4 es:

 F(s): 
     -2*s
1   e    
- - -----
s     s  

 f(t): 
Heaviside(t) - Heaviside(t - 2)
>>>   

La expresión de F(s) al aplicar directamente fracciones parciales con sym.apart() se muestra un error por tener un elemento exponencial sym.exp()en el numerador.

Como los ejercicios a resolver tienen varios términos que se multiplican o que se suman, se procede crear una función para los procesos de expansion en fracciones parciales y transformadas inversas con fracciones parciales.

Transformada  Inversa de Laplace: [ ej1 H(s) función de transferencia ]  [ej2 con desplazamiento ] [ ej3 suma de términos s ]   [ ej4 Y(s)=H(s)*X(s) con escalones deplazados ]
..


Ejemplo 4. y(t) desde h(t) y x(t) con términos escalón desplazados

Referencia: 1Eva2009TII_T3 LTI CT y(t) desde h(t) y x(t) con términos escalón desplazados

Se simplifica el enunciado del ejercicio, enfocandose en que la transformada se aplica a F(s)  y que es el producto de la señal de entrada X(s) y la respuesta al impulso H(s),

F(s) = H(s)*X(s) H(s) = \frac{1}{s}e^{s} - 2\frac{1}{s}e^{-s}+ \frac{1}{s} e^{-3s} X(s) = 2\frac{1}{s}e^{-s} - 2\frac{1}{s}e^{-3s}

La expresión a usar para la transformada inversa de Laplace se convierte en:

F(s) = \Bigg[ \frac{1}{s}e^{s} - 2\frac{1}{s}e^{-s}+ \frac{1}{s} e^{-3s} \Bigg ] \Bigg [ 2\frac{1}{s}e^{-s} - 2\frac{1}{s}e^{-3s} \Bigg]

se obtiene términos de la transformadas como:

 F(s): 
        -2*s      -4*s      -6*s
2    6*e       6*e       2*e    
-- - ------- + ------- - -------
 2       2         2         2  
s       s         s         s   

 f(t): 
2*t*Heaviside(t) + (12 - 6*t)*Heaviside(t - 2) + 
 (12 - 2*t)*Heaviside(t - 6) 
+ (6*t - 24)*Heaviside(t - 4)
>>> 

Transformada  Inversa de Laplace: [ ej1 H(s) función de transferencia ]  [ej2 con desplazamiento ] [ ej3 suma de términos s ]   [ ej4 Y(s)=H(s)*X(s) con escalones deplazados ]