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)

Publicado por

Edison Del Rosario

edelros@espol.edu.ec / Profesor del FIEC/FCNM-ESPOL