{"id":2117,"date":"2017-10-06T09:20:39","date_gmt":"2017-10-06T14:20:39","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=2117"},"modified":"2026-01-30T23:57:17","modified_gmt":"2026-01-31T04:57:17","slug":"edp-elipticas-metodo-iterativo","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u07\/edp-elipticas-metodo-iterativo\/","title":{"rendered":"7.2.1 EDP El\u00edpticas m\u00e9todo iterativo con 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=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas\/\">EDP El\u00edpticas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/a><\/p>\n\n\n\n<p>M\u00e9todo iterativo:<\/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<\/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\">1. Ejercicio<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Chapra 29.1 p866, Rodr\u00edguez 10.3 p425, Burden 12.1 p694<\/p>\n\n\n\n<p>Siguiendo el tema anterior en <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/analisisnumerico\/edp-elipticas\/\">EDP El\u00edpticas<\/a>, para resolver la parte num\u00e9rica asuma como:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Valores de frontera:<\/td><td><strong>T<\/strong><sub>a<\/sub> = 60\u00a0, <strong>T<\/strong><sub>b<\/sub> = 25 ,<\/td><td><strong>T<\/strong><sub>c<\/sub> = 50, <strong>T<\/strong><sub>d<\/sub> = 70<\/td><\/tr><tr><td>Longitud en:<\/td><td>\u00a0<strong>x<\/strong><sub>0<\/sub> = 0, <strong>x<\/strong><sub>n<\/sub> = 2 ,<\/td><td><strong>y<\/strong><sub>0<\/sub> = 0, <strong>y<\/strong><sub>n<\/sub> = 1.5<\/td><\/tr><tr><td>Tama\u00f1o de paso<\/td><td>dx = 0.25<\/td><td>dy = dx<\/td><\/tr><tr><td><\/td><td>iteramax = 100<\/td><td>\u00a0tolera = 0.0001<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Para la ecuaci\u00f3n diferencial parcial El\u00edptica<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{\\partial ^2 u}{\\partial x^2} + \\frac{\\partial ^2 u}{ \\partial y^2} = 0<\/span>\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\/10\/EdpElipticaItera_animado.gif\" alt=\"EDP El\u00edptica Itera gr\u00e1fico 3D animado\" class=\"wp-image-13897\" \/><\/figure>\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=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas\/\">EDP El\u00edpticas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/a><\/p>\n\n\n\n<p>M\u00e9todo iterativo:<\/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<\/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\">2. EDP El\u00edpticas: M\u00e9todo iterativo - Desarrollo Anal\u00edtico<\/h2>\n\n\n\n<p>A partir del resultado desarrollado en <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/analisisnumerico\/edp-elipticas\/\"><strong>EDP el\u00edpticas<\/strong><\/a>:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\frac{(\\Delta y)^2}{(\\Delta x)^2} \\Big( u_{i+1,j}-2u_{i,j} +u_{i-1,j} \\Big)+ u_{i,j+1}-2u_{i,j}+u_{i,j-1}=0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\lambda \\Big( u_{i+1,j}-2u_{i,j} +u_{i-1,j} \\Big)+ u_{i,j+1}-2u_{i,j}+u_{i,j-1}=0 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\lambda u_{i+1,j} +(-2\\lambda-2) u_{i,j} +\\lambda u_{i-1,j} + u_{i,j+1} +u_{i,j-1}=0 <\/span>\n\n\n\n<p>y con el supuesto que: <span class=\"wp-katex-eq\" data-display=\"false\"> \\lambda = \\frac{(\\Delta y)^2}{(\\Delta x)^2} = 1 <\/span><\/p>\n\n\n\n<p>se puede plantear que:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{i+1,j}-4u_{i,j}+u_{i-1,j} + u_{i,j+1} +u_{i,j-1} = 0 <\/span>\n\n\n\n<p>que reordenando para un punto central desconocido se convierte a:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> u_{i,j} = \\frac{1}{4} \\big[ u_{i+1,j}+u_{i-1,j} + u_{i,j+1} +u_{i,j-1} \\big] <\/span>\n\n\n\n<p>con lo que se interpreta que cada punto central es el resultado del promedio de los puntos alrededor del rombo formado en la malla.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"417\" height=\"411\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/10\/EDP_ElipticasIterativo02.png\" alt=\"EDP El\u00edpticas Iterativo gr\u00e1fica 3D\" class=\"wp-image-13894\" \/><\/figure>\n\n\n\n<p>El c\u00e1lculo num\u00e9rico se puede realizar de forma iterativa haciendo varias pasadas en la matriz, promediando cada punto. Para revisar las iteraciones se controla la convergencia junto con un m\u00e1ximo de iteraciones.<\/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=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas\/\">EDP El\u00edpticas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/a><\/p>\n\n\n\n<p>M\u00e9todo iterativo:<\/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<\/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<\/h2>\n\n\n\n<p>Para el ejercicio dado, se presenta el resultado para tres iteraciones y el resultado final con un gr\u00e1fico en 3D:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>u inicial:\n&#091;&#091;50.   50.   50.   50.   50.   50.   50.   50.   50.  ]\n &#091;60.   51.25 51.25 51.25 51.25 51.25 51.25 51.25 25.  ]\n &#091;60.   51.25 51.25 51.25 51.25 51.25 51.25 51.25 25.  ]\n &#091;60.   51.25 51.25 51.25 51.25 51.25 51.25 51.25 25.  ]\n &#091;60.   51.25 51.25 51.25 51.25 51.25 51.25 51.25 25.  ]\n &#091;60.   51.25 51.25 51.25 51.25 51.25 51.25 51.25 25.  ]\n &#091;70.   70.   70.   70.   70.   70.   70.   70.   70.  ]]\nitera: 0   ;  u:\n&#091;&#091;50.   50.   50.   50.   50.   50.   50.   50.   50.  ]\n &#091;60.   53.12 51.41 50.98 50.87 50.84 50.84 44.27 25.  ]\n &#091;60.   53.91 51.95 51.36 51.18 51.13 51.12 42.91 25.  ]\n &#091;60.   54.1  52.14 51.5  51.3  51.23 51.21 42.59 25.  ]\n &#091;60.   54.15 52.2  51.55 51.34 51.27 51.24 42.52 25.  ]\n &#091;60.   58.85 58.07 57.72 57.58 57.52 57.5  48.76 25.  ]\n &#091;70.   70.   70.   70.   70.   70.   70.   70.   70.  ]]\nerrado_u:  8.728094100952148\nitera: 1   ;  u:\n&#091;&#091;50.   50.   50.   50.   50.   50.   50.   50.   50.  ]\n &#091;60.   53.83 51.69 50.98 50.75 50.68 49.02 41.73 25.  ]\n &#091;60.   54.97 52.54 51.55 51.18 51.05 48.55 39.47 25.  ]\n &#091;60.   55.31 52.89 51.82 51.39 51.23 48.4  38.85 25.  ]\n &#091;60.   56.59 54.78 53.91 53.54 53.38 50.45 40.76 25.  ]\n &#091;60.   61.17 60.91 60.6  60.42 60.33 57.38 48.29 25.  ]\n &#091;70.   70.   70.   70.   70.   70.   70.   70.   70.  ]]\nerrado_u:  3.7443900108337402\nitera: 2   ;  u:\n&#091;&#091;50.   50.   50.   50.   50.   50.   50.   50.   50.  ]\n &#091;60.   54.17 51.92 51.06 50.73 50.2  47.62 40.52 25.  ]\n &#091;60.   55.5  52.97 51.76 51.23 50.3  46.45 37.7  25.  ]\n &#091;60.   56.25 53.95 52.75 52.19 51.07 46.71 37.54 25.  ]\n &#091;60.   58.05 56.71 55.9  55.47 54.33 49.8  40.16 25.  ]\n &#091;60.   62.24 62.39 62.18 61.99 60.93 57.25 48.1  25.  ]\n &#091;70.   70.   70.   70.   70.   70.   70.   70.   70.  ]]\nerrado_u:  2.0990657806396484\n... continua\nM\u00e9todo Iterativo EDP El\u00edptica\niteraciones: 41  converge =  True\nxi: &#091;0.   0.25 0.5  0.75 1.   1.25 1.5  1.75 2.  ]\nyj: &#091;0.   0.25 0.5  0.75 1.   1.25 1.5 ]\nTabla de resultados en malla EDP El\u00edptica\nj, U&#091;i,j]\n6 &#091;70. 70. 70. 70. 70. 70. 70. 70. 70.]\n5 &#091;60.   64.02 64.97 64.71 63.62 61.44 57.16 47.96 25.  ]\n4 &#091;60.   61.1  61.14 60.25 58.35 54.98 49.23 39.67 25.  ]\n3 &#091;60.   59.23 58.25 56.8  54.53 50.89 45.13 36.48 25.  ]\n2 &#091;60.   57.56 55.82 54.19 52.09 48.92 43.91 36.14 25.  ]\n1 &#091;60.   55.21 53.27 52.05 50.73 48.78 45.46 39.15 25.  ]\n0 &#091;50. 50. 50. 50. 50. 50. 50. 50. 50.]\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>cuyos valores se interpretan mejor en una gr\u00e1fica, en este caso 3D:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"417\" height=\"411\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/10\/EDP_ElipticasIterativo02.png\" alt=\"EDP El\u00edpticas Iterativo gr\u00e1fica 3D\" class=\"wp-image-13894\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Instrucciones en Python<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; highlight: [32,33,34,73,74,75]; title: ; notranslate\" title=\"\">\n# Ecuaciones Diferenciales Parciales\n# Elipticas. M\u00e9todo iterativo\n# d2u\/dx2  + du\/dt = f(x,y)\nimport numpy as np\n\n# INGRESO\nfxy = lambda x,y: 0*x+0*y # f(x,y) = 0 , ecuacion de Poisson\n# Condiciones iniciales en los bordes, valores de frontera\nTa = 60     # izquierda de la placa\nTb = 25     # derecha de la placa\n#Tc = 50    # inferior \nfxc = lambda x: 50+0*x #  f(x) inicial inferior\n# Td = 70   # superior\nfxd = lambda x: 70+0*x #  f(x) inicial superior\n\n# dimensiones de la placa\nx0 = 0    # longitud en x\nxn = 2\ny0 = 0    # longitud en y\nyn = 1.5\n# discretiza, supone dx=dy\ndx = 0.25  # Tama\u00f1o de paso\ndy = dx\n\niteramax = 100  # maximo de iteraciones\ntolera = 0.0001\nverdigitos = 2   # decimales a mostrar en tabla de resultados\nvertabla = True  # ver iteraciones\n\n# coeficientes de U&#x5B;x,t]. factores P,Q,R\nlamb = (dy**2)\/(dx**2)\nP = lamb       # izquierda P*U&#x5B;i-1,j]\nQ = -2*lamb-2  # centro Q*U&#x5B;i,j]\nR = lamb       # derecha R*U&#x5B;i+1,j]\n\n# PROCEDIMIENTO\n# iteraciones en xi,yj ancho,profundidad\nxi = np.arange(x0,xn+dx\/2,dx)\nyj = np.arange(y0,yn+dy\/2,dy)\nn = len(xi)\nm = len(yj)\n\n# Matriz u&#x5B;xi,yj], tabla de resultados\nu = np.zeros(shape=(n,m),dtype=float)\n\n# llena u con valores en fronteras\nu&#x5B;0,:]   = Ta   # izquierda\nu&#x5B;n-1,:] = Tb   # derecha\nfic = fxc(xi)   # Tc inferior\nu&#x5B;:,0]   = fic\nfid = fxd(xi)   # Td superior\nu&#x5B;:,m-1] = fid  \n# estado inicial dentro de la placa\n# promedio = (Ta+Tb+Tc+Td)\/4\npromedio = (Ta+Tb+np.max(fic)+np.max(fid))*(1\/-Q)\nu&#x5B;1:n-1,1:m-1] = promedio\n\nnp.set_printoptions(precision=verdigitos)\nif vertabla == True:\n    print('u inicial:')\n    print(np.transpose(u))\n\n# iterar puntos interiores\nU_3D = &#x5B;np.copy(u)]\nU_error = &#x5B;'--']\nitera = 0\nconverge = False\nwhile (itera&lt;=iteramax and converge==False):\n    itera = itera +1\n    Uantes = np.copy(u)\n    for i in range(1,n-1):\n        for j in range(1,m-1):\n            u&#x5B;i,j] = P*u&#x5B;i-1,j]+R*u&#x5B;i+1,j]+u&#x5B;i,j-1]+u&#x5B;i,j+1]\n            u&#x5B;i,j] = u&#x5B;i,j] - fxy(xi&#x5B;i],yj&#x5B;j])*(dy**2)\n            u&#x5B;i,j] = (1\/-Q)*u&#x5B;i,j]\n    diferencia = u - Uantes\n    errado_u = np.max(np.abs(diferencia))\n    if (errado_u&lt;tolera):\n        converge=True\n    U_3D.append(np.copy(u))\n    U_error.append(np.around(errado_u,verdigitos))\n    \n    if (vertabla==True) and (itera&lt;=3):\n        np.set_printoptions(precision=verdigitos)\n        print('itera:',itera-1,'  ; ','u:')\n        print(np.transpose(u))\n        print('errado_u: ', errado_u)\n    if (vertabla==True) and (itera==4):\n        print('... continua')\n        \n# SALIDA\nprint('M\u00e9todo Iterativo EDP El\u00edptica')\nprint('iteraciones:',itera,' converge = ', converge)\nprint('errado_u: ', errado_u)\nprint('xi:', xi)\nprint('yj:', yj)\nprint('Tabla de resultados en malla EDP El\u00edptica')\nprint('j, U&#x5B;i,j]')\nfor j in range(m-1,-1,-1):\n    print(j,u&#x5B;:,j])\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=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas\/\">EDP El\u00edpticas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/a><\/p>\n\n\n\n<p>M\u00e9todo iterativo:<\/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<\/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\">4.Gr\u00e1fica con Python<\/h2>\n\n\n\n<p>La gr\u00e1fica de resultados requiere ajuste de ejes, pues el \u00edndice de filas es el eje <strong>x<\/strong>, y las columnas es el eje <strong>y<\/strong>. La matriz y sus datos en la gr\u00e1fica se obtiene como la transpuesta de <strong>u<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA 3D ------\nimport matplotlib.pyplot as plt\n# Malla para cada eje X,Y\nXi, Yi = np.meshgrid(xi, yj)\nU = np.transpose(u) # ajuste de \u00edndices fila es x\n\nfig_3D = plt.figure()\ngraf_3D = fig_3D.add_subplot(111, projection='3d')\ngraf_3D.plot_wireframe(Xi,Yi,U,\n                       color ='blue')\ngraf_3D.plot(Xi&#x5B;1,0],Yi&#x5B;1,0],U&#x5B;1,0],'o',color ='orange')\ngraf_3D.plot(Xi&#x5B;1,1],Yi&#x5B;1,1],U&#x5B;1,1],'o',color ='red',\n             label='U&#x5B;i,j]')\ngraf_3D.plot(Xi&#x5B;1,2],Yi&#x5B;1,2],U&#x5B;1,2],'o',color ='salmon')\ngraf_3D.plot(Xi&#x5B;0,1],Yi&#x5B;0,1],U&#x5B;0,1],'o',color ='green')\ngraf_3D.plot(Xi&#x5B;2,1],Yi&#x5B;2,1],U&#x5B;2,1],'o',color ='salmon')\n\ngraf_3D.set_title('EDP el\u00edptica')\ngraf_3D.set_xlabel('x')\ngraf_3D.set_ylabel('y')\ngraf_3D.set_zlabel('U')\ngraf_3D.legend()\ngraf_3D.view_init(35, -45)\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=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u07\/edp-elipticas\/\">EDP El\u00edpticas<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">ejercicio<\/a><\/p>\n\n\n\n<p>M\u00e9todo iterativo:<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>EDP El\u00edpticas ejercicio M\u00e9todo iterativo: Anal\u00edtico Algoritmo gr\u00e1fica 1. Ejercicio Referencia: Chapra 29.1 p866, Rodr\u00edguez 10.3 p425, Burden 12.1 p694 Siguiendo el tema anterior en EDP El\u00edpticas, para resolver la parte num\u00e9rica asuma como: Valores de frontera: Ta = 60\u00a0, Tb = 25 , Tc = 50, Td = 70 Longitud en: \u00a0x0 = 0, [&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":[41],"tags":[],"class_list":["post-2117","post","type-post","status-publish","format-standard","hentry","category-mn-u07"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2117","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=2117"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2117\/revisions"}],"predecessor-version":[{"id":21243,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2117\/revisions\/21243"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=2117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=2117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=2117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}