{"id":8991,"date":"2023-07-05T07:30:43","date_gmt":"2023-07-05T12:30:43","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/analisisnumerico\/?p=8991"},"modified":"2026-04-05T19:59:03","modified_gmt":"2026-04-06T00:59:03","slug":"s1eva2023paoi_t3-recoger-los-restos-de-sumergible","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s1eva30\/s1eva2023paoi_t3-recoger-los-restos-de-sumergible\/","title":{"rendered":"s1Eva2023PAOI_T3 Recoger los restos de sumergible"},"content":{"rendered":"\n<p><strong>Ejercicio<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-1eva30\/1eva2023paoi_t3-recoger-los-restos-de-sumergible\/\" data-type=\"post\" data-id=\"8953\">1Eva2023PAOI_T3 Recoger los restos de sumergible<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>Para realizar el planteamiento del ejercicio, se realiza la gr\u00e1fica para observar mejor los puntos.<\/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\/2023\/07\/RovSumergiblePolinomio01.png\" alt=\"Rov Sumergible puntos para Polinomio\" class=\"wp-image-14242\" \/><\/figure>\n\n\n\n<p>Se podr\u00eda observar los puntos y plantear un primer recorrido como el siguiente<\/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\/2023\/07\/rovsumergiblepolinomiodifdivnewton01.png\" alt=\"rov sumergible polinomio dif div newton 01\" class=\"wp-image-18846\" \/><\/figure>\n\n\n\n<p>los puntos corresponden a los \u00edndices j = [0 ,2, 5, 6, 11]:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code># INGRESO\nxj = np.array(&#091;0.2478, 0.6316, 1.3802, 2.4744, 2.7351, 2.8008,\n               3.5830, 3.6627, 3.7213, 4.2796, 4.3757, 4.6794])\nfj = np.array(&#091;1.8108, 0.1993, 4.7199, 2.4529, 2.3644, 3.5955,\n               2.6558, 4.3657, 4.1932, 4.6998, 4.7536, 1.5673])\n\n# seleccionando puntos\nj = &#091;0, 2, 5, 6, 11]\nxi = xj&#091;j]\nfi = fj&#091;j]<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Partiendo del algoritmo de <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/analisisnumerico\/diferencias-divididas-newton\/\">Diferencias divididas de Newton<\/a>, y a\u00f1adiendo vectores <code>xj<\/code> y <code>fj<\/code> para todos los puntos dados en el ejercicio.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Tabla Diferencia Dividida\n&#091;&#091;'i   ', 'xi  ', 'fi  ', 'F&#091;1]', 'F&#091;2]', 'F&#091;3]', 'F&#091;4]', 'F&#091;5]']]\n&#091;&#091; 0.      0.2478  1.8108  2.569  -1.3163  0.3389 -0.0561  0.    ]\n &#091; 1.      1.3802  4.7199 -0.7915 -0.1861  0.09    0.      0.    ]\n &#091; 2.      2.8008  3.5955 -1.2014  0.111   0.      0.      0.    ]\n &#091; 3.      3.583   2.6558 -0.9928  0.      0.      0.      0.    ]\n &#091; 4.      4.6794  1.5673  0.      0.      0.      0.      0.    ]]\ndDividida: \n&#091; 2.569  -1.3163  0.3389 -0.0561  0.    ]\npolinomio: \n2.56896856234546*x - 0.0561488275125463*(x - 3.583)*(x - 2.8008)*(x - 1.3802)*(x - 0.2478) \n+ 0.338875729488637*(x - 2.8008)*(x - 1.3802)*(x - 0.2478) \n- 1.31628089036375*(x - 1.3802)*(x - 0.2478) + 1.17420959025079\npolinomio simplificado: \n-0.0561488275125463*x**4 + 0.788728905753656*x**3 \n- 3.98331084054791*x**2 + 7.41286537452727*x \n+ 0.206696844067185\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>usando la tabla de diferencias divididas se plantea la expresi\u00f3n para el polinomio:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> p(x) = 1.8108 + 2.569 (x-0.2478) + <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + (-1.3163)(x-0.2478)(x-1.3802) + <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 0.3389 (x-0.2478)(x-1.3802)(x-2.8008) + <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + (-0.0561)(x-0.2478)(x-1.3802)(x-2.8008)(x-3.583) <\/span>\n\n\n\n<p>el algoritmo simplifica la expresi\u00f3n al siguiente polinomio,<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> p(x) = -0.0561 x^4 + 0.7887 x^3 - 3.9833 x^2 + 7.4128 x + 0.2066 <\/span>\n\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>Se usa el algoritmo Interpolaci\u00f3n polin\u00f3mica de Lagrange con Python para desarrollar el polinomio a partir de los puntos no usados en el literal anterior.<\/p>\n\n\n\n<p class=\"has-text-align-center\">j = [3,4,7,8,9,10]<\/p>\n\n\n\n<p>Para evitar oscilaciones grandes, se excluye el punto con \u00edndice 1, y se obtiene una opci\u00f3n mostrada:<\/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\/2023\/07\/rovsumergiblepolinomio02a.png\" alt=\"rovsumergiblepolinomio02a\" class=\"wp-image-18847\" \/><\/figure>\n\n\n\n<p>con el siguiente resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>    valores de fi:  &#091;2.4529 2.3644 4.3657 4.1932 4.6998 4.7536]\ndivisores en L(i):  &#091;-1.32578996  0.60430667 -0.02841115  0.02632723 -0.09228243  0.13986517]\n\nPolinomio de Lagrange, expresiones\n-1.85014223337671*(x - 4.3757)*(x - 4.2796)*(x - 3.7213)*(x - 3.6627)*(x - 2.7351) \n+ 3.9125829809921*(x - 4.3757)*(x - 4.2796)*(x - 3.7213)*(x - 3.6627)*(x - 2.4744) \n- 153.661523787291*(x - 4.3757)*(x - 4.2796)*(x - 3.7213)*(x - 2.7351)*(x - 2.4744) \n+ 159.272361555669*(x - 4.3757)*(x - 4.2796)*(x - 3.6627)*(x - 2.7351)*(x - 2.4744) \n- 50.928437685792*(x - 4.3757)*(x - 3.7213)*(x - 3.6627)*(x - 2.7351)*(x - 2.4744) \n+ 33.9870187307222*(x - 4.2796)*(x - 3.7213)*(x - 3.6627)*(x - 2.7351)*(x - 2.4744)\n\nPolinomio de Lagrange: \n-9.26814043907703*x**5 + 163.708008152209*x**4 \n- 1143.16428460497*x**3 + 3941.13583467614*x**2 \n- 6701.74628786718*x + 4496.64364271972\n&gt;&gt;&gt; \n<\/code><\/pre>\n\n\n\n<p>Para presentar la parte anal\u00edtica puede seleccionar menos puntos, se busca mostrar la aplicaci\u00f3n del algoritmo, no necesariamente cuan largo puede ser.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> p(x) = <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 2.4529\\frac{(x - 4.3757)(x - 4.2796)(x - 3.7213)(x - 3.6627)(x - 2.7351) }{(2.4744 - 4.3757)(2.4744 - 4.2796)(2.4744 - 3.7213)(2.4744 - 3.6627)(2.4744 - 2.7351)} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 2.3644\\frac{ (x - 4.3757)(x - 4.2796)(x - 3.7213)(x - 3.6627)(x - 2.4744) }{(2.7351 - 4.3757)(2.7351 - 4.2796)(2.7351 - 3.7213)(2.7351 - 3.6627)(2.7351 - 2.4744)}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> +4.3657\\frac{(x - 4.3757)(x - 4.2796)(x - 3.7213)(x - 2.7351)(x - 2.4744) }{(3.6627 - 4.3757)(3.6627 - 4.2796)(3.6627 - 3.7213)(3.6627 - 2.7351)(3.6627 - 2.4744)}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 4.1932 \\frac{(x - 4.3757)(x - 4.2796)(x - 3.6627)(x - 2.7351)(x - 2.4744) }{(3.7213 - 4.3757)(3.7213 - 4.2796)(3.7213 - 3.6627)(3.7213 - 2.7351)(3.7213 - 2.4744)}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> +4.6998\\frac{(x - 4.3757)(x - 3.7213)(x - 3.6627)(x - 2.7351)(x - 2.4744) }{(4.2796 - 4.3757)(4.2796 - 3.7213)(4.2796 - 3.6627)(4.2796 - 2.7351)(4.2796 - 2.4744)}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 4.7536 \\frac{(x - 4.2796)(x - 3.7213)(x - 3.6627)(x - 2.7351)(x - 2.4744)}{(4.3757 - 4.2796)(4.3757 - 3.7213)(4.3757 - 3.6627)(4.3757 - 2.7351)(4.3757 - 2.4744)}<\/span>\n\n\n\n<h2 class=\"wp-block-heading\">literal d<\/h2>\n\n\n\n<p>las gr\u00e1ficas se han presentado en el planteamiento para justificar los criterios usados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal e<\/h2>\n\n\n\n<p>Los errores de encuentran como la diferencia de los puntos no usados en el polinomio, y evaluando el polinomio en cada coordenada x.<\/p>\n\n\n\n<p>Como las propuestas de polinomio pueden ser variadas se obtendr\u00e1n diferentes respuestas para cada literal.<\/p>\n\n\n\n<p>Se revisa la aplicaci\u00f3n de conceptos en las propuestas.<\/p>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<p>Algoritmos usados<\/p>\n\n\n\n<p>literal b. Diferencias divididas de Newton<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 1Eva_2023PAOI_T3 Recoger los restos de sumergible\n# Polinomio interpolaci\u00f3n\n# Diferencias Divididas de Newton\n# Tarea: Verificar tama\u00f1o de vectores,\n#        verificar puntos equidistantes en x\nimport numpy as np\nimport sympy as sym\nimport matplotlib.pyplot as plt\n\n# INGRESO\nxj = np.array(&#x5B;0.2478, 0.6316, 1.3802, 2.4744, 2.7351, 2.8008,\n               3.5830, 3.6627, 3.7213, 4.2796, 4.3757, 4.6794])\nfj = np.array(&#x5B;1.8108, 0.1993, 4.7199, 2.4529, 2.3644, 3.5955,\n               2.6558, 4.3657, 4.1932, 4.6998, 4.7536, 1.5673])\n\n# selecionando puntos\nj = &#x5B;0, 2, 5, 6, 11]\nxi = xj&#x5B;j]\nfi = fj&#x5B;j]\n\n\n# PROCEDIMIENTO\n\n# Tabla de Diferencias Divididas Avanzadas\ntitulo = &#x5B;'i   ','xi  ','fi  ']\nn = len(xi)\nki = np.arange(0,n,1)\ntabla = np.concatenate((&#x5B;ki],&#x5B;xi],&#x5B;fi]),axis=0)\ntabla = np.transpose(tabla)\n\n# diferencias divididas vacia\ndfinita = np.zeros(shape=(n,n),dtype=float)\ntabla = np.concatenate((tabla,dfinita), axis=1)\n\n# Calcula tabla, inicia en columna 3\n&#x5B;n,m] = np.shape(tabla)\ndiagonal = n-1\nj = 3\nwhile (j &lt; m):\n    # A\u00f1ade t\u00edtulo para cada columna\n    titulo.append('F&#x5B;'+str(j-2)+']')\n\n    # cada fila de columna\n    i = 0\n    paso = j-2 # inicia en 1\n    while (i &lt; diagonal):\n        denominador = (xi&#x5B;i+paso]-xi&#x5B;i])\n        numerador = tabla&#x5B;i+1,j-1]-tabla&#x5B;i,j-1]\n        tabla&#x5B;i,j] = numerador\/denominador\n        i = i+1\n    diagonal = diagonal - 1\n    j = j+1\n\n# POLINOMIO con diferencias Divididas\n# caso: puntos equidistantes en eje x\ndDividida = tabla&#x5B;0,3:]\nn = len(dfinita)\n\n# expresi\u00f3n del polinomio con Sympy\nx = sym.Symbol('x')\npolinomio = fi&#x5B;0]\nfor j in range(1,n,1):\n    factor = dDividida&#x5B;j-1]\n    termino = 1\n    for k in range(0,j,1):\n        termino = termino*(x-xi&#x5B;k])\n    polinomio = polinomio + termino*factor\n\n# simplifica multiplicando entre (x-xi)\npolisimple = polinomio.expand()\n\n# polinomio para evaluacion num\u00e9rica\npx = sym.lambdify(x,polisimple)\n\n# Puntos para la gr\u00e1fica\nmuestras = 101\na = np.min(xi)\nb = np.max(xi)\npxi = np.linspace(a,b,muestras)\npfi = px(pxi)\n\n# SALIDA\nnp.set_printoptions(precision = 4)\nprint('Tabla Diferencia Dividida')\nprint(&#x5B;titulo])\nprint(tabla)\nprint('dDividida: ')\nprint(dDividida)\nprint('polinomio: ')\nprint(polinomio)\nprint('polinomio simplificado: ' )\nprint(polisimple)\n\n# Gr\u00e1fica\nplt.plot(xj,fj,'o',color='red')\nplt.plot(xi,fi,'o', label = 'Puntos')\n##for i in range(0,n,1):\n##    plt.axvline(xi&#x5B;i],ls='--', color='yellow')\n\nplt.plot(pxi,pfi, label = 'Polinomio')\nplt.legend()\nplt.grid()\nplt.xlabel('xi')\nplt.ylabel('fi')\nplt.title('Diferencias Divididas - Newton')\nplt.show()\n<\/pre><\/div>\n\n\n<p>literal c. Polinomio de Lagrange<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 1Eva_2023PAOI_T3 Recoger los restos de sumergible\n# Interpolacion de Lagrange\n# divisoresL solo para mostrar valores\nimport numpy as np\nimport sympy as sym\nimport matplotlib.pyplot as plt\n\n# INGRESO , Datos de prueba\nxj = np.array(&#x5B;0.2478, 0.6316, 1.3802, 2.4744, 2.7351, 2.8008,\n               3.5830, 3.6627, 3.7213, 4.2796, 4.3757, 4.6794])\nfj = np.array(&#x5B;1.8108, 0.1993, 4.7199, 2.4529, 2.3644, 3.5955,\n               2.6558, 4.3657, 4.1932, 4.6998, 4.7536, 1.5673])\n\n# selecionando puntos\n#j = &#x5B;0, 2, 5, 6, 11]\nj = &#x5B;3,4,7,8,9,10]\nxi = xj&#x5B;j]\nfi = fj&#x5B;j]\n\n# PROCEDIMIENTO\n# Polinomio de Lagrange\nn = len(xi)\nx = sym.Symbol('x')\npolinomio = 0\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\n# simplifica el polinomio\npolisimple = polinomio.expand()\n\n# para evaluaci\u00f3n num\u00e9rica\npx = sym.lambdify(x,polisimple)\n\n# Puntos para la gr\u00e1fica\nmuestras = 101\na = np.min(xi)\nb = np.max(xi)\npxi = np.linspace(a,b,muestras)\npfi = px(pxi)\n\n# SALIDA\nprint('    valores de fi: ',fi)\nprint('divisores en L(i): ',divisorL)\nprint()\nprint('Polinomio de Lagrange, expresiones')\nprint(polinomio)\nprint()\nprint('Polinomio de Lagrange: ')\nprint(polisimple)\n\n# Gr\u00e1fica\nplt.plot(xj,fj,'o',color='red')\nplt.plot(xi,fi,'o', label = 'Puntos')\nplt.plot(pxi,pfi, label = 'Polinomio')\nplt.legend()\nplt.grid()\nplt.xlabel('xi')\nplt.ylabel('fi')\nplt.title('Interpolaci\u00f3n Lagrange')\nplt.show()\n<\/pre><\/div>\n\n\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 1Eva2023PAOI_T3 Recoger los restos de sumergible literal a Para realizar el planteamiento del ejercicio, se realiza la gr\u00e1fica para observar mejor los puntos. Se podr\u00eda observar los puntos y plantear un primer recorrido como el siguiente los puntos corresponden a los \u00edndices j = [0 ,2, 5, 6, 11]: literal b Partiendo del algoritmo [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"wp-custom-template-entrada-mn-ejemplo","format":"standard","meta":{"footnotes":""},"categories":[46],"tags":[58,54],"class_list":["post-8991","post","type-post","status-publish","format-standard","hentry","category-mn-s1eva30","tag-ejemplos-python","tag-mnumericos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8991","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=8991"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8991\/revisions"}],"predecessor-version":[{"id":23828,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8991\/revisions\/23828"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=8991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=8991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=8991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}