{"id":350,"date":"2017-05-02T09:05:53","date_gmt":"2017-05-02T14:05:53","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/telg1001\/?p=350"},"modified":"2026-04-12T16:20:45","modified_gmt":"2026-04-12T21:20:45","slug":"transformada-laplace-integral-sympy","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u04\/transformada-laplace-integral-sympy\/","title":{"rendered":"4.2 Transformada de Laplace - Integral con Sympy"},"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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t) gate<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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=\"integral\">1.Transformada de Laplace - Integral<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Lathi 4.1. p330. Hsu 3.2.A p110, Oppenheim 9.1 p655<\/p>\n\n\n\n<p>La transformada de Laplace permite simplificar el proceso de soluci\u00f3n de ecuaciones integro-diferenciales usando operaciones mas simples al cambiar desde el dominio del tiempo 't' al dominio 's'.<\/p>\n\n\n\n<p>Para una se\u00f1al cont\u00ednua x(t), la transformada de Laplace esta definida como:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{-\\infty}^{\\infty} x(t) e^{-st} dt <\/span>\n\n\n\n<p>Para el caso de se\u00f1ales cont\u00ednuas, lineales y causales, se define una se\u00f1al x(t) que tiene un componente escal\u00f3n unitario \u03bc(t)que hace que la integral se desarrolle de forma <strong>unilateral<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"257\" height=\"65\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/unilateral_ejex.png\" alt=\"unilateral eje x\" class=\"wp-image-20869\" \/><\/figure>\n\n\n\n<p>Se enfatiza que se entiende como transformada de Laplace <strong>unilateral <\/strong>si cada se\u00f1al x(t) es cero para t&lt;0, y es apropiado indicarlo al multiplicar la se\u00f1al por el escal\u00f3n unitario \u03bc(t)<\/p>\n\n\n\n<p class=\"has-text-align-center\"><span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{-\\infty}^{\\infty} x(t) \\mu(t) e^{-st} dt = \\int_{0}^{\\infty} x(t) \\mu(t) e^{-st} dt<\/span><\/p>\n\n\n\n<p>Para la <em><strong>transformada de Laplace unilateral<\/strong><\/em>, existe una transformada inversa de X(s) que es \u00fanica. En consecuencia, <strong><em>no hay necesidad de especificar la regi\u00f3n de convergencia (ROC) de forma expl\u00edcita<\/em><\/strong>. Motivo por el que generalmente no se menciona la ROC para transformadas unilaterales. (Lathi p337).<\/p>\n\n\n\n<p>La se\u00f1al x(t) es la inversa de la transformada X(s), que se obtiene de la forma:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = \\frac{1}{2\u03c0j} \\int_{c-j\\infty}^{c+j\\infty} X(s) e^{st} dt <\/span>\n\n\n\n<p>donde <strong><em>c<\/em><\/strong> es una constante seleccionada para asegurar la convergencia de la integral.<\/p>\n\n\n\n<p>Los pares de ecuaciones conocidos como \"<a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u04\/transformada-laplace-tabla\/\" data-type=\"post\" data-id=\"1344\">Pares de la transformada de Laplace<\/a>\" se escriben de forma simb\u00f3lica:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) \\Rightarrow \\mathscr{L}[x(t)] <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) \\Rightarrow \\mathscr{L}^{-1}[X(s)]<\/span>\n\n\n\n<p>que tienen algunas propiedades de inter\u00e9s para se\u00f1ales y sistemas como la linealidad,<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\mathscr{L}[a_1 x_1(t) + a_2 x_2 (t)] = a_1 X_1(s) + a_2 X_2 (s)<\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"769\" height=\"231\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/03\/cantante03.png\" alt=\"dos cantantes un micr\u00f3fono 03\" class=\"wp-image-19518\" \/><\/figure>\n\n\n\n<p>Para el desarrollo de ejercicios se usa principalmente la <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u04\/transformada-laplace-tabla\/\" data-type=\"post\" data-id=\"1344\">tabla de pares de Transformadas de Laplace<\/a>, los pares se obtienen al aplicar la definici\u00f3n del integral. El desarrollo el integral se puede tambi\u00e9n realizar usando Sympy-Python.<\/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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t) gate<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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-at\">2. Integral de la Transformada de Laplace de una exponencial decreciente, un solo termino<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Lathi ejemplo 4.1. p331, Oppenheim Ejemplo 9.2 p656, Hsu Ejemplo 3.1 p111<\/p>\n\n\n\n<p>Para una se\u00f1al x(t) = e<sup>-at<\/sup>\u03bc(t), encuentre la transformada X(s) y su regi\u00f3n de convergencia (ROC)<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = e^{-at} \u03bc(t) <\/span>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"443\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_ft_Ej01.png\" alt=\"Transformada Laplace ft Ej01\" class=\"wp-image-19890\" \/><\/figure>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">X(s) = \\int_{-\\infty}^{\\infty} e^{-at} \\mu (t) e^{-st} \\delta t <\/span>\n\n\n\n<p>pero tomando en cuenta que \u03bc(t)=0 para t&lt;0 y \u03bc(t)=1 para t\u22650:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{0}^{\\infty} e^{-at} e^{-st} \\delta t <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = \\int_{0}^{\\infty} e^{-(s+a)t} \\delta t = -\\frac{1}{s+a} e^{-(s+a)t}\\Big|_{0}^{\\infty}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = \\Big[-\\frac{1}{s+a} e^{-(s+a)(\\infty)}\\Big]-\\Big[ -\\frac{1}{s+a} e^{-(s+a)(0)}\\Big]<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\frac{1}{s+a}<\/span>\n\n\n\n<p>con polo s=-a al producir divisi\u00f3n para cero en la expresi\u00f3n.<\/p>\n\n\n\n<p>Se puede observar que la regi\u00f3n de convergencia, ROC, de X(s) es Re(s)&gt;-a, como se muestra en la gr\u00e1fica. Para otros valores de s el integral no converge.<\/p>\n\n\n\n<p>Para el ejemplo, siendo a=2<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"440\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_Fs_Ej01.png\" alt=\"Transformada Laplace Fs Ej01\" class=\"wp-image-19891\" \/><\/figure>\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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t) gate<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">2.1 Algoritmo para Integrar con Sympy b\u00e1sico<\/h3>\n\n\n\n<p>El algoritmo con Python se desarrolla progresivamente a partir de los ejercicios resueltos de forma anal\u00edtica, usando las librer\u00edas de Sympy-Python. En caso de requerir usar el algoritmo completo,&nbsp; puede ir directamente al ejercicio que incluye impulsos unitarios y considera el integral unilateral o completo en s.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dentro de integral f(t)*e(-st):\n -t\u22c5(a + s)     \n\u212f          \u22c5\u03b8(t)\n\n expresion F(s):\n  1  \n\u2500\u2500\u2500\u2500\u2500\na + s\n\n {Q_polos:veces}:  {-a: 1}\n {P_ceros:veces}:  {}<\/code><\/pre>\n\n\n\n<p>Para iniciar se empieza usando una expresi\u00f3n simple como la del ejemplo. Semejante a los algoritmos anteriores realizados, se definen las variables tipo s\u00edmbolo a usar y el escal\u00f3n unitario en una expresi\u00f3n 'u' para simplificar su escritura posterior.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># INGRESO<\/span>\nt = sym.Symbol(<span style=\"color: #008000\">'t'<\/span>, real=<span style=\"color: #d35400\">True<\/span>)\na = sym.Symbol(<span style=\"color: #008000\">'a'<\/span>, real=<span style=\"color: #d35400\">True<\/span>)\ns = sym.Symbol(<span style=\"color: #008000\">'s'<\/span>)\nu = sym.Heaviside(t)<\/code><\/pre>\n\n\n\n<p>El desarrollo de los integrales es m\u00e1s sencillo si la expresi\u00f3n se presenta como t\u00e9rminos de suma y se simplifica los exponentes con la instrucci\u00f3n&nbsp; <code>sym.powsimp()<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; fts = ft*sym.exp(-s*t)\n&gt;&gt;&gt; fts\nexp(-a*t)*exp(-s*t)*Heaviside(t)\n&gt;&gt;&gt; fts = sym.powsimp(fts)\n&gt;&gt;&gt; fts\nexp(-t*(a + s))*Heaviside(t)\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>Las instrucciones de las operaciones para el algoritmo ser\u00e1n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># PROCEDIMIENTO<\/span>\nfts = ft*sym.exp(-s*t) <span style=\"color: #ff0000\"># f(t,s) para integrar<\/span>\nfts = sym.expand(fts)  <span style=\"color: #ff0000\"># expresion de sumas<\/span>\nfts = sym.powsimp(fts) <span style=\"color: #ff0000\"># simplifica exponentes<\/span><\/code><\/pre>\n\n\n\n<p>La operaci\u00f3n de integraci\u00f3n es unilateral pues considera principalmente <strong>se\u00f1a<\/strong>les y <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u02\/sistemas-causales-y-no-causales\/\" data-type=\"post\" data-id=\"231\"><strong>sistema<\/strong>s <strong>causal<\/strong>es<\/a> como se justifica en la parte te\u00f3rica, por lo que el intervalo de integraci\u00f3n es [0,\u221e].<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"257\" height=\"65\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/unilateral_ejex.png\" alt=\"unilateral eje x\" class=\"wp-image-20869\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># integral Laplace unilateral<\/span>\nFs_L = sym.integrate(fts,(t,0,sym.oo))<\/code><\/pre>\n\n\n\n<p>El resultado del integral se presenta por por partes o intervalos, de la forma&nbsp; <code>sym.piecewise()<\/code> mostrada, por facilidad de lectura con <code>sym.pprint(Fs_L)<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Fs_L:\n\n\/               1                                    pi\n|             -----               for |arg(a + s)| &lt; --\n|             a + s                                  2 \n|                                                      \n| oo                                                   \n|  \/                                                   \n&lt; |                                                    \n| |   -t*(a + s)                                       \n| |  e          *Heaviside(t) dt        otherwise      \n| |                                                    \n|\/                                                     \n|0                                                     \n\\                                <\/code><\/pre>\n\n\n\n<p>La parte a usar para el desarrollo del ejercicio corresponde la primera expresi\u00f3n <code>Fs = Fs_L.args[0]<\/code>, que contiene expresi\u00f3n e intervalo. Para quedarse solo con la expresi\u00f3n y omitir el intervalo, se usa <code>Fs[0]<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; Fs = Fs_L.args&#091;0]\n&gt;&gt;&gt; Fs\n(1\/(a + s), Abs(arg(a + s)) &lt; pi\/2)\n&gt;&gt;&gt; Fs = Fs&#091;0]\n&gt;&gt;&gt; Fs\n1\/(a + s)\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>Las instrucciones para el algoritmo ser\u00e1n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Fs = Fs_L.args&#091;0] <span style=\"color: #ff0000\"># primera ecuacion e intervalo<\/span>\nFs = Fs&#091;0]        <span style=\"color: #ff0000\"># solo expresion<\/span><\/code><\/pre>\n\n\n\n<p>El F(s) puede presentar divisiones para cero para alg\u00fan valor de <strong>s<\/strong> que se denominan \"<strong>polos<\/strong>\", as\u00ed como valores de <strong>s<\/strong> que resultan en \"<strong>ceros<\/strong>\". <\/p>\n\n\n\n<p>Se usa la expresi\u00f3n Fs=P\/Q como una fracci\u00f3n de polinomios P(s) y Q(s). Las ra\u00edces del polinomio Q determinan los polos y se obtienen con sym.roots(Q).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># polos y ceros en Fs<\/span>\n&#091;P,Q] = Fs.as_numer_denom()\nP = sym.poly(P,s)\nQ = sym.poly(Q,s)\nP_ceros = sym.roots(P)\nQ_polos = sym.roots(Q)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Algoritmo en Python - Ejemplo<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Transformada de Laplace\n# integral de Laplace unilateral\n# https:\/\/blog.espol.edu.ec\/algoritmos101\/senales\/ss-unidades\/#unidad4\nimport numpy as np\nimport sympy as sym\n \n# INGRESO\nt = sym.Symbol('t', real=True)\na = sym.Symbol('a', real=True)\ns = sym.Symbol('s')\nu = sym.Heaviside(t)\n \nft = sym.exp(-a*t)*u\n \na_k = 2 # valor de 'a' constante\n# Grafica, intervalo tiempo &#x5B;t_a,t_b]\nt_a = -1\nt_b = 10\nmuestras = 101  # resolucion grafica\n \n# PROCEDIMIENTO\nfts = ft*sym.exp(-s*t) # f(t,s) para integrar\nfts = sym.expand(fts)  # expresion de sumas\nfts = sym.powsimp(fts) # simplifica exponentes\n \n# integral Laplace unilateral\nFs_L = sym.integrate(fts,(t,0,sym.oo))\nFs = Fs_L.args&#x5B;0] # primera ecuacion e intervalo\nFs = Fs&#x5B;0]        # solo expresion\n \n# polos y ceros en Fs\n&#x5B;P,Q] = Fs.as_numer_denom()\nP = sym.poly(P,s)\nQ = sym.poly(Q,s)\nP_ceros = sym.roots(P)\nQ_polos = sym.roots(Q)\n \n# SALIDA\nprint(' dentro de integral f(t)*e(-st):')\nsym.pprint(fts)\nprint('\\n expresion F(s):')\nsym.pprint(Fs)\nprint('\\n {Q_polos:veces}: ',Q_polos)\nprint(' {P_ceros:veces}: ',P_ceros)\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"grafica\">2.2 Gr\u00e1fica de la transformada de Laplace<\/h3>\n\n\n\n<p>Para realizar una gr\u00e1fica F(s) en el dominio s y marcar el polo, se sustituye en las ecuaciones resultantes los valores de '<code>a<\/code>' con '<code>a_k<\/code>'. La expresi\u00f3n num\u00e9rica para la gr\u00e1fica se obtiene con <code>lambdify<\/code> y se aplica en el intervalo [s<sub>a<\/sub> , s<sub>b<\/sub>]. Ejemplos de gr\u00e1ficas se muestran en la <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/senales\/ss-unidades\/#unidad1\">unidad 1<\/a>.<\/p>\n\n\n\n<p>El intervalo [s<sub>a<\/sub> , s<sub>b<\/sub>] considera los extremos de las ra\u00edces&nbsp;o polos del denominador Q.&nbsp; Los polos se marcan usando puntos de dispersi\u00f3n con <code>plt.scatter()<\/code> y una l\u00ednea vertical <code>plt.axvline()<\/code> para resaltar en la gr\u00e1fica el efecto del polo.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA -----------\nimport matplotlib.pyplot as plt\n\nft = ft.subs(a,a_k) # a tiene valor a_k\nFs = Fs.subs(a,a_k)\n\n# f(t) # evalua en intervalo\nti  = np.linspace(t_a,t_b,muestras)\nf_t = sym.lambdify(t,ft)\nfti = f_t(ti)\n\n# Q polinomio denominador con valor de a\n# polos en s\n&#x5B;P,Q] = Fs.as_numer_denom()\nQ = Q.as_poly(s)\nQ_polos = sym.roots(Q)\n\n# estima intervalo para s, raices reales\ns_a = 0 ; s_b = 0\npolos = list(Q_polos.keys())\ns_a = int(min(s_a,min(polos)))-1\ns_b = int(max(s_b,max(polos)))+1\n\n# F(s) # evalua en intervalo\nF_s = sym.lambdify(s,Fs)\ns_i = np.linspace(s_a,s_b,muestras)\nFsi = F_s(s_i) # Revisar cuando s es complejo\n\n# GRAFICA f(t) \nfig_ft, graf_ft = plt.subplots()\nplt.plot(ti,fti,label='f(t)')\nplt.xlabel('t')\nplt.ylabel('f(t)')\nplt.title('f(t) = '+str(ft)+' ; a='+str(a_k))\nplt.grid()\n\n# GRAFICA F(s) , corte en plano real\nfig_Fs, graf_Fs = plt.subplots()\nplt.plot(s_i,Fsi, color='green',label='F(s)')\nfor raiz in Q_polos.keys():    \n    plt.axvline(sym.re(raiz),color='red')\n    plt.scatter(sym.re(raiz),sym.im(raiz),\n                label='polo:'+str(raiz),\n                marker='x',color='red')\nplt.axvline(0,color='gray')\nplt.legend()\nplt.xlabel('s')\nplt.ylabel('F(s)')\nplt.title('F(s) = '+str(Fs)+' ; a='+str(a_k))\nplt.grid()\nplt.show()\n<\/pre><\/div>\n\n\n<p>Se recomienda probar con otros ejemplos desarrollados para la parte anal\u00edtica y de ser necesario siguiendo la teor\u00eda presentada en cada caso se mejora y actualiza el algoritmo.<\/p>\n\n\n\n<p>Considere tambi\u00e9n que Sympy dispone de la librer\u00eda para transformadas de Laplace con instrucciones simplificadas que se usar\u00e1n a lo largo de la unidad 4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Fs_L = sym.laplace_transform(ft,t,s)<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Los siguientes video presenta una interpretaci\u00f3n gr\u00e1fica y animada de la transformada de Laplace en el plano s real e imaginario.<\/p>\n\n\n\n<p><strong>Referencia<\/strong>: [1] But what is a Laplace Transform?. 3Blue1Brown. 12 Octubre 2025<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"But what is a Laplace Transform?\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/j0wJBEZdwLs?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>[2] Transformada de Laplace Explicada y Visualizada intuitivamente. Physics Videos by Eugene Khutoryansky. 18 febrero 2018.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Laplace Transform Explained and Visualized Intuitively\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/6MXMDrs6ZmA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"propiedades\">3. Propiedades de la transformada de Laplace<\/h2>\n\n\n\n<p>Una de las <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u04\/transformada-laplace-tabla-de-propiedades\/\" data-type=\"post\" data-id=\"1354\">propiedades<\/a> de inter\u00e9s es la diferenciaci\u00f3n. Por ejemplo, los sistemas formados por circuitos electr\u00f3nicos que tienen inductores L, usan la variaci\u00f3n de corriente o derivada de la corriente, generando ecuaciones diferenciales ordinarias. La transformada de Laplace presenta una alternativa viable para tratar estos circuitos como se mostrar\u00e1 en los ejemplos de la Unidad.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Propiedad de diferenciaci\u00f3n<\/h3>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\delta x}{\\delta t} \\Leftrightarrow sX(s) - x(0^{-})<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{d^2x}{dt^2} \\Leftrightarrow s^2X(s) - sx(0^{-}) - x'(0^{-})<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\delta^3x}{\\delta t^3} \\Leftrightarrow s^3 X(s) - s^2 x(0^{-}) - sx'(0^{-}) - x''(0^{-})<\/span>\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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t) gate<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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=\"sumaexponenciales\">4. Transformada de Laplace con suma de exponenciales<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Oppenheim Ejemplo 9.3 p658<\/p>\n\n\n\n<p>Considere la se\u00f1al que es la suma de dos exponenciales:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = 3 e^{-2t}\\mu (t) - 2e^{-t}\\mu (t)<\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_ft_Ej02.png\" alt=\"Transformada Laplace ft Ej02\" class=\"wp-image-19892\" \/><\/figure>\n\n\n\n<p>se tiene que:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{0}^{\\infty} \\Big[ 3 e^{-2t} \\mu (t) - 2e^{-t} \\mu (t) \\Big] e^{-st} \\delta t <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{0}^{\\infty} \\Big[ 3 e^{-2t}e^{-st}\\mu (t) - 2e^{-t}e^{-st}\\mu (t) \\Big] \\delta t <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{0}^{\\infty} \\Big[ 3 e^{-(s+2)t}\\mu (t) - 2e^{-(s+1)t} \\mu (t) \\Big] \\delta t <\/span>\n\n\n\n<p>En general para tratar este tipo de ejercicios es mejor descomponer la se\u00f1al o funci\u00f3n matem\u00e1tica en varios componentes de suma, siguiendo la propiedad de linealidad de los sistemas.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = 3 \\int_{0}^{\\infty} e^{-(s+2)t}\\mu (t) \\delta t - 2 \\int_{0}^{\\infty} e^{-(s+1)t} \\mu (t) \\delta t <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = -3 \\frac{1}{s+2}e^{-(s+2)t}\\Big|_{0}^{\\infty} + 2 \\frac{1}{s+1}e^{-(s+1)t}\\Big|_{0}^{\\infty} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = -3 \\frac{1}{s+2}\\Big( e^{-(s+2)(\\infty)} - e^{-(s+2)(0)} \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 2 \\frac{1}{s+1} \\Big( e^{-(s+1)(\\infty)} - e^{-(s+1)(0)} \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = -3 \\frac{1}{s+2} \\Big( 0-1 \\Big) + 2 \\frac{1}{s+1} \\Big( 0 - 1 \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = 3 \\frac{1}{s+2} - 2 \\frac{1}{s+1} <\/span>\n\n\n\n<p>Para observar mejor los polos y ceros de X(s) se simplifica la expresi\u00f3n como factores en el numerador y denominador:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\frac{s-1}{(s+2)(s+1)} <\/span>\n\n\n\n<p>La gr\u00e1fica de F(s) muestra la ubicaci\u00f3n de los polos, observando que en estos puntos la funci\u00f3n tiende a crecer a infinito positivo o negativo,<\/p>\n\n\n\n<p>Con polos en s=-1 y s=-2 al producir divisi\u00f3n para cero en la expresi\u00f3n<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"445\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_Fs_Ej02.png\" alt=\"Transformada Laplace Fs Ej02\" class=\"wp-image-19893\" \/><\/figure>\n\n\n\n<p>Para el algoritmo, la funci\u00f3n de entrada f(t) se expresa como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>u = sym.Heaviside(t)\nft = 3*sym.exp(-2*t)*u - 2*sym.exp(-t)*u<\/code><\/pre>\n\n\n\n<p>Usando el algoritmo, a\u00f1adiendo las partes que consideren el integral de Laplace para cada uno de los t\u00e9rminos suma luego agrupando por factores se obtiene:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code> dentro de integral f(t)*e(-st):\n   -t*(s + 2)                   -t*(s + 1)             \n3*e          *Heaviside(t) - 2*e          *Heaviside(t)\n\n expresion F(s):\n     s - 1     \n---------------\n(s + 1)*(s + 2)\n\nQ_polos{polos:veces}:  {-1: 1, -2: 1}\nP_ceros{polos:veces}:  {1: 1}\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\frac{3}{s+2}-\\frac{2}{s+1}<\/span>\n\n\n\n<p>Considere que en la expresi\u00f3n X(s) no ser\u00e1 necesario disponer de la constante '<code>a<\/code>', usada para generalizar la respuesta en el ejemplo 1. Por lo que se podr\u00eda prescindir de las l\u00edneas que le hacen referencia en las instrucciones&nbsp; para la revisi\u00f3n en los polos y los t\u00edtulos de las gr\u00e1ficas, resumidas como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># POR COMENTAR O ELIMINAR, si no se usa constante a:<\/span>\n<span style=\"color: #ff0000\">#<\/span> a = sym.Symbol(<span style=\"color: #008000\">'a'<\/span>, real=<span style=\"color: #d35400\">True<\/span>)\n\n<span style=\"color: #ff0000\"># Para graficar con s<\/span>\n<span style=\"color: #ff0000\">#<\/span> ft = ft.subs(a,a_k) <span style=\"color: #ff0000\"># a tiene valor a_k<\/span>\n<span style=\"color: #ff0000\">#<\/span> Fs = Fs.subs(a,a_k)\n\n<span style=\"color: #ff0000\"># Eliminar la 2da evaluacion de Q_polos<\/span>\n\n<span style=\"color: #ff0000\">#<\/span> plt.title(<span style=\"color: #008000\">'f(t) = '<\/span>+<span style=\"color: #ff00ff\">str<\/span>(ft))\n<span style=\"color: #ff0000\">#<\/span> plt.title(<span style=\"color: #008000\">'F(s) = '<\/span>+<span style=\"color: #ff00ff\">str<\/span>(Fs))<\/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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t) gate<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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=\"compuerta\">5. Transformada de Laplace - suma de t\u00e9rminos f(t) con desplazamiento<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Lathi pr\u00e1ctica 4.1.a p337<\/p>\n\n\n\n<p><strong>literal a<\/strong>. Por integraci\u00f3n directa, encuentra la transformada X(s) y la regi\u00f3n de convergencia para la funci\u00f3n descrita en la imagen<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_ft_Ej03.png\" alt=\"Transformada Laplace ft Ej03 gate compuerta\" class=\"wp-image-19894\" \/><\/figure>\n\n\n\n<p>Analizando la expresi\u00f3n de la funci\u00f3n es:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = \\mu (t) - \\mu (t-2)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{0}^{\\infty} \\Big[ \\mu (t) - \\mu (t-2) \\Big] e^{-st} \\delta t <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{0}^{\\infty} \\Big[ \\mu (t) e^{-st} - \\mu (t-2) e^{-st} \\Big] \\delta t <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\int_{0}^{\\infty} \\mu (t) e^{-st} \\delta t - \\int_{2}^{\\infty} \\mu (t) e^{-st} \\delta t <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = -\\frac{1}{s} e^{-st} \\Big|_{0}^{\\infty} +\\frac{1}{s} e^{-st} \\Big|_{2}^{\\infty} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = -\\frac{1}{s} \\Big( e^{-s(\\infty)} -e^{-s(0)}\\Big) +\\frac{1}{s} \\Big( e^{-s(\\infty)} -e^{-s(2)} \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = -\\frac{1}{s} \\Big( 0 - 1 \\Big) +\\frac{1}{s} \\Big( 0 - e^{-2s} \\Big) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\frac{1}{s} -\\frac{1}{s} e^{-2s} <\/span>\n\n\n\n<p>La gr\u00e1fica de F(s) muestra el resultado de la suma de t\u00e9rminos o componentes. La suma de \u00e9stos t\u00e9rminos hace que se minimice alrededor de cero el efecto creciente de cada componente.<\/p>\n\n\n\n<p>con polo en s=0<\/p>\n\n\n\n<p>Se observa tambi\u00e9n que el retraso de tiempo aplicado en \u03bc(t-2) genera en la transformada un termino multiplicado por e<sup>(-2s)<\/sup>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"551\" height=\"448\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_Fs_Ej03.png\" alt=\"Transformada Laplace  Fs Ej03 gate compuerta polos zeros\" class=\"wp-image-19895\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Desarrollo con Sympy-Python<\/h3>\n\n\n\n<p>Para el caso presentado, la integral se compone de dos t\u00e9rminos de una suma, procediendo de forma semejante al ejercicio anterior.<\/p>\n\n\n\n<p>El bloque de ingreso se expresa como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>u = sym.Heaviside(t)\nft = u - u.subs(t,t-2)<\/code><\/pre>\n\n\n\n<p>El resultado del algoritmo ser\u00e1:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> dentro de integral f(t)*e(-st):\n -s*t                 -s*t                 \ne    *Heaviside(t) - e    *Heaviside(t - 2)\n\n expresion F(s):\n     -2*s\n1   e    \n- - -----\ns     s  \n\nPolos y ceros:\nt\u00e9rmino: 1 * 1\/s\n Q_polos{polos:veces}:  {0: 1}\n P_ceros{polos:veces}:  {}\nt\u00e9rmino: exp(-2*s) * -1\/s\n Q_polos{polos:veces}:  {0: 1}\n P_ceros{polos:veces}:  {}\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>Para el caso de polos y ceros el&nbsp; t\u00e9rmino con e<sup>-s<\/sup> no permite analizar la expresi\u00f3n de forma directa como un polinomio y obtener las ra\u00edces. Con la restricci\u00f3n descrita, el an\u00e1lisis se realiza agrupando los t\u00e9rminos por cada&nbsp; e<sup>-s<\/sup> llamado componente de suma. Las veces que se repite cada polo ser\u00e1 el mayor valor entre cada termino suma.<\/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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t)<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"algoritmoe-as\">5.1. Instrucciones adicionales para t\u00e9rminos con sym.exp(-a*s)<\/h3>\n\n\n\n<p>Las operaciones para obtener los polos y ceros en Sympy se realizan como polinomios <code>sym.poly(Q,s)<\/code>, sin embargo \u00e9sto no considera o permite usar la expresi\u00f3n de F(s) con t\u00e9rminos <code>sym.exp(-a*s)<\/code>, siendo a un valor num\u00e9rico.<\/p>\n\n\n\n<p>Se obtiene una lista de todos los t\u00e9rminos con exponencial de la forma <code>sym.exp(-a*s)<\/code>, al obtener los componentes b\u00e1sicos de toda la expresi\u00f3n con <code>Fs.atoms(sym.exp(-s))<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># separa en lista los sym.exp(-s)<\/span>\nlista_exp = <span style=\"color: #ff00ff\">list<\/span>(Fs.atoms(sym.exp(-s)))<\/code><\/pre>\n\n\n\n<p>para observar la operaci\u00f3n se muestra el resultado de la instrucci\u00f3n sobre F(s)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; Fs\n1\/s - exp(-2*s)\/s\n&gt;&gt;&gt; Fs.atoms(sym.exp(-s))\n{exp(-2*s)}\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>Luego se agrupa F(s) por cada elemento de la <code>lista_exp<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span style=\"color: #ff0000\"># agrupa por cada exp(-s) en lista_exp<\/span>\n<span style=\"color: #d35400\">if<\/span> <span style=\"color: #ff00ff\">len<\/span>(lista_exp)&gt;0:\n    Fs = sym.expand(Fs,s)\n    Fs = sym.collect(Fs,lista_exp)<\/code><\/pre>\n\n\n\n<p>Los polos y ceros se obtienen para cada grupo de lista_exp(), empezando por aquellos que no tienen <code>sym.exp(-a*s)<\/code>. Los resultado parciales se almacenan en un diccionario <code>polosceros<\/code> con el objetivo de mostrar lo que sucede con cada componente y su influencia en F(s).<\/p>\n\n\n\n<p>El an\u00e1lisis detallado de los polos y ceros para la expresi\u00f3n se desarrolla en la secci\u00f3n LTI CT <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u04\/laplace-hspolos-reales-complejos\/\" data-type=\"post\" data-id=\"326\">Laplace \u2013 H(s) Polos reales y complejos con Sympy-Python<\/a> . Por ahora para mantener el enfoque sobre el desarrollo del integral se usa una funci\u00f3n <code>ss.busca_polosceros(Fs)<\/code> obtenida desde <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/senales\/ss-algoritmos-telg1001-py\/\" data-type=\"page\" data-id=\"17852\">telg1001.py<\/a> que entrega los polos y ceros para cada componente de <br><code>sym.exp(-a*s)<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Algoritmo con Python - Ejemplos en numerales 5, 6, 7 y 8<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Transformada de Laplace Ejemplo en numerales 5,6,7 y 8\n# integral de Laplace unilateral con suma de terminos,\n#  y desplazamientos en tiempo\n# https:\/\/blog.espol.edu.ec\/algoritmos101\/senales\/ss-unidades\/#unidad4\nimport numpy as np\nimport sympy as sym\nimport telg1001 as ss\n\n# INGRESO\nt = sym.Symbol('t', real=True)\ns = sym.Symbol('s')\nu = sym.Heaviside(t)\n\n# ft = sym.exp(-2*t)*u\n# ft = 3*sym.exp(-2*t)*u - 2*sym.exp(-t)*u\n# ft = u\n# ft = u.subs(t,t-2)\nft = u - u.subs(t,t-2)\n# ft = u.subs(t,t-2) - u.subs(t,t-4)\n# ft = sym.exp(-2*t)*u + sym.exp(-t)*sym.cos(3*t)*u\n\n# Grafica, intervalo tiempo &#x5B;t_a,t_b]\nt_a = -1 ; t_b = 10\nmuestras_t = 101  # 51 resolucion grafica\n\n# PROCEDIMIENTO\nfts = ft*sym.exp(-s*t) # f(t,s) para integrar\nfts = sym.expand(fts)  # expresion de sumas\nfts = sym.powsimp(fts) # simplifica exponentes\n\n# Integral Laplace \nunilateral = True\nlim_a = 0 # unilateral\nif not(unilateral):\n    lim_a = -sym.oo\nFs_L = sym.integrate(fts,(t,lim_a,sym.oo))\nFs = Fs_L.args&#x5B;0] # primera ecuacion e intervalo\nFs = Fs&#x5B;0]        # solo expresion\n\n# convierte a Sympy si es solo constante\nFs = sym.sympify(Fs)\n\n# separa en lista los sym.exp(-s)\nlista_exp = list(Fs.atoms(sym.exp(-s)))\n\n# agrupa por cada exp(-s) en lista_exp\nif len(lista_exp)&gt;0:\n    Fs = sym.expand(Fs,s)\n    Fs = sym.collect(Fs,lista_exp)\nelse:\n    Fs = sym.factor(Fs,s)\n\npolosceros = ss.busca_polosceros(Fs)\n\n# SALIDA\nprint(' dentro de integral f(t)*e(-st):')\nsym.pprint(fts)\nprint('\\n expresion F(s):')\nsym.pprint(Fs)\nprint('\\n {Q_polos:veces}: ',polosceros&#x5B;'Q_polos'])\nprint(' {P_ceros:veces}: ',polosceros&#x5B;'P_ceros'])\n\n# GRAFICA ------------------\nimport matplotlib.pyplot as plt\n# grafica de f(t)\nfig_ft = ss.graficar_ft(ft,t_a,t_b,\n                        muestras = muestras_t,\n                        f_nombre='f')\n# grafica de polos y ceros\nfig_Fs = ss.graficar_Fs(Fs,polosceros&#x5B;'Q_polos'],\n                        polosceros&#x5B;'P_ceros'],\n                        solopolos=False)\nplt.show()\n<\/pre><\/div>\n\n\n<p>Las instrucciones para las gr\u00e1ficas se pueden simplificar para f(t), usando la instrucci\u00f3n de la funci\u00f3n <code>ss.graficar_ft()<\/code> desarrollada en la unidad 3 desde\u00a03.2.1 LTI CT y disponible en <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/senales\/ss-algoritmos-telg1001-py\/\" data-type=\"page\" data-id=\"17852\">telg1001.py<\/a>.<\/p>\n\n\n\n<p>Para analizar en un gr\u00e1fico el caso de F(s) en detalle, se requiere realizar las l\u00edneas de cada componente que tiene un <code>exp()<\/code> y los polos para cada componente. Estas instrucciones se desarrollan en la secci\u00f3n LTI CT <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/ss-u04\/laplace-hspolos-reales-complejos\/\" data-type=\"post\" data-id=\"326\">Laplace \u2013 H(s) Polos reales y complejos con Sympy-Python<\/a> por ahora se usar\u00e1 la funci\u00f3n gr\u00e1fica en telg1001.py<\/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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t)<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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=\"compuertacausaldesplaza\">6. Transformada de Laplace para suma de t\u00e9rminos f(t) con desplazamiento, funci\u00f3n \"gate\" o compuerta causal<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Lathi pr\u00e1ctica 4.1.b p337<\/p>\n\n\n\n<p>literal b. Por integraci\u00f3n directa, encuentra la transformada X(s) y la regi\u00f3n de convergencia para la funci\u00f3n descrita en la imagen<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"556\" height=\"438\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_ft_Ej04.png\" alt=\"Transformada Laplace ft Ej04 compuerta desplaza causal\" class=\"wp-image-19897\" \/><\/figure>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = \\mu (t-2) - \\mu (t-4)<\/span>\n\n\n\n<p>que observando el ejercicio anterior se puede deducir que los retrasos en cada t\u00e9rmino generan como resultado:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\frac{1}{s} e^{-2s}-\\frac{1}{s} e^{-4s} <\/span>\n\n\n\n<p>con polo en s=0<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"447\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_Fs_Ej04.png\" alt=\"Transformada Laplace Fs Ej04 polos zeros gate desplazada causal\" class=\"wp-image-19899\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Desarrollo con Sympy-Python<\/h3>\n\n\n\n<p>El bloque de ingreso del ejercicio se actualiza como la suma de escal\u00f3n unitario&nbsp;\u03bc(t) desplazados,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>u = sym.Heaviside(t)\nft = u.subs(t,t-2)-u.subs(t,t-4)<\/code><\/pre>\n\n\n\n<p>obteniendo con el algoritmo el resultado y gr\u00e1fica correspondiente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> dentro de integral f(t)*e(-st):\n   -s*t                     -s*t                 \n- e    *Heaviside(t - 4) + e    *Heaviside(t - 2)\n\n expresion F(s):\n -2*s    -4*s\ne       e    \n----- - -----\n  s       s  \n\nPolos y ceros:\nt\u00e9rmino: exp(-2*s) * 1\/s\n Q_polos{polos:veces}:  {0: 1}\n P_ceros{polos:veces}:  {}\nt\u00e9rmino: exp(-4*s) * -1\/s\n Q_polos{polos:veces}:  {0: 1}\n P_ceros{polos:veces}:  {}  <\/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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t)<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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=\"cosenot\">7. Transformada de Laplace para cos(t)<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Oppenheim Ejemplo 9.4 p658<\/p>\n\n\n\n<p>Para resolver el ejercicio de transformada de Laplace, observe que la expresi\u00f3n es un polinomio que se desarrolla de forma mas simple aplicando la tabla de transformadas.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = e^{-2t}\\mu (t) + e^{-t} \\cos (3t) \\mu (t)<\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"567\" height=\"439\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_ft_Ej05.png\" alt=\"Transformada Laplace ft j05 cos(t)\" class=\"wp-image-19900\" \/><\/figure>\n\n\n\n<p><br>\nUsando el resultado del ejemplo 1 y la tabla de transformadas se tiene que:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\frac{1}{s+2} + \\frac{s+1}{s^2 +2s+10}<\/span>\n\n\n\n<p>agrupando t\u00e9rminos en factores para obsevar mejor los polos<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = \\frac{2s^2+5s+12}{(s+2)(s^2 +2s+10)}<\/span>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"556\" height=\"448\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_Fs_Ej05.png\" alt=\"Transformada Laplace Fs Ej05 polos ceros cos(t)\" class=\"wp-image-19901\" style=\"width:556px;height:auto\" \/><\/figure>\n\n\n\n<p>La expresi\u00f3n para el algoritmo de la se\u00f1al de entrada es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ft = sym.exp(-2*t)*u + sym.exp(-t)*sym.cos(3*t)*u<\/code><\/pre>\n\n\n\n<p>el resultado con el algoritmo desarrollado hasta el ejemplo es:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code> dentro de integral f(t)*e(-st):\n -t*(s + 2)                 -t*(s + 1)                      \ne          *Heaviside(t) + e          *cos(3*t)*Heaviside(t)\n\n expresion F(s):\n       2               \n    2*s  + 5*s + 12    \n-----------------------\n        \/ 2           \\\n(s + 2)*\\s  + 2*s + 10\/\n\n {Q_polos:veces}:  {-2: 1, -1 - 3*I: 1, -1 + 3*I: 1}\n {P_ceros:veces}:  {-5\/4 - sqrt(71)*I\/4: 1, -5\/4 + sqrt(71)*I\/4: 1}<\/code><\/pre>\n\n\n\n<p>La expresi\u00f3n F(s)&nbsp; de factores, tambi\u00e9n puede expresarse como la suma de fracciones parciales con la instrucci\u00f3n <code>sym.apart()<\/code> que aplica solo a polinomios. En el caso de tener t\u00e9rminos con <code>exp()<\/code>, la instrucci\u00f3n <code>sym.apart()<\/code> se puede aplicar por cada grupo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> expresion F(s):\n   s + 1         1  \n------------ + -----\n       2       s + 2\n(s + 1)  + 9      <\/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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t)<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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=\"exponencialimpulso\">8. Transformada de Laplace con impulso \u03b4(t) y suma de exponenciales<\/h2>\n\n\n\n<p><strong>Referencia<\/strong>: Oppenheim ejemplo 9.5 p661<\/p>\n\n\n\n<p>El ejercicio propuesto contiene un componente de impulso unitario \u03b4(t) aplicado en t=0. Se propone usar 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> para resolverlo de forma directa, aunque se propone realizar el integral para comprobar el resultado.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = \\delta(t) -\\frac{4}{3} e^{-t} \\mu (t) + \\frac{1}{3} e^{2t} \\mu (t) <\/span>\n\n\n\n<p>Se tiene una funci\u00f3n x(t) creciente en el tiempo y no acotada.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"554\" height=\"447\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_ft_Ej06.png\" alt=\"Transformada Laplace ft Ej06 impulso exponencial\" class=\"wp-image-19902\" \/><\/figure>\n\n\n\n<p>usando la tabla de transformadas se tiene que:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = 1 -\\frac{4}{3} \\frac{1}{s+1} + \\frac{1}{3} \\frac{1}{s-2} <\/span>\n\n\n\n<p>Para observar los polos y ceros se agrupa X(s) por factores<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) =\\frac{(s-1)^2}{(s-2)(s+1)} <\/span>\n\n\n\n<p>La gr\u00e1fica respecto al dominio s, mostrando los polos en s=2 y s=-1 que generan divisiones para cero. Observe que un polo se encuentra del lado derecho del plano, relacionado con el t\u00e9rmino creciente en el tiempo y no acotado.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"566\" height=\"450\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_Fs_Ej06.png\" alt=\"Transformada Laplace Fs Ej06\" class=\"wp-image-19903\" \/><\/figure>\n\n\n\n<p>La introducci\u00f3n de un impulso d(t) en el integral de varios componentes ya comienza a generar algun trabajo adicional en la instrucci\u00f3n simb\u00f3lica <code>sym.integrate()<\/code>, por lo que es preferible facilitar el desarrollo por cada componente de t\u00e9rminos suma. Al entregar a <code>sym.integrate()<\/code> t\u00e9rminos m\u00e1s simples, la funci\u00f3n no tiene que analizar varias formas de integraci\u00f3n de la expresi\u00f3n, el proceso se acelera y se minimizan errores.<\/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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t)<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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=\"algoritmodt\">9. Algoritmo con e<sup>(-as)<\/sup>, \u03b4(t)<\/h2>\n\n\n\n<p>Inicialmente considere usar como f(t) = \u03b4(t) y revisar el resultado Fs_L, encontrando que es solo una constante,&nbsp; el resultado de F(s) no es por partes (<code>sym.Piecewise()<\/code>) como se hab\u00eda realizado hasta ahora en el algoritmo.<\/p>\n\n\n\n<p>Si Fs_L a\u00fan es por partes, se puede verificar con la instrucci\u00f3n <code>Fs_L.is_Piecewise<\/code> que indica <code>True<\/code> o <code>False<\/code> para aplicar o no Fs_L[0].<\/p>\n\n\n\n<p>Debe considerar tambi\u00e9n que el integral unilateral de Laplace presenta el resultado 1\/2, en lugar de 1. Revisar las definiciones sobre la funci\u00f3n impulso \u03b4(t)&nbsp; en el enlace <a href=\"https:\/\/docs.sympy.org\/latest\/modules\/functions\/special.html\">DiracDelta en Sympy<\/a>. Para mantener concordancia con lo desarrollado en los textos, se corrige el resultado a 1.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ft = sym.DiracDelta(t)\n\ndentro de integral f(t)*e(-st):\n -s*t              \ne    *DiracDelta(t)\n\n expresion F(s):\n1\/2\n\n {polos:veces}:  {}\n<\/code><\/pre>\n\n\n\n<p>Para la convenci\u00f3n usada en los libros del curso, se revisar\u00e1 si el t\u00e9rmino al que se aplica el integral de Laplace tiene un impulso para proceder a multiplicarlo por 2. Si el integral fuese de [-\u221e,\u221e] el integral tendria resultado 1, pero en lo realizado es solo unilateral (t\u22650) por lo que Sympy se ha aplicado b\u00e1sicamente solo la mitad. Discusiones sobre aquello las puede revisar en el sitio web de Sympy.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unilateral = <span style=\"color: #d35400\">True<\/span>\n\n<span style=\"color: #ff0000\"># Integral del impulso en cero es 1<\/span>\n<span style=\"color: #d35400\">if<\/span> fts.has(sym.DiracDelta): \n    donde = ss.busca_impulso(fts)\n    <span style=\"color: #d35400\">if<\/span> (0 <span style=\"color: #d35400\">in<\/span> donde) <span style=\"color: #d35400\">and<\/span> unilateral: <span style=\"color: #ff0000\"># (integral unilateral) x 2<\/span>\n        fts = fts.subs(d,2*d)\n    fts = sym.powsimp(fts) <span style=\"color: #ff0000\"># simplifica exponentes<\/span><\/code><\/pre>\n\n\n\n<p>con la variable unilateral tambi\u00e9n se establece el valor del l\u00edmite inferior del integral:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    <span style=\"color: #ff0000\"># Integral Laplace de sumas<\/span>\n    lim_a = 0 <span style=\"color: #ff0000\"># unilateral<\/span>\n    <span style=\"color: #d35400\">if<\/span> <span style=\"color: #d35400\">not<\/span>(unilateral):\n        lim_a = -sym.oo<\/code><\/pre>\n\n\n\n<p>con lo que se actualiza el resultado anterior a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ft = sym.DiracDelta(t)\n\ndentro de integral f(t)*e(-st):\n -s*t              \ne    *DiracDelta(t)\n\n expresion F(s):\n1\n\n {polos:veces}:  {}<\/code><\/pre>\n\n\n\n<p><em><strong>Nota<\/strong><\/em>: Sympy hasta la versi\u00f3n 1.11.1, las operaciones en el dominio 's' para la Transformadas Inversas de Laplace se encuentran implementadas para manejar principalmente n\u00fameros enteros y fracciones. Los resultados de expresiones combinadas con coeficientes enteros y coeficientes reales no necesariamente se simplifican entre si, pues se manejan diferentes dominios 'ZZ' o 'QQ'. (Revisi\u00f3n 2022-Nov)<\/p>\n\n\n\n<p>Para optimizar la simplificaci\u00f3n de expresiones con coeficientes entre enteros y reales, los n\u00fameros reales se convierten a su aproximaci\u00f3n racional con la instrucci\u00f3n <code>sym.Rational(0.333333).limit_denominator(100)<\/code>.<\/p>\n\n\n\n<p>Convirtiendo los coeficientes a racionales como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k1 = sym.Rational(1\/3).limit_denominator(100)\nk2 = sym.Rational(4\/3).limit_denominator(100)\n\nft = d - k2*sym.exp(-t)*u + k1*sym.exp(2*t)*u<\/code><\/pre>\n\n\n\n<p>Uniendo las observaciones, el algoritmo m\u00e1s general se muestra a continuaci\u00f3n<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Transformada de Laplace Ejemplo 6\n# integral de Laplace unilateral con suma de terminos,\n#  y desplazamientos en tiempo\n# https:\/\/blog.espol.edu.ec\/algoritmos101\/senales\/ss-unidades\/#unidad4\nimport numpy as np\nimport sympy as sym\nimport telg1001 as ss\n\n# INGRESO\nt = sym.Symbol('t', real=True)\ns = sym.Symbol('s')\nu = sym.Heaviside(t)\nd = sym.DiracDelta(t)\n\n# ft = u\n# ft = u.subs(t,t-2)\n# ft = u - u.subs(t,t-2)\n# ft = 3*sym.exp(-2*t)*u-2*sym.exp(-t)*u\n# ft = u.subs(t,t-2) - u.subs(t,t-4)\n# ft = sym.exp(-2*t)*u + sym.exp(-t)*sym.cos(3*t)*u\n# ft = d\n\n# coeficientes como racional en dominio 'ZZ' enteros\nk1 = sym.Rational(1\/3).limit_denominator(100)\nk2 = sym.Rational(4\/3).limit_denominator(100)\n\nft = d - k2*sym.exp(-t)*u + k1*sym.exp(2*t)*u\n#ft = u.subs(t,t+1)\n\n# Grafica, intervalo tiempo &#x5B;t_a,t_b]\nt_a = -1 ; t_b = 4\nmuestras_t = 101  # 51 resolucion grafica\n\n# PROCEDIMIENTO\ndef laplace_integral_sumas(ft,unilateral=True):\n    ''' integral de transformada de laplace\n        considera impulsos d(t), escalon u(t) desplazados\n    '''\n    fts = ft*sym.exp(-s*t) # f(t,s) para integrar\n    fts = sym.expand(fts)  # expresion de sumas\n    fts = sym.powsimp(fts) # simplifica exponentes\n\n    # Integral del impulso en cero es 1\n    if fts.has(sym.DiracDelta): \n        donde = ss.busca_impulso(fts)\n        if (0 in donde) and unilateral: # (integral unilateral) x 2\n            fts = fts.subs(d,2*d)\n        fts = sym.powsimp(fts) # simplifica exponentes\n\n    # Integral Laplace de sumas\n    lim_a = 0 # unilateral\n    if not(unilateral):\n        lim_a = -sym.oo\n    Fs = 0*s\n    term_suma = sym.Add.make_args(fts)\n    for term_k in term_suma:\n        # integral Laplace unilateral\n        Fs_L = sym.integrate(term_k,(t,lim_a,sym.oo))\n        if Fs_L.is_Piecewise:   # Fs_L es por partes\n            Fsk = Fs_L.args&#x5B;0]  # primera ecuacion e intervalo\n            Fsk = Fsk&#x5B;0]        # solo expresion\n        else: # una sola expresi\u00f3n\n            Fsk = Fs_L   \n        Fs = Fs + Fsk\n\n    # convierte a Sympy si es solo constante\n    Fs = sym.sympify(Fs)\n    Fs = sym.expand_power_exp(Fs)\n    # lista los sym.exp(-s)\n    lista_exp = list(Fs.atoms(sym.exp(-s)))\n\n    # agrupa por cada exp(-s) en lista_exp\n    if len(lista_exp)&gt;0:\n        Fs = sym.expand(Fs,s)\n        Fs = sym.collect(Fs,lista_exp)\n    else:\n        Fs = sym.factor(Fs,s)\n    return(Fs)\n\nFs = laplace_integral_sumas(ft, unilateral=True)\npolosceros = ss.busca_polosceros(Fs)\n\n# SALIDA\nprint('\\n expresion F(s):')\nsym.pprint(Fs)\nprint('\\n {Q_polos:veces}: ',polosceros&#x5B;'Q_polos'])\nprint(' {P_ceros:veces}: ',polosceros&#x5B;'P_ceros'])\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"graficadt\">10. Gr\u00e1fica con \u03b4(t)<\/h2>\n\n\n\n<p>La secci\u00f3n de gr\u00e1ficas ya incorpora desde la unidad 3 el caso que f(t) contiene impulsos unitarios, por lo que las instrucciones se mantienen.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA ------------------\nimport matplotlib.pyplot as plt\n#grafica de f(t)\nfig_ft = ss.graficar_ft(ft,t_a,t_b,\n                        muestras = muestras_t,\n                        f_nombre='f')\n# grafica de polos y ceros\nfig_Fs = ss.graficar_Fs(Fs,polosceros&#x5B;'Q_polos'],\n                        polosceros&#x5B;'P_ceros'],\n                        solopolos=False)\nplt.show()\n<\/pre><\/div>\n\n\n<p>Presentando as\u00ed, un algoritmo&nbsp; general para desarrollar integrales de Laplace.<\/p>\n\n\n\n<p>Desde luego existe la forma mas simple de usar con las instrucciones <code>Fs_L = sym.laplace_transform(ft,t,s)<\/code> mencionadas al inicio de la p\u00e1gina. El algoritmo es un ejercicio did\u00e1ctico de c\u00f3mo realizar la tabla de pares de transformadas.<\/p>\n\n\n\n<p>En la siguiente secci\u00f3n el algoritmo se simplifica y se muestra el uso de las transformadas de Laplace usando las librer\u00edas de Sympy.<\/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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t)<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/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=\"impulsosdesplazados\">11. Transformada de Laplace de Impulsos unitarios desplazados<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>:&nbsp; Lathi Ej 4.9c p355<\/p>\n\n\n\n<p>Considera la entrada x(t) como una suma de impulsos desplazados en tiempo y de diferente magnitud.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = \\delta (t) - 3 \\delta (t-2) + 2 \\delta (t-3)<\/span>\n\n\n\n<p>para el algoritmo del ejercicio 6, se modifica la l\u00ednea de ingreso a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ft = d - 3*d.subs(t,t-2) + 2*d.subs(t,t-3)<\/code><\/pre>\n\n\n\n<p>obteniendo como resultado del algoritmo anterior:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X(s) = 1 - 3 e^{-2s} + 2 e^{-3s} <\/span>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code> dentro de integral f(t)*e(-st):\n -s*t                    -s*t                        -s*t                  \ne    *DiracDelta(t) + 2*e    *DiracDelta(t - 3) - 3*e    *DiracDelta(t - 2)\n\n expresion F(s):\n       -2*s      -3*s\n1 - 3*e     + 2*e    \n\n {Q_polos:veces}:  {}\n<\/code><\/pre>\n\n\n\n<p>con las siguientes gr\u00e1ficas:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_Ej07.png\" alt=\"Transformada Laplace Ej07\" class=\"wp-image-19908\" \/><\/figure>\n\n\n\n<p>y para F(s):<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"563\" height=\"439\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/05\/TransformadaLaplace_Ej07Polos.png\" alt=\"TransformadaLaplace_Ej07Polos\" class=\"wp-image-19909\" \/><\/figure>\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=\"#integral\">Integral<\/a><\/p>\n\n\n\n<p><a href=\"#e-at\">e<sup>(-at)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#propiedades\">propiedades<\/a><\/p>\n\n\n\n<p><a href=\"#sumaexponenciales\">e<sup>(-at)<\/sup>+e<sup>(-bt)<\/sup><\/a><\/p>\n\n\n\n<p><a href=\"#compuerta\">\u03bc(t)<\/a><\/p>\n\n\n\n<p><a href=\"#compuertacausaldesplaza\">\u03bc(t\u2212a)<\/a><\/p>\n\n\n\n<p><a href=\"#cosenot\">cos(t)<\/a><\/p>\n\n\n\n<p><a href=\"#exponencialimpulso\">e<sup>(-at)<\/sup>+\u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmodt\">Algoritmo e<sup>(-as)<\/sup>, \u03b4(t)<\/a><\/p>\n\n\n\n<p><a href=\"#graficadt\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#impulsosdesplazados\">\u03b4(t) desplazados<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Integral e(-at) propiedades e(-at)+e(-bt) \u03bc(t) gate \u03bc(t\u2212a) cos(t) e(-at)+\u03b4(t) Algoritmo e(-as), \u03b4(t) gr\u00e1fica \u03b4(t) desplazados 1.Transformada de Laplace - Integral Referencia: Lathi 4.1. p330. Hsu 3.2.A p110, Oppenheim 9.1 p655 La transformada de Laplace permite simplificar el proceso de soluci\u00f3n de ecuaciones integro-diferenciales usando operaciones mas simples al cambiar desde el dominio del tiempo 't' [&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-350","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\/350","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=350"}],"version-history":[{"count":23,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/350\/revisions"}],"predecessor-version":[{"id":24212,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/350\/revisions\/24212"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}