{"id":1241,"date":"2017-11-07T11:30:28","date_gmt":"2017-11-07T16:30:28","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=1241"},"modified":"2026-04-05T19:52:02","modified_gmt":"2026-04-06T00:52:02","slug":"s1eva2007tiii_t1_an-container-refrigeradoras-y-cocinas","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s1eva10\/s1eva2007tiii_t1_an-container-refrigeradoras-y-cocinas\/","title":{"rendered":"s1Eva2007TIII_T1_AN Container: Refrigeradoras y Cocinas"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-1eva10\/1eva2007tiii_t1-container-cocinas-refrigeradoras\/\" data-type=\"post\" data-id=\"598\">1Eva2007TIII_T1 Container: Cocinas y Refrigeradoras<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>Considerando&nbsp; como&nbsp; <strong>x<\/strong> la cantidad de refrigeradoras, <strong>y<\/strong> cantidad de cocinas, las ecuaciones a plantear son:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{cases} 200 x + 100 y = 1000 \\\\ 2 x + 1.05 y = 10.4 \\end{cases} <\/span>\n\n\n\n<p>La forma matricial del ejercicio se convierte a:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{pmatrix} 200 &amp; 100 \\\\ 2 &amp; 1.05\\end{pmatrix} \\begin{pmatrix}x \\\\ y \\end{pmatrix} = \\begin{pmatrix} 1000 \\\\10.4 \\end{pmatrix}<\/span>\n\n\n\n<p>la matriz aumentada es<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{pmatrix} 200 &amp; 100 &amp; 1000\\\\ 2 &amp; 1.05 &amp; 10.4\\end{pmatrix} <\/span>\n\n\n\n<p>Para el pivoteo parcial por filas, dado que el mayor valor de la primera columna se encuentra en la diagonal, no se requiere y la matriz aumentada se mantiene igual.<\/p>\n\n\n\n<p>Para el proceso de eliminaci\u00f3n hacia adelante, se incia con el pivote=200<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> factor = \\frac{2}{200} = 0.01 <\/span>\n\n\n\n<p>que se aplica a la segunda fila<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>         &#091; 200.  100.     1000  ]\n-(2\/200)*&#091;   2.    1.05     10.4]\n_________________________________\n       = &#091;   0.     0.05     0.4]<\/code><\/pre>\n\n\n\n<p>con lo que la matriz queda:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{pmatrix} 200 &amp; 100 &amp; 1000\\\\ 0 &amp; 0.05 &amp; 0.4\\end{pmatrix} <\/span>\n\n\n\n<p>Se aplica sustituci\u00f3n hacia atr\u00e1s, desde la \u00faltima fila:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 0.05 y = 0.4<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y = \\frac{0.4}{0.05 } = 8<\/span>\n\n\n\n<p>para la primera fila:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 200 x+100(8)=1000<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 200 x=1000-100 (8) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x=\\frac{1000 - 100 (8)}{200} = 1 <\/span>\n\n\n\n<p>siendo la respuesta [1,8]<\/p>\n\n\n\n<p>Con el algoritmo se obtiene:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Matriz aumentada\n&#091;&#091; 200.    100.   1000.  ]\n &#091;   2.      1.05   10.4 ]]\nPivoteo parcial:\n  Pivoteo por filas NO requerido\nElimina hacia adelante:\n fila i: 0  pivote: 200.0\n  fila k: 1  factor: 0.01\n&#091;&#091;2.e+02 1.e+02 1.e+03]\n &#091;0.e+00 5.e-02 4.e-01]]\n fila i: 1  pivote: 0.050000000000000044\n&#091;&#091;2.e+02 1.e+02 1.e+03]\n &#091;0.e+00 5.e-02 4.e-01]]\nSustitute hacia atras:\n fila i: 1    X&#091;1]: 8.0\n fila i: 0    X&#091;0]: 1.0\nM\u00e9todo de Gauss\nsoluci\u00f3n X: \n&#091;1. 8.]\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Se actualiza el valor en A de 1.05 a 1.1, el resultado cambia a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Matriz aumentada\n&#091;&#091; 200.   100.  1000. ]\n &#091;   2.     1.1   10.4]]\nPivoteo parcial:\n  Pivoteo por filas NO requerido\nElimina hacia adelante:\n fila i: 0  pivote: 200.0\n  fila k: 1  factor: 0.01\n&#091;&#091;2.e+02 1.e+02 1.e+03]\n &#091;0.e+00 1.e-01 4.e-01]]\n fila i: 1  pivote: 0.10000000000000009\n&#091;&#091;2.e+02 1.e+02 1.e+03]\n &#091;0.e+00 1.e-01 4.e-01]]\nSustitute hacia atras:\n fila i: 1    X&#091;1]: 4.0\n fila i: 0    X&#091;0]: 3.0\nM\u00e9todo de Gauss\nsoluci\u00f3n X: \n&#091;3. 4.]\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"370\" height=\"294\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/11\/RefrigeradorayCocina01.png\" alt=\"Refrigeradora y Cocina01\" class=\"wp-image-14042\" \/><\/figure>\n\n\n\n<p><strong><em>Observaci\u00f3n<\/em><\/strong>: el peque\u00f1o cambio de volumen de la cocina no es consistente con los resultados. <\/p>\n\n\n\n<p>El asunto es que la forma de la refrigeradora o cocina no se adapta al volumen disponible, pues son objetos r\u00edgidos. Por lo que el sistema de ecuaciones estar\u00eda mal planteado.<br>Las ecuaciones tendr\u00edan sentido si esta dise\u00f1ando el mejor \"tama\u00f1o\" para que entren la mayor cantidad dentro de un container, sin embargo los tama\u00f1os de las refrigeradoras y cocinas se encuentran estandarizados.<\/p>\n\n\n\n<p>Revisamos el n\u00famero de condici\u00f3n, que resulta ser del orden de 10<sup>4<\/sup>, lo que confirma que el sistema est\u00e1 mal condicionado.<\/p>\n\n\n\n<p>Usando la el valor de 1.05<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; C = np.concatenate((A,B),axis=1)\n&gt;&gt;&gt; C\narray(&#091;&#091;  200. ,   100. ,  1000.  ],\n       &#091;    2. ,     1.05,    10.4]])\n&gt;&gt;&gt; np.linalg.cond(C)\n12926.000640466344<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 1Eva2007TIII_T1_AN Container: Refrigeradoras y Cocinas\n# M\u00e9todo de Gauss\n# Sistemas de Ecuaciones A.X=B\nimport numpy as np\n  \ndef gauss_eliminaAdelante(AB,vertabla=False,casicero = 1e-15):\n    ''' Gauss elimina hacia adelante\n    tarea: verificar t\u00e9rminos cero\n    '''\n    tamano = np.shape(AB)\n    n = tamano&#x5B;0]\n    m = tamano&#x5B;1]\n    if vertabla==True:\n        print('Elimina hacia adelante:')\n    for i in range(0,n,1):\n        pivote = AB&#x5B;i,i]\n        adelante = i+1\n        if vertabla==True:\n            print(' fila i:',i,' pivote:', pivote)\n        for k in range(adelante,n,1):\n            if (np.abs(pivote)&gt;=casicero):\n                factor = AB&#x5B;k,i]\/pivote\n                AB&#x5B;k,:] = AB&#x5B;k,:] - factor*AB&#x5B;i,:]\n                for j in range(0,m,1): # casicero revisa\n                    if abs(AB&#x5B;k,j])&lt;casicero:\n                        AB&#x5B;k,j]=0\n                if vertabla==True:\n                    print('  fila k:',k,\n                          ' factor:',factor)\n            else:\n                print('  pivote:', pivote,'en fila:',i,\n                      'genera division para cero')\n        if vertabla==True:\n            print(AB)\n    return(AB)\n  \ndef gauss_sustituyeAtras(AB,vertabla=False,casicero = 1e-15):\n    ''' Gauss sustituye hacia atras\n    '''\n    n,m = np.shape(AB)\n    # Sustituci\u00f3n hacia atras\n    if vertabla==True:\n        print('Sustitute hacia atras:')\n    X = np.zeros(n,dtype=float) \n    ultfila = n-1\n    ultcolumna = m-1\n    for i in range(ultfila,0-1,-1):\n        suma = AB&#x5B;i,ultcolumna]   # B&#x5B;i]\n        for j in range(i+1,ultcolumna,1):\n            suma = suma - AB&#x5B;i,j]*X&#x5B;j]\n        X&#x5B;i] = suma\/AB&#x5B;i,i]    # suma\/pivote\n        if vertabla==True:\n            print(' fila i:',i,\n                  '   X&#x5B;'+str(i)+']:',X&#x5B;i])\n    return(X)\n  \ndef pivoteafila(A,B,vertabla=False):\n    '''\n    Pivoteo 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,\n                      'intercambiar filas: ',i,\n                      'con', dondemax+i)\n    if vertabla==True:\n        if pivoteado==0:\n            print('  Pivoteo por filas NO requerido')\n        else:\n            print('AB:')\n            print(AB)\n    return(AB)\n  \n# PROGRAMA B\u00fasqueda de solucion  --------\n# INGRESO\nA = &#x5B;&#x5B;200, 100   ],\n     &#x5B;  2,   1.05]]\n \nB = &#x5B;1000, 10.4]\n  \n# PROCEDIMIENTO\nAB = pivoteafila(A,B,vertabla=True)\n  \nAB = gauss_eliminaAdelante(AB,vertabla=True)\n  \nX = gauss_sustituyeAtras(AB,vertabla=True)\n  \n# SALIDA\nprint('M\u00e9todo de Gauss')\nprint('soluci\u00f3n X: ')\nprint(X)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 1Eva2007TIII_T1 Container: Cocinas y Refrigeradoras literal a Considerando&nbsp; como&nbsp; x la cantidad de refrigeradoras, y cantidad de cocinas, las ecuaciones a plantear son: La forma matricial del ejercicio se convierte a: la matriz aumentada es Para el pivoteo parcial por filas, dado que el mayor valor de la primera columna se encuentra en la [&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":[44],"tags":[58,54],"class_list":["post-1241","post","type-post","status-publish","format-standard","hentry","category-mn-s1eva10","tag-ejemplos-python","tag-mnumericos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1241","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=1241"}],"version-history":[{"count":5,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1241\/revisions"}],"predecessor-version":[{"id":23808,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1241\/revisions\/23808"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}