{"id":2448,"date":"2018-09-12T09:12:03","date_gmt":"2018-09-12T14:12:03","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=2448"},"modified":"2026-04-05T21:02:20","modified_gmt":"2026-04-06T02:02:20","slug":"s3eva2018ti_t2-drenaje-de-estanque","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s3eva20\/s3eva2018ti_t2-drenaje-de-estanque\/","title":{"rendered":"s3Eva2018TI_T2 Drenaje de estanque"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-3eva20\/3eva2018ti_t2-drenaje-de-estanque\/\" data-type=\"post\" data-id=\"2441\">3Eva2018TI_T2 Drenaje de estanque<\/a><\/p>\n\n\n\n<p><strong>literal a<\/strong><\/p>\n\n\n\n<p>Se usa interpolaci\u00f3n para encontrar los polinomios que pasan por los puntos seleccionados.<\/p>\n\n\n\n<p>El error de A(5) se obtiene como la diferencia entre el valor de la tabla y el polinomio del tramo [4,6] evaluado en el punto.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>ordenado:  &#091;6 5 4 3 2 1 0]\nhi:  &#091;0 1 2 3 4 5 6]\nAi:  &#091; 0.02  0.18  0.32  0.45  0.67  0.97  1.17]\n\npuntos seleccionados:\nh1:  &#091;0, 2, 4, 6]\nA1:  &#091; 0.02  0.32  0.67  1.17]\n\nPolinomios por tramos: \n x = &#091;0,2]\n0.000416666666666669*x**3 + 0.148333333333333*x + 0.02\n x = &#091;2,4]\n0.00416666666666666*x**3 - 0.0224999999999999*x**2 + 0.193333333333333*x - 0.00999999999999984\n x = &#091;4,6]\n-0.00458333333333333*x**3 + 0.0824999999999999*x**2 - 0.226666666666666*x + 0.549999999999999\n\nerror en px(5):  0.0637499999999998\n<\/code><\/pre>\n\n\n\n<p>se observa que la evaluaci\u00f3n se realiza para el polinomio entre [4,6]<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"554\" height=\"434\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2018\/09\/drenajeestanque02ah.png\" alt=\"drenaje estanque 02 ah\" class=\"wp-image-18596\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Desarrollo en Python<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 3ra Evaluaci\u00f3n I T\u00e9rmino 2018\n# Tema 2. Drenaje de Estanque\n\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport sympy as sym\n\ndef traza3natural(xi,yi):\n    # Trazador c\u00fabico natural, splines\n    # resultado: polinomio en forma simb\u00f3lica\n    n = len(xi)\n    # Valores h\n    h = np.zeros(n-1, dtype = float)\n    for j in range(0,n-1,1):\n        h&#x5B;j] = xi&#x5B;j+1] - xi&#x5B;j]\n    \n    # Sistema de ecuaciones\n    A = np.zeros(shape=(n-2,n-2), dtype = float)\n    B = np.zeros(n-2, dtype = float)\n    S = np.zeros(n, dtype = float)\n    A&#x5B;0,0] = 2*(h&#x5B;0]+h&#x5B;1])\n    A&#x5B;0,1] = h&#x5B;1]\n    B&#x5B;0] = 6*((yi&#x5B;2]-yi&#x5B;1])\/h&#x5B;1] - (yi&#x5B;1]-yi&#x5B;0])\/h&#x5B;0])\n    for i in range(1,n-3,1):\n        A&#x5B;i,i-1] = h&#x5B;i]\n        A&#x5B;i,i] = 2*(h&#x5B;i]+h&#x5B;i+1])\n        A&#x5B;i,i+1] = h&#x5B;i+1]\n        B&#x5B;i] = 6*((yi&#x5B;i+2]-yi&#x5B;i+1])\/h&#x5B;i+1] - (yi&#x5B;i+1]-yi&#x5B;i])\/h&#x5B;i])\n    A&#x5B;n-3,n-4] = h&#x5B;n-3]\n    A&#x5B;n-3,n-3] = 2*(h&#x5B;n-3]+h&#x5B;n-2])\n    B&#x5B;n-3] = 6*((yi&#x5B;n-1]-yi&#x5B;n-2])\/h&#x5B;n-2] - (yi&#x5B;n-2]-yi&#x5B;n-3])\/h&#x5B;n-3])\n    \n    # Resolver sistema de ecuaciones\n    r = np.linalg.solve(A,B)\n    # S\n    for j in range(1,n-1,1):\n        S&#x5B;j] = r&#x5B;j-1]\n    S&#x5B;0] = 0\n    S&#x5B;n-1] = 0\n    \n    # Coeficientes\n    a = np.zeros(n-1, dtype = float)\n    b = np.zeros(n-1, dtype = float)\n    c = np.zeros(n-1, dtype = float)\n    d = np.zeros(n-1, dtype = float)\n    for j in range(0,n-1,1):\n        a&#x5B;j] = (S&#x5B;j+1]-S&#x5B;j])\/(6*h&#x5B;j])\n        b&#x5B;j] = S&#x5B;j]\/2\n        c&#x5B;j] = (yi&#x5B;j+1]-yi&#x5B;j])\/h&#x5B;j] - (2*h&#x5B;j]*S&#x5B;j]+h&#x5B;j]*S&#x5B;j+1])\/6\n        d&#x5B;j] = yi&#x5B;j]\n    \n    # Polinomio trazador\n    x = sym.Symbol('x')\n    polinomio = &#x5B;]\n    for j in range(0,n-1,1):\n        ptramo = a&#x5B;j]*(x-xi&#x5B;j])**3 + b&#x5B;j]*(x-xi&#x5B;j])**2 + c&#x5B;j]*(x-xi&#x5B;j])+ d&#x5B;j]\n        ptramo = ptramo.expand()\n        polinomio.append(ptramo)\n    \n    return(polinomio)\n\n# PROGRAMA -------------------------\n\nhi = np.array(&#x5B;6, 5, 4, 3, 2, 1, 0])\nAi = np.array(&#x5B;1.17, 0.97, 0.67, 0.45, 0.32, 0.18, 0.02])\nxk = 5\n\n# PROCEDIMIENTO LITERAL a\n# reordena en forma ascendente\nordenado = np.argsort(hi)\nhi = hi&#x5B;ordenado]\nAi = Ai&#x5B;ordenado]\n\n# Selecciona puntos\nxi = &#x5B;0,2,4,6]\nfi = Ai&#x5B;xi]\nn = len(xi)\n\npolinomio = traza3natural(xi,fi)\n\n# literal a, estima error\npx = polinomio&#x5B;2]\npxk = px.subs('x',xk)\nerrado = np.abs(Ai&#x5B;xk] - pxk)\n\n# SALIDA\nprint('ordenado: ', ordenado)\nprint('hi: ', hi)\nprint('Ai: ', Ai)\nprint('puntos seleccionados:')\nprint('h1: ', xi)\nprint('A1: ', fi)\n\nprint('Polinomios por tramos: ')\nfor tramo in range(1,n,1):\n    print(' x = &#x5B;'+str(xi&#x5B;tramo-1])+','+str(xi&#x5B;tramo])+']')\n    print(str(polinomio&#x5B;tramo-1]))\n\nprint('error en px(5): ', errado)\n\n# GRAFICA\n# Puntos para grafica en cada tramo\nresolucion = 10 # entre cada par de puntos\nxtrazado = np.array(&#x5B;])\nytrazado = np.array(&#x5B;])\ntramo = 1\nwhile not(tramo&gt;=n):\n    a = xi&#x5B;tramo-1]\n    b = xi&#x5B;tramo]\n    xtramo = np.linspace(a,b,resolucion)\n    \n    ptramo = polinomio&#x5B;tramo-1]\n    pxtramo = sym.lambdify('x',ptramo)\n    ytramo = pxtramo(xtramo)\n    \n    xtrazado = np.concatenate((xtrazado,xtramo))\n    ytrazado = np.concatenate((ytrazado,ytramo))\n    tramo = tramo + 1\n\n# GRAFICA\n# puntos originales\nplt.plot(hi,Ai,'o',label = 'Ai')\n# Trazador c\u00fabico\nplt.plot(xtrazado,ytrazado, label = 'p(h)')\nplt.plot(xi,fi,'o', label = 'Apx')\nplt.title('Trazador c\u00fabico natural (splines)')\nplt.xlabel('x')\nplt.ylabel('y')\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<p><strong>Literal b<\/strong><\/p>\n\n\n\n<p>TAREA<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2018TI_T2 Drenaje de estanque literal a Se usa interpolaci\u00f3n para encontrar los polinomios que pasan por los puntos seleccionados. El error de A(5) se obtiene como la diferencia entre el valor de la tabla y el polinomio del tramo [4,6] evaluado en el punto. se observa que la evaluaci\u00f3n se realiza para el polinomio [&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":[51],"tags":[58,54],"class_list":["post-2448","post","type-post","status-publish","format-standard","hentry","category-mn-s3eva20","tag-ejemplos-python","tag-mnumericos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2448","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=2448"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2448\/revisions"}],"predecessor-version":[{"id":23930,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2448\/revisions\/23930"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=2448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=2448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=2448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}