{"id":8977,"date":"2023-07-05T07:20:05","date_gmt":"2023-07-05T12:20:05","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/analisisnumerico\/?p=8977"},"modified":"2026-04-05T19:59:34","modified_gmt":"2026-04-06T00:59:34","slug":"s1eva2023paoi_t2-productos-en-combo-por-subida-de-precio","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s1eva30\/s1eva2023paoi_t2-productos-en-combo-por-subida-de-precio\/","title":{"rendered":"s1Eva2023PAOI_T2 Productos en combo por subida de precio"},"content":{"rendered":"\n<p><strong>Ejercicio<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-1eva30\/1eva2023paoi_t2-productos-en-combo-por-subida-de-precio\/\" data-type=\"post\" data-id=\"8950\">1Eva2023PAOI_T2 Productos en combo por subida de precio<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>Para el ejercicio solo es posible plantear tres ecuaciones, se muestran datos solo para tres semanas. Se tienen 4 inc\u00f3gnitas, por lo que tendr\u00eda infinitas soluciones y no se podr\u00eda resolver.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 500 a + 600 b + 400 c + 90 d = 1660 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 800 a + 450 b + 300 c + 100 d = 1825 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 400 a + 300 b + 600 c + 80 d = 1430 <\/span>\n\n\n\n<p>Sin embargo desde el punto de vista pr\u00e1ctico se puede usar una variable libre, considerando algunos criterios como:<\/p>\n\n\n\n<p>- que en la nota se da el precio para la docena de huevos a 2.5 USD<br>- que la variable para huevos es la de menor cantidad se puede incurrir en un menor error si el precio ha variado en los \u00faltimos d\u00edas respecto a lo que se podr\u00eda haber tenido como referencia.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 500 a + 600 b + 400 c = 1660 - 90 d<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 800 a + 450 b + 300 c = 1825 - 100 d<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 400 a + 300 b + 600 c = 1430 - 80 d<\/span>\n\n\n\n<p>que al sustituir con d = 2.5<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 500 a + 600 b + 400 c = 1660 - 90 (2.5) =1435<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 800 a + 450 b + 300 c = 1825 - 100 (2.5) = 1575<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 400 a + 300 b + 600 c = 1430 - 80 (2.5) = 1230<\/span>\n\n\n\n<p>Nota: el estudiante puede realizar una justificaci\u00f3n diferente para el uso de otra variable libre.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>La forma matricial del sistema de ecuaciones se convierte a:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{pmatrix} 500 &amp; 600 &amp; 400 &amp; \\Big| &amp; 1435 \\\\ 800 &amp; 450 &amp; 300 &amp; \\Big| &amp; 1575 \\\\ 400 &amp; 300 &amp; 600 &amp;\\Big| &amp; 1230 \\end{pmatrix} <\/span>\n\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>pivoteando la matriz aumentada, se encuentra que para la primera columna se pivotean la fila 1 y 2, por ser 800 el valor de mayor magnitud:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{pmatrix} 800 &amp; 450 &amp; 300 &amp; \\Big| &amp; 1575 \\\\ 500 &amp; 600 &amp; 400 &amp; \\Big| &amp; 1435 \\\\ 400 &amp; 300 &amp; 600 &amp;\\Big| &amp; 1230 \\end{pmatrix} <\/span>\n\n\n\n<p>luego, observando la segunda columna desde el elemento de la diagonal hacia abajo, se observa que el mayor valor en magnitud ya se encuentra en la diagonal. No se requieren intercambios de fila para la tercera columna.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal d<\/h2>\n\n\n\n<p>Para el m\u00e9todo iterativo de Gauss-Seidel se requiere el vector inicial, tomando las observaciones de la nota. Se da un precio de 50 USD por un quintal m\u00e9trico de 100Kg, por lo que se estima que el precio por kilogramo ronda 50\/100= 0.5 USD. Se indica adem\u00e1s que los dem\u00e1s valores se encuentran en el mismo orden de magnitud, por lo que se tiene como vector inicial<\/p>\n\n\n\n<p class=\"has-text-align-center\">X<sub>0<\/sub> = [0.5, 0.5, 0.5]<\/p>\n\n\n\n<p>Para un m\u00e9todo iterativo se despejan las ecuaciones como:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = \\frac {1575 - 450 b - 300 c}{800} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> b = \\frac {1435 -500 a - 400 c}{600} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = \\frac {1230 - 400 a - 300 b}{600} <\/span>\n\n\n\n<p>Para el c\u00e1lculo del error se considera que se busca un precio, lo regular es considerar el centavo, es decir una tolerancia 10<sup>-2<\/sup>. Para el desarrollo se considera usar cuatro decimales por si se considera truncar o redondear.<\/p>\n\n\n\n<p>itera = 0<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = \\frac {1575 - 450 (0.5) - 300 (0.5)}{800} = 1.5 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> b = \\frac {1435 -500(1.5) - 400 (0.5)}{600} = 0.8083<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = \\frac {1230 - 400(1.5) - 300 (0.8083)}{600} =0.6458<\/span>\n\n\n\n<p>errado = max|[1.5-0.5, 0.8083-0.5, 0.6458-0.5]|<br>errado = max|[1, 0.3083, 0.1458]| = 1<\/p>\n\n\n\n<p>itera = 1<\/p>\n\n\n\n<p class=\"has-text-align-center\">X<sub>1<\/sub> = [1.5, 0.8083, 0.6458]<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = \\frac {1575 - 450 (0.8083) - 300 (0.6458)}{800} = 1.2719 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> b = \\frac {1435 -500(1.2719) - 400 (0.6458)}{600} = 0.9012 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = \\frac {1230 - 400 (1.2719) - 300 (0.9012)}{600} = 0.7514 <\/span>\n\n\n\n<p>errado = max|[1.2719-1.5, 0.9012-0.8083, 0.7514-0.6458]|<br>errado = max|[-0.2281, 0.0929, 0.1056]| = 0.2281<\/p>\n\n\n\n<p>el error disminuye entre iteraciones.<\/p>\n\n\n\n<p>itera = 2<\/p>\n\n\n\n<p class=\"has-text-align-center\">X<sub>2<\/sub> = [1.2719 , 0.9012, 0.7514]<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = \\frac {1575 - 450 (0.9012) - 300 (0.7514)}{800} = 1.1805 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> b = \\frac {1435 -500 (1.1805) - 400 (0.7514)}{600} = 0.9069 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = \\frac {1230 - 400 (1.1805) - 300 (0.9069)}{600} = 0.8095<\/span>\n\n\n\n<p>errado = max|[ 1.1805-1.2719 , 0.9069-0.9012, 0.8095-0.7514]|<br>errado = max|[-0.0914, 0.0057, 0.1056]| = 0.1056<\/p>\n\n\n\n<p>el error disminuye entre iteraciones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal e<\/h2>\n\n\n\n<p>Si el error entre iteraciones disminuye, se considera que el m\u00e9todo converge.<\/p>\n\n\n\n<p>usando el algoritmo M\u00e9todo de Gauss-Seidel con Python, se tiene como resultado en 13 iteraciones:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;1.5        0.80833333 0.64583333] 1.0\n&#091;1.271875   0.90121528 0.75147569] 0.2281249999999999\n&#091;1.18001302 0.90733869 0.80965531] 0.09186197916666661\n&#091;1.15475125 0.88960375 0.83536396] 0.025708648304880177\n&#091;1.1550864  0.87218536 0.84384972] 0.01741839593330019\n&#091;1.16170209 0.86101511 0.84502438] 0.011170246538965367\n&#091;1.16754486 0.85536303 0.84395525] 0.005842764350612484\n&#091;1.17112508 0.85309227 0.84270381] 0.0035802211655899807\n&#091;1.17287167 0.85247107 0.84185002] 0.0017465903731879173\n&#091;1.17354127 0.85248226 0.84139802] 0.0006695985845832642\n&#091;1.17370447 0.85264759 0.84120656] 0.00019146597344232852\n&#091;1.17368327 0.8527929  0.84114804] 0.00014530950399282982\n&#091;1.17362348 0.85288174 0.84114348] 8.884049018109685e-05\nrespuesta X: \n&#091;&#091;1.17362348]\n &#091;0.85288174]\n &#091;0.84114348]]\nverificar A.X=B: \n&#091;&#091;1575.03861029]\n &#091;1434.99817609]\n &#091;1230.        ]]\niteraciones 13\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Algoritmo en Python<\/h3>\n\n\n\n<p>Se debe recordar que las matrices y vectores deben ser tipo real (float) .<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# M\u00e9todo de Gauss-Seidel\n# soluci\u00f3n de sistemas de ecuaciones\n# por m\u00e9todos iterativos\n\nimport numpy as np\n\n# INGRESO\nA = np.array(&#x5B;&#x5B;800, 450, 300],\n              &#x5B;500, 600, 400],\n              &#x5B;400, 300, 600]], dtype=float)\n\nB = np.array(&#x5B;1575, 1435,1230], dtype=float)\n\nX0  = np.array(&#x5B;0.5,0.5,0.5])\n\ntolera = 0.0001\niteramax = 100\n\n# PROCEDIMIENTO\n\n# Gauss-Seidel\ntamano = np.shape(A)\nn = tamano&#x5B;0]\nm = tamano&#x5B;1]\n#  valores iniciales\nX = np.copy(X0)\ndiferencia = np.ones(n, dtype=float)\nerrado = 2*tolera\n\nitera = 0\nwhile not(errado&lt;=tolera or itera&gt;iteramax):\n    # por fila\n    for i in range(0,n,1):\n        # por columna\n        suma = 0 \n        for j in range(0,m,1):\n            # excepto diagonal de A\n            if (i!=j): \n                suma = suma-A&#x5B;i,j]*X&#x5B;j]\n        \n        nuevo = (B&#x5B;i]+suma)\/A&#x5B;i,i]\n        diferencia&#x5B;i] = np.abs(nuevo-X&#x5B;i])\n        X&#x5B;i] = nuevo\n    errado = np.max(diferencia)\n    print(X,errado)\n    itera = itera + 1\n\n# Respuesta X en columna\nX = np.transpose(&#x5B;X])\n\n# revisa si NO converge\nif (itera&gt;iteramax):\n    X=0\n# revisa respuesta\nverifica = np.dot(A,X)\n\n# SALIDA\nprint('respuesta X: ')\nprint(X)\nprint('verificar A.X=B: ')\nprint(verifica)\nprint('iteraciones',itera)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 1Eva2023PAOI_T2 Productos en combo por subida de precio literal a Para el ejercicio solo es posible plantear tres ecuaciones, se muestran datos solo para tres semanas. Se tienen 4 inc\u00f3gnitas, por lo que tendr\u00eda infinitas soluciones y no se podr\u00eda resolver. Sin embargo desde el punto de vista pr\u00e1ctico se puede usar una variable [&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-8977","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\/8977","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=8977"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8977\/revisions"}],"predecessor-version":[{"id":23829,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8977\/revisions\/23829"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=8977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=8977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=8977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}