{"id":1459,"date":"2017-11-15T06:05:18","date_gmt":"2017-11-15T11:05:18","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=1459"},"modified":"2026-02-17T06:18:41","modified_gmt":"2026-02-17T11:18:41","slug":"s1eva2015ti_t2-salida-cardiaca","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s1eva20\/s1eva2015ti_t2-salida-cardiaca\/","title":{"rendered":"s1Eva2015TI_T2 Salida cardiaca"},"content":{"rendered":"\n<p><strong>Ejercicio<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-evalua\/mn-1e15\/1eva2015ti_t2-salida-cardiaca\/\" data-type=\"post\" data-id=\"264\">1Eva2015TI_T2 Salida cardiaca<\/a><\/p>\n\n\n\n<p>Soluci\u00f3n presentada como introducci\u00f3n al tema de interpolaci\u00f3n y soluci\u00f3n de sistemas de ecuaciones. Como ejemplo, se usa el m\u00e9todo de Lagrange.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Gr\u00e1fica de datos experimentales:\nti = &#091;2,6,9,12,15,18]\nyi = &#091;0,1.5,3.2,4.1,3.4,2.0]<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>Para seleccionar los puntos del polinomio de grado 2, se requiere observar la gr\u00e1fica.<\/p>\n\n\n\n<p>Se requiere desarrollar la parte anal\u00edtica en papel y l\u00e1piz para al menos una de las gr\u00e1ficas. (tarea)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"438\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/11\/s1EIT2015_salidacardiaca_01.png\" alt=\"s1EIT2015 salida cardiaca gr\u00e1fica 01\" class=\"wp-image-21715\" \/><\/figure>\n\n\n\n<p>Donde se observa que se podr\u00eda aproximar a una par\u00e1bola usando los puntos extremos y alrededor de t=12.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ti = &#091;2 ,12, 18]\nyi = &#091;0,4.1,2.0]<\/code><\/pre>\n\n\n\n<p>con lo que se obtiene la gr\u00e1fica siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Polinomio de Lagrange: \n-0.0475*x**2 + 1.075*x - 1.96\n\n          2                 \n- 0.0475\u22c5x  + 1.075\u22c5x - 1.96<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/11\/s1EIT2015_salidacardiaca_02-1.png\" alt=\"s1EIT2015 salida cardiaca gr\u00e1fica 02, polinomio grado 2\" class=\"wp-image-21716\" \/><\/figure>\n\n\n\n<p>En la primera parte de la gr\u00e1fica en el intervalo [2,12] presenta un mayor error respecto a los puntos experimentales.<\/p>\n\n\n\n<p>Se intenta aumentando el punto alrededor de 6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ti = &#091;2,6,12,18]\nyi = &#091;0,1.5,4.1,2.0]<\/code><\/pre>\n\n\n\n<p>con un mejor resultado observado a simple vista<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Polinomio de Lagrange: \n-0.004444*x**3 + 0.094722*x**2 - 0.151667*x - 0.04\n\n            3             2                    \n- 0.004444\u22c5x  + 0.094722\u22c5x  - 0.151667\u22c5x - 0.04<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/11\/s1EIT2015_salidacardiaca_03.png\" alt=\"s1EIT2015 salida cardiaca 01, polinomio grado 3\" class=\"wp-image-21717\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Usando el algoritmo se puede incorporar todos los puntos<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Algoritmo en Python<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 1Eva2015TI_T2 Salida cardiaca\n# Interpolacion de Lagrange\n# divisoresL solo para mostrar valores denominador\nimport numpy as np\nimport sympy as sym\n \ndef interpola_Lagrange(xi,fi,vertabla=False,\n                       precision=6, casicero = 1e-15):\n    '''\n    Interpolaci\u00f3n con m\u00e9todo de Lagrange\n    resultado: polinomio en forma simb\u00f3lica\n    '''\n    # Matrices como arreglo, numeros reales\n    xi = np.array(xi,dtype=float)\n    fi = np.array(fi,dtype=float)\n     \n    if vertabla==True:\n        print('Interpola con Lagrange')\n         \n    # Polinomio con Lagrange\n    n = len(xi)\n    x = sym.Symbol('x')\n    polinomio = sym.S.Zero\n    divisorL = np.zeros(n, dtype = float)\n    for i in range(0,n,1):\n         \n        termino = 1 # Termino de Lagrange\n        numerador = 1\n        denominador = 1\n        for j  in range(0,n,1):\n            if (j!=i):\n                numerador = numerador*(x-xi&#x5B;j])\n                denominador = denominador*(sym.UnevaluatedExpr(xi&#x5B;i])-xi&#x5B;j])\n        terminoLi = numerador\/denominador\n         \n        if vertabla==True:\n            txt0='' ; txt1='('; txt2=')'\n            if i&gt;0:\n                txt0='+'\n            if n&gt;2:\n                txt1=''; txt2=''\n            print(txt0,fi&#x5B;i],'*'+txt1,numerador,txt2+'\/'+ txt1,\n                  denominador,txt2)\n         \n        polinomio = polinomio + (terminoLi.doit())*fi&#x5B;i]\n        denominador = denominador.doit()\n        divisorL&#x5B;i] = denominador\n         \n    # simplifica el polinomio\n    polisimple = polinomio.expand()\n     \n    try: # intenta redondear coeficientes a precisiion    \n        polisimple = redondea_coef(polisimple, precision,casicero)\n    except NameError:\n        print(&quot;redondea_coef() no se encuentra definida.&quot;)\n \n    if vertabla==True:\n        print('polinomio simplificado')\n        print(polisimple)\n         \n    return(polisimple)\n \ndef redondea_coef(ecuacion, precision=6,casicero = 1e-15):\n    ''' redondea coeficientes de t\u00e9rminos suma de una ecuacion\n    '''\n    tipo = type(ecuacion)\n    tipo_eq = False\n    if tipo == sym.core.relational.Equality:\n        RHS = ecuacion.rhs\n        ecuacion = ecuacion.lhs\n        tipo = type(ecuacion)\n        tipo_eq = True\n \n    if tipo == sym.core.add.Add: # t\u00e9rminos suma de ecuacion\n        term_sum = sym.Add.make_args(ecuacion)\n        ecuacion = sym.S.Zero\n        for term_k in term_sum:\n            # factor multiplicativo de termino suma\n            term_mul = sym.Mul.make_args(term_k)\n            producto = sym.S.One\n            for factor in term_mul:\n                if not(factor.has(sym.Symbol)):\n                    factor = np.around(float(factor),precision)\n                    if (abs(factor)%1)&lt;casicero: # si es entero\n                        factor = int(factor)\n                producto = producto*factor\n            ecuacion = ecuacion + producto\n    if tipo == sym.core.mul.Mul: # termino \u00fanico, busca factores\n        term_mul = sym.Mul.make_args(ecuacion)\n        producto = sym.S.One\n        for factor in term_mul:\n            if not(factor.has(sym.Symbol)):\n                factor = np.around(float(factor),precision)\n                if (abs(factor)%1)&lt;casicero: # si es entero\n                    factor = int(factor)\n            producto = producto*factor\n        ecuacion = producto\n    if tipo == float: # si es entero\n        if (abs(ecuacion)%1)&lt;casicero: \n            ecuacion = int(ecuacion)\n    if tipo_eq:\n        ecuacion = sym.Eq(ecuacion,RHS)\n    return(ecuacion)\n \n# PROGRAMA DE PRUEBA -----------------------------\n# INGRESO\n# Gr\u00e1fica de datos experimentales:\nti = &#x5B;2,6,9,12,15,18]\nyi = &#x5B;0,1.5,3.2,4.1,3.4,2.0]\n\nxi = &#x5B;2,6,12,18]\nfi = &#x5B;0,1.5,4.1,2.0]\n \n# PROCEDIMIENTO\npolisimple = interpola_Lagrange(xi,fi,vertabla=True)\nx = sym.Symbol('x')\npx = sym.lambdify(x,polisimple)\n \n# SALIDA\nprint('Polinomio de Lagrange: ')\nprint(polisimple)\nprint()\nsym.pprint(polisimple)\n\n# Gr\u00e1fica --------------\nimport matplotlib.pyplot as plt\nmuestras = 21   # resoluci\u00f3n gr\u00e1fica\n \na = np.min(ti)  # intervalo &#x5B;a,b]\nb = np.max(ti)\nxk = np.linspace(a,b,muestras)\nyk = px(xk)\n \nplt.plot(ti,yi,'o', label = '&#x5B;xi,fi]')\nplt.plot(xk,yk, label = 'p(x)')\nplt.legend()\nplt.xlabel('xi')\nplt.ylabel('fi')\nplt.title('Interpolaci\u00f3n Lagrange')\nplt.show()\n<\/pre><\/div>\n\n\n<p>Observe que si solamente usa los 3 primeros puntos, la curva obtenida aumenta el error para una parte del intervalo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"554\" height=\"435\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/11\/s1EIT2015_salidacardiaca_04.png\" alt=\"s1EIT2015 salida cardiaca gr\u00e1fica con tres primeros puntos para polinomio grado 2\" class=\"wp-image-21718\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>No se desarrolla el tema de integrales. (tarea)<br>Revisar el tema detallado de integrales, considerando todos los puntos experimentales.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 1Eva2015TI_T2 Salida cardiaca Soluci\u00f3n presentada como introducci\u00f3n al tema de interpolaci\u00f3n y soluci\u00f3n de sistemas de ecuaciones. Como ejemplo, se usa el m\u00e9todo de Lagrange. literal a Para seleccionar los puntos del polinomio de grado 2, se requiere observar la gr\u00e1fica. Se requiere desarrollar la parte anal\u00edtica en papel y l\u00e1piz para al menos [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-mn-ejemplo","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[58,54],"class_list":["post-1459","post","type-post","status-publish","format-standard","hentry","category-mn-s1eva20","tag-ejemplos-python","tag-mnumericos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1459","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=1459"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1459\/revisions"}],"predecessor-version":[{"id":21720,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1459\/revisions\/21720"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}