{"id":2872,"date":"2017-11-11T09:05:46","date_gmt":"2017-11-11T14:05:46","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=2872"},"modified":"2026-02-17T05:28:46","modified_gmt":"2026-02-17T10:28:46","slug":"s1eva2011tii_t2-sistema-de-ecuaciones-diagonal-dominante","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s1eva20\/s1eva2011tii_t2-sistema-de-ecuaciones-diagonal-dominante\/","title":{"rendered":"s1Eva2011TII_T2 Sistema de Ecuaciones, diagonal dominante"},"content":{"rendered":"\n<p><strong>Ejercicio<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-evalua\/mn-1e15\/1eva2011tii_t2-sistema-de-ecuaciones-diagonal-dominante\/\" data-type=\"post\" data-id=\"407\">1Eva2011TII_T2 Sistema de Ecuaciones, diagonal dominante<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Desarrollo anal\u00edtico<\/h2>\n\n\n\n<p>Soluci\u00f3n iterativa usando el m\u00e9todo de <strong>Jacobi<\/strong><\/p>\n\n\n\n<p>El sistema de ecuaciones<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{cases} -2x+5y+9z=1\\\\7x+y+z=6\\\\-3x+7y-z=-26\\end{cases} <\/span>\n\n\n\n<p>cambia a su forma matricial AX=B<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} -2 &amp; 5 &amp; 9 \\\\ 7 &amp; 1 &amp; 1 \\\\ -3 &amp; 7 &amp; -1 \\end{bmatrix} \\begin{bmatrix} x \\\\ y \\\\ z \\end{bmatrix} = \\begin{bmatrix} 1 \\\\ 6 \\\\ -26 \\end{bmatrix}<\/span>\n\n\n\n<p>y luego como matriz aumentada y realizar el pivoteo parcial por filas, buscando hacerla diagonal dominante:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{pmatrix} 7 &amp; 1 &amp; 1 &amp; 6\\\\ -3 &amp; 7 &amp; -1 &amp; -26\\\\ -2 &amp; 5 &amp; 9 &amp; 1 \\end{pmatrix} <\/span>\n\n\n\n<p>las ecuaciones para el algoritmo se obtienen despejando una variable diferente en cada ecuaci\u00f3n.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_{i+1}=\\frac{6-y_i-z_i}{7}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y_{i+1}=\\frac{-26+3x_i+z_i}{7} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> z_{i+1}=\\frac{1+2x_i-5y_i}{9} <\/span>\n\n\n\n<p>Dado el vector inicial X<sub>0<\/sub>= [0, 0, 0], y una tolerancia de 0.0001, e desarrollan al menos 3 iteraciones:<\/p>\n\n\n\n<p>El error se verifica para \u00e9ste ejercicio como el mayor valor de la diferencia entre iteraciones consecutivas. Analog\u00eda al video del acople entre las aeronaves. Si una coordenada a\u00fan no es la correcta .... menor a lo tolerado, pues NO hay acople...<\/p>\n\n\n\n<p><strong><em>itera = 0<\/em><\/strong><\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_1=\\frac{6-(0)-(0)}{7} = 0.8571<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y_1=\\frac{-26+3(0)+(0)}{7} = -3,7142<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> z_1=\\frac{1+2(0)-5(0)}{9} =0.111 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> diferencia = [ 0.8571 -0 , -3,7142 -0 ,0.1111- 0 ]<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = [ 0.8571 , -3,7142,0.1111 ] <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> errado = max |diferencia| = 3,7142 <\/span>\n\n\n\n<p>error es m\u00e1s alto que lo tolerado<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_1= [ 0.8571 , -3.7142 ,0.1111 ] <\/span>\n\n\n\n<p><strong><em>Itera = 1<\/em><\/strong><\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_2=\\frac{6-(-3,7142) -0.1111}{7} = 1.3718<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y_2=\\frac{-26+3(0.8571)+0.1111}{7} = -3.3310 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> z_2=\\frac{1+2(0.8571)-5(-3,7142)}{9} = 2.3650 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> diferencia = [ 1.3718-0.8571 , -3.3310 -(-3.7142) , 2.3650 - 0.1111 ] <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = [0.5146 , 0.3832, 2.2539 ] <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> errado = max |diferencia| = 2.2539 <\/span>\n\n\n\n<p>el error disminuye, pero es m\u00e1s alto que lo tolerado<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_2= [ 1.3718 , -3.3310, 2.3650 ] <\/span>\n\n\n\n<p><strong><em>Itera = 2<\/em><\/strong><\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_3 = \\frac{6-(-3.3310)-2.3650}{7} = 0.9951<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y_3 = \\frac{-26+3(1.3718)+2.3650}{7} = -2.7884 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> z_3 = \\frac{1+2(1.3718)-5(-3.3310)}{9} = 2.2665 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> diferencia = [ 0.9951 - 1.3718 , -2.7884 -(-3.3310) , 2.2665- 2.3650] <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> diferencia = [ -0.3766 , 0.5425 , -0.0985] <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> errado = max |diferencia| = 0.5425 <\/span>\n\n\n\n<p>el error disminuye, pero es m\u00e1s alto que lo tolerado<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> X_3= [ 0.9951 , -2.7884 , 2.2665] <\/span>\n\n\n\n<p><em><strong>Observaci\u00f3n<\/strong><\/em>: Si el error disminuye en cada iteraci\u00f3n, se puede intuir que se converge a la soluci\u00f3n. Se puede continuar con la 4ta iteraci\u00f3n...<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Soluci\u00f3n num\u00e9rica usando Python<\/h2>\n\n\n\n<p>Usando el algoritmo desarrollado en clase se obtiene la respuesta con 13 iteraciones:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Matriz aumentada\n&#091;&#091; -2.   5.   9.   1.]\n &#091;  7.   1.   1.   6.]\n &#091; -3.   7.  -1. -26.]]\nPivoteo parcial:\n  1 intercambiar filas:  0 y 1\n  2 intercambiar filas:  1 y 2\nAB\nIteraciones Jacobi\nitera,&#091;X],errado\n0 &#091;0. 0. 0.] 1.0\n1 &#091; 0.85714286 -3.71428571  0.11111111] 3.7142857142857144\n2 &#091; 1.37188209 -3.33106576  2.36507937] 2.2539682539682544\n3 &#091; 0.99514091 -2.78846777  2.26656589] 0.5425979915775843\n4 &#091; 0.93170027 -2.96400162  1.8814023 ] 0.3851635892452223\n5 &#091; 1.0117999  -3.04621384  1.96482318] 0.0834208883015708\n6 &#091; 1.01162724 -2.99996816  2.02829656] 0.06347337312830126\n7 &#091; 0.99595309 -2.99097453  2.00256614] 0.025730417621558477\n8 &#091; 0.99834406 -3.0013678   1.99408654] 0.010393267289710018\n9 &#091; 1.00104018 -3.00155447  2.0003919 ] 0.006305364149447268\n10 &#091; 1.00016608 -2.99949822  2.00109475] 0.002056248145824391\n11 &#091; 0.99977193 -2.99977243  1.99975814] 0.0013366043333828959\n12 &#091; 1.00000204 -3.0001323   1.99982289] 0.0003598675094789172\n13 &#091; 1.0000442  -3.00002443  2.00007395] 0.0002510632800638568\n14 &#091; 0.99999292 -2.99997049  2.00002339] 5.3934767063168465e-05\nrespuesta de A.X=B : \n&#091; 0.99999292 -2.99997049  2.00002339]\niterado, incluyendo X0:  15<\/code><\/pre>\n\n\n\n<p>La gr\u00e1fica muestra las coordenadas de las aproximaciones, observe el espiral que se va cerrando desde el punto inicial en verde al punto final en rojo.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"445\" height=\"377\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/11\/jacobi1EIIT2011T2_diagdominante.png\" alt=\"Jacobi 1EIIT2011T2 diag dominante\" class=\"wp-image-18739\" \/><\/figure>\n\n\n\n<p>Se debe controlar el n\u00famero de iteraciones para verificar la convergencia con <em><strong>iteramax<\/strong><\/em>.<\/p>\n\n\n\n<p>NO es necesario almacenar los valores de los puntos, solo el \u00faltimo valor y el contador itera permite determinar si el sistema converge.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 1Eva_IIT2011_T2 Sistema de Ecuaciones, diagonal dominante\n# MATG1052 M\u00e9todos Num\u00e9ricos\n# propuesta: edelros@espol.edu.ec,\nimport numpy as np\n\ndef jacobi(A,B,X0, tolera, iteramax=100, vertabla=False):\n    ''' M\u00e9todo de Jacobi, tolerancia, vector inicial X0\n        para mostrar iteraciones: vertabla=True\n    '''\n    A = np.array(A,dtype=float)\n    B = np.array(B,dtype=float)\n    X0 = np.array(X0,dtype=float)\n    tamano = np.shape(A)\n    n = tamano&#x5B;0]\n    m = tamano&#x5B;1]\n    diferencia = np.ones(n, dtype=float)\n    errado = np.max(diferencia)\n    X = np.copy(X0)\n    xnuevo = np.copy(X0)\n    tabla = &#x5B;np.copy(X0)]\n\n    itera = 0\n    if vertabla==True:\n        print('Iteraciones Jacobi')\n        print('itera,&#x5B;X],errado')\n        print(itera, xnuevo, errado)\n    while not(errado&lt;=tolera or itera&gt;iteramax):\n        \n        for i in range(0,n,1):\n            nuevo = B&#x5B;i]\n            for j in range(0,m,1):\n                if (i!=j): # excepto diagonal de A\n                    nuevo = nuevo-A&#x5B;i,j]*X&#x5B;j]\n            nuevo = nuevo\/A&#x5B;i,i]\n            xnuevo&#x5B;i] = nuevo\n        diferencia = np.abs(xnuevo-X)\n        errado = np.max(diferencia)\n        X = np.copy(xnuevo)\n        \n        tabla = np.concatenate((tabla,&#x5B;X]),axis = 0)\n\n        itera = itera + 1\n        if vertabla==True:\n            print(itera, xnuevo, errado)\n\n    # No converge\n    if (itera&gt;iteramax):\n        X=itera\n        print('iteramax superado, No converge')\n    return(X,tabla)\n\ndef pivoteafila(A,B,vertabla=False):\n    '''\n    Pivotea parcial por filas, entrega matriz aumentada AB\n    Si hay ceros en diagonal es matriz singular,\n    Tarea: Revisar si diagonal tiene ceros\n    '''\n    A = np.array(A,dtype=float)\n    B = np.array(B,dtype=float)\n    # Matriz aumentada\n    nB = len(np.shape(B))\n    if nB == 1:\n        B = np.transpose(&#x5B;B])\n    AB  = np.concatenate((A,B),axis=1)\n    \n    if vertabla==True:\n        print('Matriz aumentada')\n        print(AB)\n        print('Pivoteo parcial:')\n    \n    # Pivoteo por filas AB\n    tamano = np.shape(AB)\n    n = tamano&#x5B;0]\n    m = tamano&#x5B;1]\n    \n    # Para cada fila en AB\n    pivoteado = 0\n    for i in range(0,n-1,1):\n        # columna desde diagonal i en adelante\n        columna = np.abs(AB&#x5B;i:,i])\n        dondemax = np.argmax(columna)\n        \n        # dondemax no es en diagonal\n        if (dondemax != 0):\n            # intercambia filas\n            temporal = np.copy(AB&#x5B;i,:])\n            AB&#x5B;i,:] = AB&#x5B;dondemax+i,:]\n            AB&#x5B;dondemax+i,:] = temporal\n\n            pivoteado = pivoteado + 1\n            if vertabla==True:\n                print(' ',pivoteado, 'intercambiar filas: ',i,'y', dondemax+i)\n    if vertabla==True:\n        if pivoteado==0:\n            print('  Pivoteo por filas NO requerido')\n        else:\n            print('AB')\n    return(AB)\n\n# PROGRAMA B\u00fasqueda de solucion\n# INGRESO --------\n\n# INGRESO\nA = &#x5B;&#x5B;-2, 5, 9],\n     &#x5B; 7, 1, 1],\n     &#x5B;-3, 7,-1]]\n\nB = &#x5B;1, 6,-26]\n\nX0 = &#x5B;0, 0,  0]\ntolera = 0.0001\niteramax = 100\n\n# PROCEDIMIENTO --------\nAB = pivoteafila(A,B,vertabla=True)\n# separa matriz aumentada en A y B\n&#x5B;n,m] = np.shape(AB)\nA = AB&#x5B;:,:m-1]\nB = AB&#x5B;:,m-1]\n\n&#x5B;X, puntos] = jacobi(A,B,X0,tolera,vertabla=True)\niterado = len(puntos)\n# SALIDA --------\nprint('respuesta de A.X=B : ')\nprint(X)\nprint('iterado, incluyendo X0: ', iterado)\n\n# GRAFICA DE ITERACIONES\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits.mplot3d import Axes3D\n\nfigura = plt.figure() # Una hoja para dibujar\ngrafica = figura.add_subplot(111,projection = '3d')\n\n# Puntos de la iteraci\u00f3n\npxi = puntos&#x5B;:,0]\npyi = puntos&#x5B;:,1]\npzi = puntos&#x5B;:,2]\ngrafica.plot(pxi,pyi,pzi, color = 'magenta',\n             label = 'puntos&#x5B;i]')\ngrafica.scatter(pxi&#x5B;0],pyi&#x5B;0],pzi&#x5B;0], color = 'green', marker='o')\ngrafica.scatter(pxi&#x5B;iterado-1],pyi&#x5B;iterado-1],pzi&#x5B;iterado-1],\n                color = 'red', marker='o')\n\ngrafica.set_title('Puntos de iteraci\u00f3n')\ngrafica.set_xlabel('eje x')\ngrafica.set_ylabel('eje y')\ngrafica.set_zlabel('eje z')\ngrafica.legend()\nplt.show()\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Gr\u00e1fica de planos<\/h3>\n\n\n\n<p>Dado que el sistema de ecuaciones es de tres inc\u00f3gnitas, la soluci\u00f3n se puede interpretar como la intersecci\u00f3n de los planos formados por cada una de las ecuaciones en el espacio X,Y,Z.<\/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\/11\/1e2011tii_t2_diagdominantePlanos.png\" alt=\"1e2011tii_t2 diag dominante planos\" class=\"wp-image-18740\" \/><\/figure>\n\n\n\n<p>se comenta la \u00faltima instrucci\u00f3n del algoritmo anterior, #plt.show(), y se a\u00f1aden las siguientes l\u00edneas al algoritmo anterior para obtener la gr\u00e1fica:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Tema 2. Sistema de ecuaciones 3x3\n# Concepto como interseccion de Planos\n##import matplotlib.pyplot as plt\n##from mpl_toolkits.mplot3d import Axes3D\n\nax = -5     # Intervalo X\nbx = 5\nay = ax-2   # Intervalo Y\nby = bx+2\n\nmuestras = 11\n\n# PROCEDIMIENTO --------\n# Ecuaciones de planos\nz0 = lambda x,y: (-A&#x5B;0,0]*x - A&#x5B;0,1]*y + B&#x5B;0])\/A&#x5B;0,2]\nz1 = lambda x,y: (-A&#x5B;1,0]*x - A&#x5B;1,1]*y + B&#x5B;1])\/A&#x5B;1,2]\nz2 = lambda x,y: (-A&#x5B;2,0]*x - A&#x5B;2,1]*y + B&#x5B;2])\/A&#x5B;2,2]\n\nxi = np.linspace(ax,bx, muestras)\nyi = np.linspace(ay,by, muestras)\nXi, Yi = np.meshgrid(xi,yi)\n\nZ0 = z0(Xi,Yi)\nZ1 = z1(Xi,Yi)\nZ2 = z2(Xi,Yi)\n\n# soluci\u00f3n al sistema\npunto = np.linalg.solve(A,B)\n\n# SALIDA\nprint('respuesta de A.X=B : ')\nprint(punto)\n\n# Interseccion entre ecuaci\u00f3n 1 y 2\n# PlanoXZ, extremo inferior de y\nAa  = np.copy(A&#x5B;0:2,&#x5B;0,2]])\nBa  = np.copy(B&#x5B;0:2])\nBa  = Ba-ay*A&#x5B;0:2,1]\npta = np.linalg.solve(Aa,Ba)\npa  = np.array(&#x5B;ay])\npxza = np.array(&#x5B;pta&#x5B;0],ay,pta&#x5B;1]])\n\n# PlanoXZ, extremo superior de y\nBb  = np.copy(B&#x5B;0:2])\nBb  = Bb-by*A&#x5B;0:2,1]\nptb = np.linalg.solve(Aa,Bb)\npb  = np.array(&#x5B;by])\npxzb = np.array(&#x5B;ptb&#x5B;0],by,ptb&#x5B;1]])\n\n# GRAFICA de planos\nfig3D = plt.figure()\ngraf3D = fig3D.add_subplot(111, projection='3d')\n\ngraf3D.plot_wireframe(Xi,Yi,Z0,\n                       color ='blue',\n                       label='Z1')\ngraf3D.plot_wireframe(Xi,Yi,Z1,\n                       color ='green',\n                       label='Z2')\ngraf3D.plot_wireframe(Xi,Yi,Z2,\n                       color ='orange',\n                       label='Z3')\n# recta intersecci\u00f3n planos 1 y 2\ngraf3D.plot(&#x5B;pxza&#x5B;0],pxzb&#x5B;0]],\n            &#x5B;pxza&#x5B;1],pxzb&#x5B;1]],\n            &#x5B;pxza&#x5B;2],pxzb&#x5B;2]],\n            label='Sol 1y2',\n            color = 'violet',\n            linewidth = 4)\n# Punto soluci\u00f3n del sistema 3x3\ngraf3D.scatter(punto&#x5B;0],punto&#x5B;1],punto&#x5B;2],\n                color = 'red',\n                marker='o',\n                label ='punto',\n                linewidth = 6)\n\ngraf3D.set_title('Sistema de ecuaciones 3x3')\ngraf3D.set_xlabel('x')\ngraf3D.set_ylabel('y')\ngraf3D.set_zlabel('z')\ngraf3D.set_xlim(ax, bx)\ngraf3D.set_xlim(ay, by)\ngraf3D.legend()\ngraf3D.view_init(45, 45)\n# rotacion de ejes\nfor angulo in range(45, 360+45, 5 ):\n    graf3D.view_init(45, angulo)\n    plt.draw()\n    plt.pause(.001)\nplt.show()\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><em><strong>Tarea<\/strong><\/em>: Realice las modificaciones necesarias para usar el algoritmo de Gauss-Seidel. Luego compare resultados.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h4 class=\"wp-block-heading\">Revisi\u00f3n de resultados<\/h4>\n\n\n\n<p>Si se usan las ecuaciones <strong>sin pivorear y cambiar a diagonal dominante<\/strong>, como fueron presentadas en el enunciado, el algoritmo Jacobi <strong>NO converge<\/strong>, el error aumenta, y muy r\u00e1pido como para observar la espiral hacia afuera en una gr\u00e1fica.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Xi, errado\n&#091; -0.5   6.   26. ] 26.0\n&#091; 131.5  -16.5   69.5] 132.0\n&#091; 271. -984. -484.] 967.5\n&#091;-4638.5 -1407.  -7675. ] 7191.0\n&#091;-38055.5  40150.5   4092.5] 41557.5\n&#091; 118792.  262302.  395246.] 391153.5\n&#091; 2434361.5 -1226784.   1479764. ] 2315569.5\n&#091;  3591977.5 -18520288.5 -15890546.5] 17370310.5\n....<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 1Eva2011TII_T2 Sistema de Ecuaciones, diagonal dominante 1. Desarrollo anal\u00edtico Soluci\u00f3n iterativa usando el m\u00e9todo de Jacobi El sistema de ecuaciones cambia a su forma matricial AX=B y luego como matriz aumentada y realizar el pivoteo parcial por filas, buscando hacerla diagonal dominante: las ecuaciones para el algoritmo se obtienen despejando una variable diferente en [&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-2872","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\/2872","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=2872"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2872\/revisions"}],"predecessor-version":[{"id":21711,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/2872\/revisions\/21711"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=2872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=2872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=2872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}