{"id":8623,"date":"2017-09-09T11:05:04","date_gmt":"2017-09-09T16:05:04","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/analisisnumerico\/?p=8623"},"modified":"2026-04-04T09:32:11","modified_gmt":"2026-04-04T14:32:11","slug":"edo-auxiliar-general-complementaria","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u06\/edo-auxiliar-general-complementaria\/","title":{"rendered":"6.6.1 EDO lineal - ecuaciones auxiliar, general y complementaria 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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/docs.sympy.org\/latest\/modules\/solvers\/ode.html\">Sympy ODE solver<\/a>. Stewart James. C\u00e1lculo de varias variables. 17.2 p1148.<\/p>\n\n\n\n<p>Continuando con el ejercicio de la secci\u00f3n anterior de una ecuaci\u00f3n diferencial ordinaria, lineal y de coeficientes constantes, se obtuvo la soluci\u00f3n homog\u00e9nea o ecuaci\u00f3n complementaria con <code>dsolve()<\/code>.&nbsp; Para el desarrollo anal\u00edtico de la soluci\u00f3n se requieren describir los pasos tales como la ecuaci\u00f3n auxiliar, como se describe a continuaci\u00f3n como un ejercicio de an\u00e1lisis de expresiones con 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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/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=\"ejemplo\">1. Ejemplo. <\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Ecuaci\u00f3n diferencial de un circuito RLC<\/h3>\n\n\n\n<p><strong>Referencia<\/strong>: Lathi Ejemplo 2.1.a p155, Ejemplo 2.9 p175, Oppenheim 2.4.1 p117, ejemplo 1 de Modelo entrada-salida<\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"315\" height=\"157\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2023\/09\/circuito_RLC01.png\" alt=\"circuito RLC 1H 3Ohm 1\/2F\" class=\"wp-image-13847\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>El circuito RLC con entrada x(t) de la figura tiene una corriente y(t) o salida del sistema que se representa&nbsp; por medio de una ecuaci\u00f3n diferencial.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{d^{2}y(t)}{dt^{2}} + 3\\frac{dy(t)}{dt} + 2y(t) = \\frac{dx(t)}{dt} <\/span>\n\n\n\n<p>Las condiciones iniciales del sistema a tiempo t=0 son y(0)=0 , y'(0)=-5<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 Ecuaci\u00f3n diferencial y condiciones de frontera o iniciales<\/h3>\n\n\n\n<p>La ecuaci\u00f3n diferencial del ejercicio con Sympy se escribe con el operador sym.diff(y,t,1). Indicando la variable independiente '<code>t<\/code>', que '<code>y<\/code>' es una funci\u00f3n y el orden de la derivada con 1. esquema que se mantiene para la descripci\u00f3n de las condiciones iniciales.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\n# ecuacion: lado izquierdo = lado derecho\n#           Left Hand Side = Right Hand Side\nLHS = sym.diff(y(t),t,2) + 3*sym.diff(y(t),t,1) + 2*y(t)\nRHS = sym.diff(x(t),t,1)\necuacion = sym.Eq(LHS,RHS)\n\n# condiciones de frontera o iniciales\ny_cond = {y(0) : 0,\n          sym.diff(y(t),t,1).subs(t,0) : -5}\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">1.2 Clasificar la ecuaci\u00f3n diferencial ordinaria<\/h3>\n\n\n\n<p>Sympy permite revisar el tipo de EDO a resolver usando la instrucci\u00f3n:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\n&gt;&gt;&gt; sym.classify_ode(ecuacion, y(t))\n('factorable', \n 'nth_linear_constant_coeff_variation_of_parameters', \n 'nth_linear_constant_coeff_variation_of_parameters_Integral')\n&gt;&gt;&gt;\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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/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\">1.3. Ecuaci\u00f3n homog\u00e9nea<\/h2>\n\n\n\n<p>Para el an\u00e1lisis de la respuesta del circuito, se inicia haciendo la entrada <strong><code>x(t)=0<\/code><\/strong>, tambi\u00e9n conocida como ecuaci\u00f3n para \"respuesta a entrada cero\" o <strong>ecuaci\u00f3n homog\u00e9nea<\/strong>.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{d^{2}y(t)}{dt^{2}} + 3\\frac{dy(t)}{dt} + 2y(t) = 0 <\/span>\n\n\n\n<p>En el algoritmo, La ecuaci\u00f3n homog\u00e9nea se obtiene al substituir x(t)=0 en cada lado de la ecuaci\u00f3n, que tambi\u00e9n es un paso para encontrar la respuesta a entrada cero. La ecuaci\u00f3n homog\u00e9nea se escribe de la forma f(t)=0.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\n# ecuaci\u00f3n homog\u00e9nea x(t)=0, entrada cero\nRHSx0 = ecuacion.rhs.subs(x(t),0).doit()\nLHSx0 = ecuacion.lhs.subs(x(t),0).doit()\nhomogenea = LHSx0 - RHSx0\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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/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=\"auxiliar\">1.4. Ecuaci\u00f3n auxiliar o caracter\u00edstica.<\/h2>\n\n\n\n<p>En la ecuaci\u00f3n homog\u00e9nea , se procede a sustituir en la ecuaci\u00f3n el operador dy\/dt de la derivada con una variable <strong>r<\/strong> elevada al orden de la derivada de cada t\u00e9rmino . El resultado es una ecuaci\u00f3n algebraica que se analiza encontrando las ra\u00edces de <strong>r<\/strong>.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> r ^2 + 3r +2 = 0 <\/span>\n\n\n\n<p>Los valores de&nbsp;<strong>r<\/strong> que resuelven la ecuaci\u00f3n permiten estimar la forma de la soluci\u00f3n para y(t) conocida como la ecuaci\u00f3n general.<\/p>\n\n\n\n<p>Se usan diferentes formas para mostrar la ecuaci\u00f3n auxiliar, pues en algunos casos se requiere usar la forma de factores, en otros casos los valores de las ra\u00edces y las veces que se producen. Formas usadas para generar diagramas de polos y ceros, o expresiones de transformada de Laplace. Motivo por el que los resultados se los presenta en un diccionario, y as\u00ed usar la respuesta que sea de inter\u00e9s en cada caso.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\nhomogenea :\n                        2          \n           d           d           \n2*y(t) + 3*--(y(t)) + ---(y(t)) = 0\n           dt           2          \n                      dt           \nauxiliar : r**2 + 3*r + 2\nQ : r**2 + 3*r + 2\nQ_factor : (r + 1)*(r + 2)\nQ_raiz : {-1: 1, -2: 1}\n&gt;&gt;&gt; \n<\/pre><\/div>\n\n\n<p>Instrucciones con Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Ecuaci\u00f3n Diferencial Ordinaria EDO\n# ecuaci\u00f3n auxiliar o caracter\u00edstica \n# Lathi 2.1.a pdf 155, (D^2+ 3D + 2)y = Dx\nimport sympy as sym\n\n# INGRESO\nt = sym.Symbol('t', real=True)\nr = sym.Symbol('r')\ny = sym.Function('y')\nx = sym.Function('x')\n\n# ecuacion: lado izquierdo = lado derecho\n#           Left Hand Side = Right Hand Side\nLHS = sym.diff(y(t),t,2) + 3*sym.diff(y(t),t,1) + 2*y(t)\nRHS = sym.diff(x(t),t,1)\necuacion = sym.Eq(LHS,RHS)\n\n# condiciones de frontera o iniciales\ny_cond = {y(0) : 0,\n          sym.diff(y(t),t,1).subs(t,0) : -5}\n\n# PROCEDIMIENTO\ndef edo_lineal_auxiliar(ecuacion,\n                 t = sym.Symbol('t'),r = sym.Symbol('r'),\n                 y = sym.Function('y'),x = sym.Function('x')):\n    ''' ecuacion auxiliar o caracteristica de EDO\n        t independiente\n    '''\n    # ecuaci\u00f3n homog\u00e9nea x(t)=0, entrada cero\n    RHSx0 = ecuacion.rhs.subs(x(t),0).doit()\n    LHSx0 = ecuacion.lhs.subs(x(t),0).doit()\n    homogenea = LHSx0 - RHSx0\n    homogenea = sym.expand(homogenea,t)\n\n    # ecuaci\u00f3n auxiliar o caracter\u00edstica\n    Q = 0*r\n    term_suma = sym.Add.make_args(homogenea)\n    for term_k in term_suma:\n        orden_k = sym.ode_order(term_k,y)\n        coef = 1 # coefientes del t\u00e9rmino suma\n        factor_mul = sym.Mul.make_args(term_k)\n        for factor_k in factor_mul:\n            cond = factor_k.has(sym.Derivative)\n            cond = cond or factor_k.has(y(t))\n            if not(cond):\n                coef = coef*factor_k\n        Q = Q + coef*(r**orden_k)\n               \n    # Q factores y raices\n    Q_factor = sym.factor(Q,r)\n    Q_poly   = sym.poly(Q,r)\n    Q_raiz   = sym.roots(Q_poly)\n    \n    auxiliar = {'homogenea' : sym.Eq(homogenea,0),\n                'auxiliar'  : Q,\n                'Q'         : Q,\n                'Q_factor'  : Q_factor,\n                'Q_raiz'    : Q_raiz }\n    return(auxiliar)\n\n# analiza la ecuaci\u00f3n diferencial\nedo_tipo = sym.classify_ode(ecuacion, y(t))\nauxiliar = edo_lineal_auxiliar(ecuacion,t,r)\n\n# SALIDA\nprint('clasifica EDO:')\nfor untipo in edo_tipo:\n    print(' ',untipo)\nprint('ecuacion auxiliar:')\nfor entrada in auxiliar:\n    print(' ',entrada,':',auxiliar&#x5B;entrada])\n<\/pre><\/div>\n\n\n<p>Otra forma de mostrar el resultado es usando un procedimiento creado para mostrar elementos del diccionario seg\u00fan corresponda a cada tipo. el procedimiento se adjunta al final.<\/p>\n\n\n\n<p>Las funciones se incorporan a los algoritmos del curso en <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mnumericos\/mn-recursos\/mn-algoritmos-matg1052-py\/\" data-type=\"page\" data-id=\"3457\">matg1052.py<\/a><\/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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/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=\"general\">1.5. Ecuaci\u00f3n diferencial, ecuaci\u00f3n general y complementaria con Sympy-Python<\/h2>\n\n\n\n<p>La ecuaci\u00f3n general se encuentra con la instrucci\u00f3n&nbsp;sym.dsolve(), sin condiciones iniciales, por que el resultado presenta constantes Ci por determinar.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\n    # solucion general de ecuaci\u00f3n homog\u00e9nea\n    general = sym.dsolve(homogenea, y(t))\n    general = general.expand()\n<\/pre><\/div>\n\n\n<p>el resultado para el ejercicio es<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\ngeneral :\n           -t       -2*t\ny(t) = C1*e   + C2*e\n<\/pre><\/div>\n\n\n<p>Para encontrar los valores de las constantes, se aplica cada una de las condiciones iniciales a la ecuaci\u00f3n general, obteniendo un sistema de ecuaciones.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; gutter: false; title: ; notranslate\" title=\"\">\n     # Aplica condiciones iniciales o de frontera\n    eq_condicion = &#x5B;]\n    for cond_k in y_cond: # cada condici\u00f3n\n        valor_k = y_cond&#x5B;cond_k]\n        orden_k = sym.ode_order(cond_k,y)\n        if orden_k==0: # condicion frontera\n            t_k = cond_k.args&#x5B;0] # f(t_k)\n            expr_k = general.rhs.subs(t,t_k)\n        else: # orden_k&gt;0\n            # f.diff(t,orden_k).subs(t,t_k)\n            subs_param = cond_k.args&#x5B;2] # en valores\n            t_k = subs_param.args&#x5B;0]  # primer valor\n            dyk = general.rhs.diff(t,orden_k)\n            expr_k = dyk.subs(t,t_k)\n        eq_condicion.append(sym.Eq(valor_k,expr_k))\n<\/pre><\/div>\n\n\n<p>con el siguiente resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>eq_condicion :\n0 = C1 + C2\n-5 = -C1 - 2*C2<\/code><\/pre>\n\n\n\n<p>El sistema de ecuaciones se resuelve con la instrucci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>constante = sym.solve(eq_condicion)<\/code><\/pre>\n\n\n\n<p>que entrega un diccionario con cada valor de la constante<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>constante : {C1: -5, C2: 5}<\/code><\/pre>\n\n\n\n<p>La ecuaci\u00f3n complementaria se obtiene al sustituir en la ecuaci\u00f3n general los valores de las constantes.<\/p>\n\n\n\n<p>El resultado del algoritmo<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\nhomogenea :\n                        2          \n           d           d           \n2*y(t) + 3*--(y(t)) + ---(y(t)) = 0\n           dt           2          \n                      dt           \ngeneral :\n           -t       -2*t\ny(t) = C1*e   + C2*e    \neq_condicion :\n0 = C1 + C2\n-5 = -C1 - 2*C2\nconstante : {C1: -5, C2: 5}\ncomplementaria :\n            -t      -2*t\ny(t) = - 5*e   + 5*e    \n&gt;&gt;&gt;\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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/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\">2. Algoritmo con Python<\/h2>\n\n\n\n<p>Las instrucciones detalladas se presentan en el algoritmo integrado.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Soluci\u00f3n complementaria a una Ecuaci\u00f3n Diferencial Ordinaria EDO\n# Lathi 2.1.a pdf 155, (D^2+ 3D + 2)y = Dx\nimport sympy as sym\nequivalentes = &#x5B;{'DiracDelta': lambda x: 1*(x==0)},\n                {'Heaviside': lambda x,y: np.heaviside(x, 1)},\n                'numpy',]\nimport matg1052 as fcnm\n\n# INGRESO\nt = sym.Symbol('t', real=True)\nr = sym.Symbol('r')\ny = sym.Function('y')\nx = sym.Function('x')\n\n# ecuacion: lado izquierdo = lado derecho\n#           Left Hand Side = Right Hand Side\nLHS = sym.diff(y(t),t,2) + 3*sym.diff(y(t),t,1) + 2*y(t)\nRHS = sym.diff(x(t),t,1)\necuacion = sym.Eq(LHS,RHS)\n\n# condiciones de frontera o iniciales\ny_cond = {y(0) : 0,\n          sym.diff(y(t),t,1).subs(t,0) : -5}\n\n# PROCEDIMIENTO\ndef edo_lineal_complemento(ecuacion,y_cond):\n    # ecuaci\u00f3n homog\u00e9nea x(t)=0, entrada cero\n    RHSx0 = ecuacion.rhs.subs(x(t),0).doit()\n    LHSx0 = ecuacion.lhs.subs(x(t),0).doit()\n    homogenea = LHSx0 - RHSx0\n\n    # solucion general de ecuaci\u00f3n homog\u00e9nea\n    general = sym.dsolve(homogenea, y(t))\n    general = general.expand()\n\n    # Aplica condiciones iniciales o de frontera\n    eq_condicion = &#x5B;]\n    for cond_k in y_cond: # cada condici\u00f3n\n        valor_k = y_cond&#x5B;cond_k]\n        orden_k = sym.ode_order(cond_k,y)\n        if orden_k==0: # condicion frontera\n            t_k    = cond_k.args&#x5B;0] # f(t_k)\n            expr_k = general.rhs.subs(t,t_k)\n        else: # orden_k&gt;0\n            subs_param = cond_k.args&#x5B;2] # en valores\n            t_k = subs_param.args&#x5B;0]  # primer valor\n            dyk = sym.diff(general.rhs,t,orden_k)\n            expr_k = dyk.subs(t,t_k)\n        eq_condicion.append(sym.Eq(valor_k,expr_k))\n\n    constante = sym.solve(eq_condicion)\n\n    # ecuacion complementaria\n    # reemplaza las constantes en general\n    yc = general\n    for Ci in constante:\n        yc = yc.subs(Ci, constante&#x5B;Ci])\n    \n    complemento = {'homogenea'      : sym.Eq(homogenea,0),\n                   'general'        : general,\n                   'eq_condicion'   : eq_condicion,\n                   'constante'      : constante,\n                   'complementaria' : yc}\n    return(complemento)\n\n# analiza ecuacion diferencial\nedo_tipo = sym.classify_ode(ecuacion, y(t))\nauxiliar = fcnm.edo_lineal_auxiliar(ecuacion,t,r)\ncomplemento = edo_lineal_complemento(ecuacion,y_cond)\nyc = complemento&#x5B;'complementaria'].rhs\n\n# SALIDA\nprint('clasifica EDO:')\nfor elemento in edo_tipo:\n    print(' ',elemento)\n\nfcnm.print_resultado_dict(auxiliar)\nfcnm.print_resultado_dict(complemento)\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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/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=\"grafica\">3. Gr\u00e1fica de la ecuaci\u00f3n complementaria y<sub>c<\/sub><\/h2>\n\n\n\n<p>Para la gr\u00e1fica se procede a convertir la ecuaci\u00f3n y<sub>c<\/sub> en la forma num\u00e9rica con sym.lambdify(). Se usa un intervalo de tiempo entre [0,5] y 51 muestras con el siguiente resultado:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"569\" height=\"438\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2023\/09\/respuestaEntradaCero01Sympy.png\" alt=\"respuesta Entrada Cero Sympy\" class=\"wp-image-13856\" \/><\/figure>\n\n\n\n<p>Instrucciones en Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA ------------------\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# INGRESO\nt_a = 0 ; t_b = 5 # intervalo tiempo &#x5B;t_a,t_b]\nmuestras = 51\n\n# PROCEDIMIENTO\nyt = sym.lambdify(t,yc, modules=equivalentes) \nti = np.linspace(t_a,t_b,muestras)\nyi = yt(ti)\n\n# Grafica\nplt.plot(ti,yi, color='orange', label='yc(t)')\nuntitulo = 'yc(t)=$'+ str(sym.latex(yc))+'$'\nplt.title(untitulo)\nplt.xlabel('t')\nplt.ylabel('yc(t)')\nplt.legend()\nplt.grid()\nplt.show()\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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/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\">4.&nbsp; Mostrar el resultado del diccionario seg\u00fan el tipo de entrada<\/h3>\n\n\n\n<p>Para mostrar los resultados de una forma m\u00e1s f\u00e1cil de leer, se usar\u00e1 <code>sym.pprint()<\/code> para las ecuaciones, y <code>print()<\/code> simple para los dem\u00e1s elementos del resultado<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\ndef print_resultado_dict(resultado):\n    ''' print de diccionario resultado\n        formato de pantalla\n    '''\n    for entrada in resultado:\n        tipo = type(resultado&#x5B;entrada])\n        if tipo == sym.core.relational.Equality:\n            print(entrada,':')\n            sym.pprint(resultado&#x5B;entrada])\n        elif tipo==list or tipo==tuple:\n            tipoelem = type(resultado&#x5B;entrada]&#x5B;0])\n            if tipoelem==sym.core.relational.Equality:\n                print(entrada,':')\n                for fila in resultado&#x5B;entrada]:\n                    sym.pprint(fila)\n            else:\n                print(entrada,':')\n                for fila in resultado&#x5B;entrada]:\n                    print(' ',fila)\n        else:\n            print(entrada,':',resultado&#x5B;entrada])\n    return()\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=\"#ejemplo\">ejemplo<\/a><\/p>\n\n\n\n<p>ecuaci\u00f3n:<\/p>\n\n\n\n<p><a href=\"#auxiliar\">auxiliar<\/a><\/p>\n\n\n\n<p><a href=\"#general\">general<\/a> , complementaria<\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>ejemplo ecuaci\u00f3n: auxiliar general , complementaria algoritmo gr\u00e1fica Referencia: Sympy ODE solver. Stewart James. C\u00e1lculo de varias variables. 17.2 p1148. Continuando con el ejercicio de la secci\u00f3n anterior de una ecuaci\u00f3n diferencial ordinaria, lineal y de coeficientes constantes, se obtuvo la soluci\u00f3n homog\u00e9nea o ecuaci\u00f3n complementaria con dsolve().&nbsp; Para el desarrollo anal\u00edtico de la soluci\u00f3n [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-mn-unidades","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[],"class_list":["post-8623","post","type-post","status-publish","format-standard","hentry","category-mn-u06"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8623","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=8623"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8623\/revisions"}],"predecessor-version":[{"id":13858,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8623\/revisions\/13858"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=8623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=8623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=8623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}