{"id":540,"date":"2017-07-06T09:25:49","date_gmt":"2017-07-06T14:25:49","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=540"},"modified":"2026-04-04T08:28:03","modified_gmt":"2026-04-04T13:28:03","slug":"interpolacion-lagrange","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u04\/interpolacion-lagrange\/","title":{"rendered":"4.3 Interpolaci\u00f3n polin\u00f3mica de Lagrange con Python"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group alignwide has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Interpola Lagrange<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/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\n\n\n<p><a href=\"#funcion\" data-type=\"internal\" data-id=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"concepto\">1. Interpolaci\u00f3n polin\u00f3mica de Lagrange<\/h2>\n\n\n\n<figure class=\"wp-block-image alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/interpolaLagrange01.gif\" alt=\"interpolaci\u00f3n de Lagrange gr\u00e1fica 01\" class=\"wp-image-23386\" style=\"width:350px\" \/><\/figure>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Chapra 18.2 p516, Burden 3.1 p80, Rodr\u00edguez 6.2 p195<\/p>\n\n\n\n<p>El polinomio de interpolaci\u00f3n de Lagrange reformula el polinomio de interpolaci\u00f3n de Newton evitando el c\u00e1lculo de la tabla de diferencias divididas. <\/p>\n\n\n\n<p>El m\u00e9todo de Lagrange tolera las diferencias entre distancias <strong>x<\/strong> de los puntos de muestra.<\/p>\n\n\n\n<p>El polinomio de Lagrange se construye a partir de las f\u00f3rmulas:<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f_{n} (x) = \\sum_{i=0}^{n} L_{i} (x) f(x_{i})<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> L_{i} (x) = \\prod_{j=0, j \\neq i}^{n} \\frac{x-x_j}{x_i - x_j}<\/span>\n\n\n\n<p>Donde una vez que se han seleccionado los puntos a usar que generan la misma cantidad de t\u00e9rminos que puntos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group alignwide has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Interpola Lagrange<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/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\n\n\n<p><a href=\"#funcion\" data-type=\"internal\" data-id=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"ejercicio\">2. Ejercicio<\/h2>\n\n\n\n<p>Dados los <strong>4<\/strong> puntos en la tabla se requiere obtener un polinomio de grado <strong>3<\/strong>.<\/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\/07\/interpolaLagrange01.gif\" alt=\"interpolaci\u00f3n de Lagrange gr\u00e1fica 01\" class=\"wp-image-23386\" \/><\/figure>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> p(x) = a_0 x^3 + a_1 x^2 + a_2 x^1 + a_3 <\/span>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>xi<\/th><td>0<\/td><td>0.2<\/td><td>0.3<\/td><td>0.4<\/td><\/tr><tr><th>fi<\/th><td>1<\/td><td>1.6<\/td><td>1.7<\/td><td>2.0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group alignwide has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Interpola Lagrange<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/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\n\n\n<p><a href=\"#funcion\" data-type=\"internal\" data-id=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"analitico\">3. Desarrollo anal\u00edtico<\/h2>\n\n\n\n<p>Se calculan cuatro t\u00e9rminos de Lagrange seg\u00fan las f\u00f3rmulas,<\/p>\n\n\n\n<p>t\u00e9rmino 1<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> L_{0} (x) = \\frac{(x-0.2)(x-0.3)(x-0.4)}{(0-0.2)(0-0.3)(0-0.4)}<\/span>\n\n\n\n<p>t\u00e9rmino 2<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> L_{1} (x) = \\frac{(x-0)(x-0.3)(x-0.4)}{(0.2-0)(0.2-0.3)(0.2-0.4)}<\/span>\n\n\n\n<p>t\u00e9rmino 3<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> L_{2} (x) = \\frac{(x-0)(x-0.2)(x-0.4)}{(0.3-0)(0.3-0.2)(0.3-0.4)}<\/span>\n\n\n\n<p>t\u00e9rmino 4<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> L_{3} (x) = \\frac{(x-0)(x-0.2)(x-0.3)}{(0.4-0)(0.4-0.2)(0.4-0.3)}<\/span>\n\n\n\n<p>se construye el polinomio usando la f\u00f3rmula para f<sub>n<\/sub>(x) para cada valor fi,<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> p_3(x) = 1 L_{0} (x) + 1.6 L_{1} (x) + 1.7 L_{2} (x) + 2 L_{3} (x)<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> p_3(x) = 1 \\frac{(x-0.2)(x-0.3)(x-0.4)}{(0-0.2)(0-0.3)(0-0.4)} + <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 1.6 \\frac{(x-0)(x-0.3)(x-0.4)}{(0.2-0)(0.2-0.3)(0.2-0.4)} <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 1.7 \\frac{(x-0)(x-0.2)(x-0.4)}{(0.3-0)(0.3-0.2)(0.3-0.4)}<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 2 \\frac{(x-0)(x-0.2)(x-0.3)}{(0.4-0)(0.4-0.2)(0.4-0.3)} <\/span>\n\n\n\n<p>La simplificaci\u00f3n de la expresi\u00f3n del polinomio se puede dejar como tarea o realizarla con Sympy con la instrucci\u00f3n <code>sym.expand()<\/code>.<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> p_3(x) = 41.6666 x^3 - 27.5 x^2 + 6.8333 x + 1 <\/span>\n\n\n\n<p>Una forma de verificar que el polinomio es correcto es usar un punto original xi[i] y comprobar que la evaluaci\u00f3n tiene como resultado fi[i].<\/p>\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\/07\/interpolaLagrange01.gif\" alt=\"interpolaci\u00f3n de Lagrange gr\u00e1fica 01\" class=\"wp-image-23386\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group alignwide has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Interpola Lagrange<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/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\n\n\n<p><a href=\"#funcion\" data-type=\"internal\" data-id=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmo\">3. Algoritmo en Python para el polinomio de Lagrange<\/h2>\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=\"Interpolaci\u00f3n polin\u00f3mica de Lagrange con Python\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/occ3J5sNdVg?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>En el algoritmo en Python, para construir las expresiones de cada t\u00e9rmino de Lagrange se usa la forma simb\u00f3lica con Sympy, con los datos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xi = &#091;0, 0.2, 0.3, 0.4]\nfi = &#091;1, 1.6, 1.7, 2.0]<\/code><\/pre>\n\n\n\n<p>En cada t\u00e9rmino L<sub>i<\/sub>(x) se usan todos los elementos <strong>i<\/strong> , excepto el mismo elemento <strong>i<\/strong>, en el numerador y denominador de la expresi\u00f3n.<\/p>\n\n\n\n<p>En polinomio se agrupan todos los t\u00e9rminos multiplicados por su respectivo valor fi[<strong>i<\/strong>].<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>    valores de fi:  &#091;1.  1.6 1.7 2. ]\ndivisores en L&#091;i]:  &#091;-0.024  0.004 -0.003  0.008]\n\nInterpolaci\u00f3n Lagrange\n250.0*x*(x - 0.3)*(x - 0.2) +\n400.0*x*(x - 0.4)*(x - 0.3) +\n-566.666666666667*x*(x - 0.4)*(x - 0.2) +\n-41.6666666666667*(x - 0.4)*(x - 0.3)*(x - 0.2)\n\nPolinomio de Lagrange: \n41.6666666666667*x**3 - 27.5*x**2 + 6.83333333333334*x + 1.0\np(x):\n                  3         2                           \n41.6666666666667\u22c5x  - 27.5\u22c5x  + 6.83333333333334\u22c5x + 1.0<\/code><\/pre>\n\n\n\n<p>Las expresiones del polinomio contiene los binomios en su forma b\u00e1sica, para resolver y simplificar las ecuaciones se usa <code>polinomio.expand()<\/code>.<\/p>\n\n\n\n<p>Para realizar la gr\u00e1fica del polinomio es conveniente convertirlo a la forma lambda con Numpy, de esta forma se eval\u00faa en una sola linea todos los puntos para el intervalo [a,b] en x.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; highlight: [28,29,30,31,33]; title: ; notranslate\" title=\"\">\n# Interpolacion de Lagrange\n# divisoresL solo para mostrar valores denominador\nimport numpy as np\nimport sympy as sym\n\n# INGRESO , Datos de prueba\nxi = &#x5B;0, 0.2, 0.3, 0.4]\nfi = &#x5B;1, 1.6, 1.7, 2.0]\n\ntitulo = 'Interpolaci\u00f3n Lagrange'\n\n# PROCEDIMIENTO\n# Vectores como arreglo, numeros reales\nxi = np.array(xi,dtype=float)\nfi = np.array(fi,dtype=float)\nn = len(xi)\n\n# Polinomio de Lagrange\nx = sym.Symbol('x')\npolinomio = 0*x   # sym.S.Zero en Sympy\ndivisorL = np.zeros(n, dtype = float)\nfor i in range(0,n,1):\n    \n    # 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*(xi&#x5B;i]-xi&#x5B;j])\n    terminoLi = numerador\/denominador\n\n    polinomio = polinomio + terminoLi*fi&#x5B;i]\n    divisorL&#x5B;i] = denominador\n\npolisimple = polinomio.expand() # simplifica los (x-xi)\npx = sym.lambdify(x,polisimple) # evaluaci\u00f3n num\u00e9rica\n\n# SALIDA\nprint('    valores de fi: ',fi)\nprint('divisores en L&#x5B;i]: ',divisorL)\nprint()\nprint(titulo)\n#print(polinomio)\nterminos = sym.Add.make_args(polinomio)\nn_term = len(terminos)\nfor i in range(0,n_term,1):\n    if i&lt;(n_term-1):\n        print(terminos&#x5B;i],'+')\n    else:\n        print(terminos&#x5B;i])\nprint()\nprint('Polinomio de Lagrange: ')\nprint(polisimple)\nprint('p(x):')\nsym.pprint(polisimple)\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"grafica\">4. Gr\u00e1fica en Python para el polinomio de Lagrange<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group alignwide has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Interpola Lagrange<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/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\n\n\n<p><a href=\"#funcion\" data-type=\"internal\" data-id=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Para la gr\u00e1fica se a\u00f1aden las siguientes instrucciones<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Gr\u00e1fica --------------\nimport matplotlib.pyplot as plt\n\nmuestras = 21   # resoluci\u00f3n gr\u00e1fica\n\na = np.min(xi)  # intervalo &#x5B;a,b]\nb = np.max(xi)\nxk = np.linspace(a,b,muestras)\nyk = px(xk)\n\nplt.plot(xi,fi,'o', label = '&#x5B;xi,fi]')\nplt.plot(xk,yk, label = 'p(x)')\nplt.legend()\nplt.xlabel('xi')\nplt.ylabel('fi')\nplt.title(titulo)\nplt.tight_layout()\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 alignwide has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Interpola Lagrange<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/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\n\n\n<p><a href=\"#funcion\" data-type=\"internal\" data-id=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"funcion\">5. Algoritmo en Python como funci\u00f3n<\/h2>\n\n\n\n<p>Se convierte el algoritmo a una funci\u00f3n para usar en ejercicios donde se requiera mas de un proceso de interpolaci\u00f3n:<\/p>\n\n\n\n<p>Se expresa el resultado en mas detalle en las operaciones,<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Interpola con Lagrange\n 1.0 * (x - 0.4)*(x - 0.3)*(x - 0.2) \/( (0.0 - 0.2)*(0.0 - 0.3)*(0.0 - 0.4)  )\n+ 1.6 * x*(x - 0.4)*(x - 0.3) \/( (-0.0 + 0.2)*(0.2 - 0.3)*(0.2 - 0.4)  )\n+ 1.7 * x*(x - 0.4)*(x - 0.2) \/( (-0.0 + 0.3)*(-0.2 + 0.3)*(0.3 - 0.4)  )\n+ 2.0 * x*(x - 0.3)*(x - 0.2) \/( (-0.0 + 0.4)*(-0.2 + 0.4)*(-0.3 + 0.4)  )\npolinomio simplificado\n41.666667*x**3 - 27.5*x**2 + 6.833333*x + 1\nPolinomio de Lagrange: \n41.666667*x**3 - 27.5*x**2 + 6.833333*x + 1\n\n           3         2                 \n41.666667\u22c5x  - 27.5\u22c5x  + 6.833333\u22c5x + 1<\/code><\/pre>\n\n\n\n<p>con lo que las instrucciones quedan como:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Interpolacion de Lagrange\n# divisoresL solo para mostrar valores denominador\nimport numpy as np\nimport sympy as sym\n\n# INGRESO\nxi = &#x5B;0, 0.2, 0.3, 0.4]\nfi = &#x5B;1, 1.6, 1.7, 2.0]\n\n# Algoritmos como funcion\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])-sym.UnevaluatedExpr(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# 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('p(x):')\nsym.pprint(polisimple)\n<\/pre><\/div>\n\n\n<p>La gr\u00e1fica se puede realizar con las instrucciones anteriores.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group alignwide has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Interpola Lagrange<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/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\n\n\n<p><a href=\"#funcion\" data-type=\"internal\" data-id=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/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=\"libreria\">6.Funci\u00f3n en librer\u00eda Scipy.interpolate.lagrange<\/h2>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>&gt;&gt;&gt; import scipy as sp\n&gt;&gt;&gt; xi = &#091;0,0.2,0.3,0.4]\n&gt;&gt;&gt; fi = &#091;1,1.6,1.7,2.0]\n&gt;&gt;&gt; sp.interpolate.lagrange(xi,fi)\npoly1d(&#091; 41.66666667, -27.5       ,   6.83333333,   1.        ])\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group alignwide has-medium-font-size is-content-justification-center is-layout-flex wp-container-core-group-is-layout-b02886af wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Interpola Lagrange<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#analitico\">Anal\u00edtico<\/a><\/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\n\n\n<p><a href=\"#funcion\" data-type=\"internal\" data-id=\"#funcion\">funci\u00f3n<\/a><\/p>\n\n\n\n<p><a href=\"#libreria\">librer\u00eda<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Interpola Lagrange Ejercicio Anal\u00edtico Algoritmo gr\u00e1fica funci\u00f3n librer\u00eda 1. Interpolaci\u00f3n polin\u00f3mica de Lagrange Referencia: Chapra 18.2 p516, Burden 3.1 p80, Rodr\u00edguez 6.2 p195 El polinomio de interpolaci\u00f3n de Lagrange reformula el polinomio de interpolaci\u00f3n de Newton evitando el c\u00e1lculo de la tabla de diferencias divididas. El m\u00e9todo de Lagrange tolera las diferencias entre distancias x [&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":[38],"tags":[],"class_list":["post-540","post","type-post","status-publish","format-standard","hentry","category-mn-u04"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/540","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=540"}],"version-history":[{"count":21,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/540\/revisions"}],"predecessor-version":[{"id":23391,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/540\/revisions\/23391"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}