{"id":4355,"date":"2017-05-04T09:25:55","date_gmt":"2017-05-04T14:25:55","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/telg1001\/?p=4355"},"modified":"2026-04-05T23:18:41","modified_gmt":"2026-04-06T04:18:41","slug":"transformada-inversa-laplace-sympy","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u04\/transformada-inversa-laplace-sympy\/","title":{"rendered":"4.2.2 Transformada Inversa de Laplace de F(s) con Sympy-Python"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#laplaceinversa\">Transformada Inversa<\/a><\/p>\n\n\n\n<p><a href=\"#hs\">H(s)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#constante\">constante<\/a><\/p>\n\n\n\n<p><a href=\"#e-as\">e<sup>(-as)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#escalondesplazado\">1\/s desplazado<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"laplaceinversa\">1. Transformada Inversa de Laplace<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Lathi 4.1. p330. Hsu 3.5.A p119, Oppenheim 9.3 p670<\/p>\n\n\n\n<p>Se dice que la se\u00f1al x(t) es la transformada inversa de Laplace X(s) se determina como:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = \\frac{1}{2 \\pi j} \\int_{c - j \\infty}^{c + j \\infty} X(s) e^{st} ds<\/span>\n\n\n\n<p>donde c es una constante seleccionada para asegurar la convergencia de la integral.<\/p>\n\n\n\n<p>La operaci\u00f3n para encontrar la transformada inversa de Laplace requiere un integral en el plano complejo. El camino de integraci\u00f3n es a lo largo de c+j\u03c9, siendo que \u03c9 var\u00eda entre -\u221e a \u221e.<\/p>\n\n\n\n<p>Para la se\u00f1al e<sup>(-at)<\/sup>\u03bc(t) wa posible si c&gt;-a, por ejemplo para un punto c=1 con \u03c9 desde -\u221e a \u221e. Sin embargo esto requiere aplicar conocimientos en teor\u00eda de funciones de variable compleja. Es posible evitar estos 'detalles' usando la <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u04\/transformada-laplace-tabla\/\" data-type=\"post\" data-id=\"1344\">tabla de transformadas de Laplace<\/a>, donde encontrar la transformada inversa consiste en buscar el modelo de expresi\u00f3n en el domino '<code>s<\/code>' y buscar la pareja en el dominio del tiempo '<code>t<\/code>'.<\/p>\n\n\n\n<p>La transformada inversa de Laplace con Sympy tiene la instrucci\u00f3n <code>sym.<a href=\"https:\/\/docs.sympy.org\/latest\/modules\/integrals\/integrals.html#sympy.integrals.transforms.inverse_laplace_transform\">inverse_laplace_transform<\/a>(Fs,s,t)<\/code>, que&nbsp;para t\u00e9rminos simples, facilita el proceso de desarrollar del integral hacia el dominio del tiempo. <\/p>\n\n\n\n<p>Para simplificar los t\u00e9rminos de la expresi\u00f3n F(s) se usan las instrucciones como <code>sym.expand(Fs,s)<\/code> o&nbsp;para fracciones parciales <code>sym.apart(Fs,s)<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#laplaceinversa\">Transformada Inversa<\/a><\/p>\n\n\n\n<p><a href=\"#hs\">H(s)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#constante\">constante<\/a><\/p>\n\n\n\n<p><a href=\"#e-as\">e<sup>(-as)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#escalondesplazado\">1\/s desplazado<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"hs\">2. Transformada Inversa de Laplace de una funci\u00f3n de transferencia en dominio 's', H(s)<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Lathi 1.8-1 p111. Oppenheim Ejemplo 9.24 p700<\/p>\n\n\n\n<p>El ejercicio tiene como referencia la funci\u00f3n de transferencia del ejercicio desarrollado para el Ejemplo 1. <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u03\/sistema-modelo-entrada-salida\/\" data-type=\"post\" data-id=\"522\">Corriente en circuito RLC del modelo de entrada-salida<\/a>. Se requiere obtener la transformada inversa de Laplace:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> F(s)= \\frac{s}{s^2+3s+2} <\/span>\n\n\n\n<pre class=\"wp-block-code\"><code>F(s): \n  2       1  \n\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\ns + 2   s + 1\n\n f(t): \n\u239b   -t      -2\u22c5t\u239e     \n\u239d- \u212f   + 2\u22c5\u212f    \u23a0\u22c5\u03b8(t)\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#laplaceinversa\">Transformada Inversa<\/a><\/p>\n\n\n\n<p><a href=\"#hs\">H(s)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#constante\">constante<\/a><\/p>\n\n\n\n<p><a href=\"#e-as\">e<sup>(-as)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#escalondesplazado\">1\/s desplazado<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmo\">3. Algoritmo en Python<\/h2>\n\n\n\n<p>La expresi\u00f3n de Fs es una fracci\u00f3n que contiene polinomios de 's' y se puede escribir en una sola l\u00ednea para \u00e9ste caso. Para disponer de t\u00e9rminos m\u00e1s simples, se aplica <code>sym.apart(Fs,s)<\/code>. Para mostrar el resultado de f(t) por cada t\u00e9rmino de fracci\u00f3n parcial se aplica <code>sym.expand(Fs,s)<\/code>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Transformada Inversa de Laplace con Sympy\nimport sympy as sym\n\n# INGRESO\nt = sym.Symbol('t', real=True)\ns = sym.Symbol('s')\n\nFs = s\/(s**2+3*s+2)\n\n# coeficientes como racional en dominio 'ZZ'\n#k1 = sym.Rational(1\/3).limit_denominator(100)\n#k2 = sym.Rational(4\/3).limit_denominator(100)\n#Fs = 1 - k2*1\/(s+1) + k1*1\/(s-2)\n\n#Fs = (1\/s)*(1-sym.exp(-2*s))\n\n#Hs = sym.exp(s)\/s - 2*sym.exp(-s)\/s + sym.exp(-3*s)\/s\n#Xs = 2*sym.exp(-s)\/s - 2*sym.exp(-3*s)\/s\n#Fs = Hs*Xs\n\n# PROCEDIMIENTO\n# convierte a Sympy si es solo constante\nFs = sym.sympify(Fs)\n# separa exponenciales constantes\nFs = sym.expand_power_exp(Fs)\nFs = sym.expand(Fs,s) # terminos suma\n\n# Fracciones parciales\nif not(Fs.has(sym.exp)):\n    Fs = sym.apart(Fs,s)\n\nft  = sym.inverse_laplace_transform(Fs,s,t)\n\nlista_escalon = ft.atoms(sym.Heaviside)\nft = sym.expand(ft,t) # terminos suma\nft = sym.collect(ft,lista_escalon)\n\n# SALIDA\nprint('\\n F(s): ')\nsym.pprint(Fs)\n\nprint('\\n f(t): ')\nsym.pprint(ft)\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#laplaceinversa\">Transformada Inversa<\/a><\/p>\n\n\n\n<p><a href=\"#hs\">H(s)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#constante\">constante<\/a><\/p>\n\n\n\n<p><a href=\"#e-as\">e<sup>(-as)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#escalondesplazado\">1\/s desplazado<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"constante\">4. Transformada Inversa de Laplace con una constante o impulso \u03b4(t) y suma de t\u00e9rminos<\/h2>\n\n\n\n<p><strong>Referencia<\/strong>: Oppenheim ejemplo 9.5 p661<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>Obtener la funci\u00f3n en el dominio del tiempo:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> F(s) = 1 - \\frac{4}{3}\\frac{1}{s+1} + \\frac{1}{3}\\frac{1}{s-2} <\/span>\n\n\n\n<p>La expresi\u00f3n de ingreso para F(s) en el algoritmo anterior se escribe como,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># coeficientes como racional en dominio 'ZZ'<\/span>\nk1 = sym.Rational(1\/3).limit_denominator(100)\nk2 = sym.Rational(4\/3).limit_denominator(100)\n\nFs = 1 - k2*1\/(s+1) + k1*1\/(s-2)<\/code><\/pre>\n\n\n\n<p>con lo que se obtiene el resultado esperado y acorde al ejercicio original de la referencia:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> F(s): \n        4           1    \n1 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    3\u22c5(s + 1)   3\u22c5(s - 2)\n\n f(t): \n\u239b 2\u22c5t      -t\u239e            \n\u239c\u212f      4\u22c5\u212f  \u239f            \n\u239c\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u239f\u22c5\u03b8(t) + \u03b4(t)\n\u239d 3       3  \u23a0            \n&gt;&gt;&gt;  <\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#laplaceinversa\">Transformada Inversa<\/a><\/p>\n\n\n\n<p><a href=\"#hs\">H(s)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#constante\">constante<\/a><\/p>\n\n\n\n<p><a href=\"#e-as\">e<sup>(-as)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#escalondesplazado\">1\/s desplazado<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e-as\">5. Transformada Inversa de Laplace con t\u00e9rminos de desplazamiento en tiempo<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Lathi Ejercicio 4.1.a p337<\/p>\n\n\n\n<p>Se requiere la transformada inversa de Laplace del resultado ejercicio 2&nbsp; desarrollado con Sympy para una funci\u00f3n gate o compuerta:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> F(s)= \\frac{1}{s} \\Big( 1 - e^{-2s} \\Big) <\/span>\n\n\n\n<p>En el caso de usar desplazamientos en tiempo, se recomienda tambi\u00e9n usar las <strong>expresiones simples<\/strong> de suma, para que por cada t\u00e9rmino de suma aplicar la instrucci\u00f3n de la transformada inversa. Recuerde usar <code>sym.expand(Fs,s)<\/code> y <code>sym.apart(Fs,s)<\/code> antes de aplicar la transformada inversa.<\/p>\n\n\n\n<p>La expresi\u00f3n en Sympy de la entrada es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Fs = (1\/s)*(1-sym.exp(-2*s))<\/code><\/pre>\n\n\n\n<p>con lo que el resultado a obtener con el algoritmo del ejemplo 4 es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> F(s): \n     -2\u22c5s\n1   \u212f    \n\u2500 - \u2500\u2500\u2500\u2500\u2500\ns     s  \n\n f(t): \n\u03b8(t) - \u03b8(t - 2)\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>La expresi\u00f3n de F(s) al aplicar directamente fracciones parciales con <code>sym.apart()<\/code> se muestra un error por tener un elemento exponencial <code>sym.exp()<\/code>en el numerador.<\/p>\n\n\n\n<p>Como los ejercicios a resolver tienen varios t\u00e9rminos que se multiplican o que se suman, se procede crear una funci\u00f3n para los procesos de expansi\u00f3n en fracciones parciales y transformadas inversas con fracciones parciales.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#laplaceinversa\">Transformada Inversa<\/a><\/p>\n\n\n\n<p><a href=\"#hs\">H(s)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#constante\">constante<\/a><\/p>\n\n\n\n<p><a href=\"#e-as\">e<sup>(-as)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#escalondesplazado\">1\/s desplazado<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"escalondesplazado\">6. y(t) desde h(t) y x(t) con t\u00e9rminos escal\u00f3n desplazados<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-1eva\/1eva2009tii_t3-lti-ct-ytdesdehtxt-terminos-escalon-desplazados\/\" data-type=\"post\" data-id=\"1604\">1Eva2009TII_T3 LTI CT y(t) desde h(t) y x(t) con t\u00e9rminos escal\u00f3n desplazados<\/a><\/p>\n\n\n\n<p>Se simplifica el enunciado del ejercicio, enfoc\u00e1ndose en que la transformada se aplica a F(s)&nbsp; y que es el producto de la se\u00f1al de entrada X(s) y la respuesta al impulso H(s),<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> F(s) = H(s)*X(s) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> H(s) = \\frac{1}{s}e^{s} - 2\\frac{1}{s}e^{-s}+ \\frac{1}{s} e^{-3s}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = 2\\frac{1}{s}e^{-s} - 2\\frac{1}{s}e^{-3s} <\/span>\n\n\n\n<p>Observe que H(s) tiene un t\u00e9rmino adelantado e<sup>s<\/sup> que es no causal, sin embargo, Fs=H(s)*X(s) no contiene este factor.<\/p>\n\n\n\n<p>La expresi\u00f3n a usar para la transformada inversa de Laplace se convierte en:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 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]<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> F(s) = \\frac{2}{s^2} - 6\\frac{1}{s^2}e^{-^2s}+ 6\\frac{1}{s^2} e^{-4s} - 2\\frac{1}{s^2}e^{-6s} <\/span>\n\n\n\n<p>en el algoritmo se usa:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hs = sym.exp(s)\/s - 2*sym.exp(-s)\/s + sym.exp(-3*s)\/s\nXs = 2*sym.exp(-s)\/s - 2*sym.exp(-3*s)\/s\nFs = Hs*Xs<\/code><\/pre>\n\n\n\n<p>se obtiene t\u00e9rminos de la transformadas como:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code> F(s): \n        -2\u22c5s      -4\u22c5s      -6\u22c5s\n2    6\u22c5\u212f       6\u22c5\u212f       2\u22c5\u212f    \n\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2       2         2         2  \ns       s         s         s   \n\n f(t): \n2\u22c5t\u22c5\u03b8(t) + (12 - 6\u22c5t)\u22c5\u03b8(t - 2) + (12 - 2\u22c5t)\u22c5\u03b8(t - 6) + (6\u22c5t - 24)\u22c5\u03b8(t - 4)\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#laplaceinversa\">Transformada Inversa<\/a><\/p>\n\n\n\n<p><a href=\"#hs\">H(s)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#constante\">constante<\/a><\/p>\n\n\n\n<p><a href=\"#e-as\">e<sup>(-as)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#escalondesplazado\">1\/s desplazado<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Transformada Inversa H(s) algoritmo constante e(-as) 1\/s desplazado 1. Transformada Inversa de Laplace Referencia: Lathi 4.1. p330. Hsu 3.5.A p119, Oppenheim 9.3 p670 Se dice que la se\u00f1al x(t) es la transformada inversa de Laplace X(s) se determina como: donde c es una constante seleccionada para asegurar la convergencia de la integral. La operaci\u00f3n para [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-ss-unidades","format":"standard","meta":{"footnotes":""},"categories":[174],"tags":[],"class_list":["post-4355","post","type-post","status-publish","format-standard","hentry","category-ss-u04"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/4355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=4355"}],"version-history":[{"count":11,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/4355\/revisions"}],"predecessor-version":[{"id":24012,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/4355\/revisions\/24012"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=4355"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=4355"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=4355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}