{"id":3628,"date":"2017-11-11T06:40:25","date_gmt":"2017-11-11T11:40:25","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=3628"},"modified":"2026-02-17T05:25:29","modified_gmt":"2026-02-17T10:25:29","slug":"s1eva2011ti_t3_mn-precios-unitarios-en-factura-k","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s1eva20\/s1eva2011ti_t3_mn-precios-unitarios-en-factura-k\/","title":{"rendered":"s1Eva2011TI_T3_MN Precios unitarios en factura, k"},"content":{"rendered":"\n<p><em><strong>Ejercicio<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-evalua\/mn-1e15\/1eva2011ti_t3_mn-precios-unitarios-enfacturak\/\" data-type=\"post\" data-id=\"402\">1Eva2011TI_T3_MN Precios unitarios en factura, k<\/a><\/p>\n\n\n\n<p>Las ecuaciones basadas en las sumas de <\/p>\n\n\n\n<p>(cantidad)(preciounitario )<\/p>\n\n\n\n<p>representan el valor pagado en cada factura.<\/p>\n\n\n\n<p>Siendo X<sub>i<\/sub> el precio unitario de cada material:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 2x_1 + 5x_2 + 4x_3 = 35 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 3x_1 + 9x_2 + 8x_3 = k <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 5x_1 + 3x_2 + x_3 = 17 <\/span>\n\n\n\n<p>se escriben en la forma matricial Ax=B<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 2 &amp;&amp; 5 &amp;&amp; 4 \\\\ 3 &amp;&amp; 9 &amp;&amp; 8 \\\\ 5 &amp;&amp; 3 &amp;&amp; 1 \\end{bmatrix}.\\begin{bmatrix} x_1 \\\\ x_2 \\\\ x_3 \\end{bmatrix}=\\begin{bmatrix} 35 \\\\ k \\\\ 17 \\end{bmatrix}<\/span>\n\n\n\n<p>luego se escribe la matriz aumentada:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 2 &amp;&amp; 5 &amp;&amp; 4 &amp;&amp; 35\\\\ 3 &amp;&amp; 9 &amp;&amp; 8 &amp;&amp; k\\\\ 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17\\end{bmatrix}<\/span>\n\n\n\n<p>se pivotea por filas buscando tener una matriz diagonal dominante,<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17 \\\\ 3 &amp;&amp; 9 &amp;&amp; 8 &amp;&amp; k\\\\ 2 &amp;&amp; 5 &amp;&amp; 4 &amp;&amp; 35\\\\\\end{bmatrix}<\/span>\n\n\n\n<p>Luego se usa el procedimiento de eliminaci\u00f3n hacia adelante,<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17 \\\\ 3-5\\frac{3}{5} &amp;&amp; 9-3\\frac{3}{5} &amp;&amp; 8-1\\frac{3}{5} &amp;&amp; k-17\\frac{3}{5} \\\\ 2-5\\frac{2}{5} &amp;&amp; 5-3\\frac{2}{5} &amp;&amp; 4-1\\frac{2}{5} &amp;&amp; 35-17\\frac{2}{5} \\end{bmatrix}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17 \\\\ 0 &amp;&amp; \\frac{36}{5} &amp;&amp; \\frac{37}{5} &amp;&amp; k-\\frac{51}{5} \\\\ 0 &amp;&amp; \\frac{19}{5} &amp;&amp; \\frac{18}{5} &amp;&amp; \\frac{141}{5} \\end{bmatrix}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17 \\\\ 0 &amp;&amp; 36 &amp;&amp; 37 &amp;&amp; 5k-51 \\\\ 0 &amp;&amp; 19 &amp;&amp; 18 &amp;&amp; 141 \\end{bmatrix}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17 \\\\ 0 &amp;&amp; 36 &amp;&amp; 37 &amp;&amp; 5k-51 \\\\ 0 &amp;&amp; 19-36\\frac{19}{36} &amp;&amp; 18-37\\frac{19}{36} &amp;&amp; 141-(5k-51)\\frac{19}{36} \\end{bmatrix}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17 \\\\ 0 &amp;&amp; 36 &amp;&amp; 37 &amp;&amp; 5k-51 \\\\ 0 &amp;&amp; 0 &amp;&amp; \\frac{-55}{36} &amp;&amp; \\frac{6045-5k}{36} \\end{bmatrix}<\/span>\n\n\n\n<p>multiplicando la \u00faltima fila por 36,<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17 \\\\ 0 &amp;&amp; 36 &amp;&amp; 37 &amp;&amp; 5k-51 \\\\ 0 &amp;&amp; 0 &amp;&amp; -55 &amp;&amp; 6045-5k \\end{bmatrix}<\/span>\n\n\n\n<p>con lo que se pueden obtener cada precio unitario en funci\u00f3n de k.<br>Como variante, se continua siguiendo el procedimiento de Gauss, dejando como tarea el uso de Gauss-Jordan<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -55x_3 = 6045-5k <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_3 = -\\frac{6045-5k}{55} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 36 x_2 + 37 x_3 = 5k-51 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_2 = \\frac{1}{36}(5k-51 - 37 x_3)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_2 = \\frac{1}{36} \\Big( 5k-51 - 37 \\big(-\\frac{6045-5k}{55}\\big) \\Big)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 5x_1 + 3 x_2 +x_3 = 17 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_1 = \\frac{1}{5} \\Big[ 17 - 3 x_2 - x_3 \\Big] <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_1 = \\frac{1}{5} \\Big[17-3\\frac{1}{36} \\Big( 5k-21 - 37 \\big(-\\frac{6045-5k}{55}\\big) \\Big) - \\Big( -\\frac{6045-5k}{55} \\Big) \\Big] <\/span>\n\n\n\n<p>para luego simplificar las expresiones (tarea).<\/p>\n\n\n\n<p>En el literal c se indica que el valor de k es 65, con lo que se requiere sustituir en la soluci\u00f3n el valor de K para encontrar los precios unitarios.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{bmatrix} 5 &amp;&amp; 3 &amp;&amp; 1 &amp;&amp; 17 \\\\ 3 &amp;&amp; 9 &amp;&amp; 8 &amp;&amp; 65\\\\ 2 &amp;&amp; 5 &amp;&amp; 4 &amp;&amp; 35\\\\\\end{bmatrix}<\/span>\n\n\n\n<p>Se encuentra que:<\/p>\n\n\n\n<p>el vector soluci\u00f3n X es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;-0.18181818]\n &#091; 5.18181818]\n &#091; 2.36363636]]<\/code><\/pre>\n\n\n\n<p>Lo que muestra que debe existir un error en el planteamiento del enunciado, considerando que los precios NO deber\u00edan ser negativos como sucede con el primer precio unitario de la respuesta.<\/p>\n\n\n\n<p>que es lo que suponemos ser trata de corregir en el literal d, al indicar que se cambie en la matriz el valor de 5 por 5.1. Los resultados en \u00e9ste caso son m\u00e1s coherentes con el enunciado. Todas las soluciones son positivas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = np.array(&#091;&#091; 5.1, 3  , 1],\n              &#091; 3. , 9  , 8],\n              &#091; 2. , 5.1, 4]])\nB1 = np.array(&#091; 17, 65, 35])\n\nel vector soluci\u00f3n X es:\n&#091;&#091;0.33596838]\n &#091;3.88669302]\n &#091;3.62648221]]\n<\/code><\/pre>\n\n\n\n<p>El error relativo de los precios encontrados entre las ecuaciones planteadas es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>diferencia = &#091;0.335968-0.181818,\n              3.886693-5.181818, \n              3.626482-2.363636]\n           = &#091;0.154150, -1.295125, 1.262845]\nerror(dolares) = max|diferencia| = 1.295125\nPor las magnitudes de los precios, el error se aprecia\nusando el error relativo referenciado \nal mayor valor de la nueva soluci\u00f3n\nerror relativo = 1.295125\/3.886693 = 0.333220\nes decir de aproximadamente 33%<\/code><\/pre>\n\n\n\n<p>Para revisar otra causa del error se analiza el n\u00famero de condici\u00f3n de la matriz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; A\narray(&#091;&#091;5.1, 3. , 1. ],\n       &#091;3. , 9. , 8. ],\n       &#091;2. , 5.1, 4. ]])\n&gt;&gt;&gt; np.linalg.cond(A)\n60.28297696795716<\/code><\/pre>\n\n\n\n<p>El n\u00famero de condici\u00f3n resulta lejano a 1, por lo que para \u00e9ste problema:<\/p>\n\n\n\n<p>peque\u00f1os cambios en la matriz de entrada producen grandes cambios en los resultados.<\/p>\n\n\n\n<p>por ejemplo: un 0.1\/5= 0.02 que es un 2% de variaci\u00f3n en la entrada produce un cambio del 33% en el resultado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\n\n\n\n<p>Resultados del algoritmo<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Matriz aumentada\n&#091;&#091; 2.  5.  4. 35.]\n &#091; 3.  9.  8. 65.]\n &#091; 5.  3.  1. 17.]]\nPivoteo parcial:\n  1 intercambiar filas:  0 y 2\n&#091;&#091; 5.  3.  1. 17.]\n &#091; 3.  9.  8. 65.]\n &#091; 2.  5.  4. 35.]]\nElimina hacia adelante:\n fila 0 pivote:  5.0\n   factor:  0.6  para fila:  1\n   factor:  0.4  para fila:  2\n fila 1 pivote:  7.2\n   factor:  0.5277777777777778  para fila:  2\n fila 2 pivote:  -0.3055555555555558\n&#091;&#091; 5.00000000e+00  3.00000000e+00  1.00000000e+00  1.70000000e+01]\n &#091; 0.00000000e+00  7.20000000e+00  7.40000000e+00  5.48000000e+01]\n &#091; 0.00000000e+00 -4.44089210e-16 -3.05555556e-01 -7.22222222e-01]]\nElimina hacia Atras:\n fila 2 pivote:  -0.3055555555555558\n   factor:  -24.2181818181818  para fila:  1\n   factor:  -3.2727272727272703  para fila:  0\n fila 1 pivote:  7.1999999999999895\n   factor:  0.4166666666666671  para fila:  0\n fila 0 pivote:  5.0\n&#091;&#091; 1.00000000e+00  0.00000000e+00  0.00000000e+00 -1.81818182e-01]\n &#091; 0.00000000e+00  1.00000000e+00  0.00000000e+00  5.18181818e+00]\n &#091;-0.00000000e+00  1.45338287e-15  1.00000000e+00  2.36363636e+00]]\nsoluci\u00f3n X: \n&#091;-0.18181818  5.18181818  2.36363636]\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>Algoritmo en Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 1Eva_IT2011_T3_MN Precios unitarios en factura, k\n# M\u00e9todo de Gauss-Jordan\n# Soluci\u00f3n a Sistemas de Ecuaciones\n# de la forma A.X=B\n\nimport numpy as np\n\ndef pivoteafila(A,B,vertabla=False):\n    '''\n    Pivotea parcial por filas\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\ndef gauss_eliminaAdelante(AB, vertabla=False,lu=False,casicero = 1e-15):\n    ''' Gauss elimina hacia adelante, a partir de,\n    matriz aumentada y pivoteada.\n    Para respuesta en forma A=L.U usar lu=True entrega&#x5B;AB,L,U]\n    '''\n    tamano = np.shape(AB)\n    n = tamano&#x5B;0]\n    m = tamano&#x5B;1]\n    L = np.identity(n,dtype=float) # Inicializa L\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,'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\n                L&#x5B;k,i] = factor # llena L\n                \n                if vertabla==True:\n                    print('   factor: ',factor,' para fila: ',k)\n            else:\n                print('  pivote:', pivote,'en fila:',i,\n                      'genera division para cero')\n    respuesta = AB\n    if vertabla==True:\n        print(AB)\n    if lu==True:\n        U = AB&#x5B;:,:n-1]\n        respuesta = &#x5B;AB,L,U]\n    return(respuesta)\n\ndef gauss_eliminaAtras(AB, vertabla=False, precision=5, casicero = 1e-15):\n    ''' Gauss-Jordan elimina hacia atras\n    Requiere la matriz triangular inferior\n    Tarea: Verificar que sea triangular inferior\n    '''\n    tamano = np.shape(AB)\n    n = tamano&#x5B;0]\n    m = tamano&#x5B;1]\n    \n    ultfila = n-1\n    ultcolumna = m-1\n    if vertabla==True:\n        print('Elimina hacia Atras:')\n        \n    for i in range(ultfila,0-1,-1):\n        pivote = AB&#x5B;i,i]\n        atras = i-1  # arriba de la fila i\n        if vertabla==True:\n            print(' fila',i,'pivote: ', pivote)\n            \n        for k in range(atras,0-1,-1):\n            if (np.abs(AB&#x5B;k,i])&gt;=casicero):\n                factor = AB&#x5B;k,i]\/pivote\n                AB&#x5B;k,:] = AB&#x5B;k,:] - factor*AB&#x5B;i,:]\n                \n                if vertabla==True:\n                    print('   factor: ',factor,' para fila: ',k)\n            else:\n                print('  pivote:', pivote,'en fila:',i,\n                      'genera division para cero')\n \n        AB&#x5B;i,:] = AB&#x5B;i,:]\/AB&#x5B;i,i] # diagonal a unos\n    X = np.copy(AB&#x5B;:,ultcolumna])\n    \n    if vertabla==True:\n        print(AB)\n    return(X)\n\n# PROGRAMA ------------------------\n# INGRESO\nA = np.array(&#x5B;&#x5B;2,5,4],\n              &#x5B;3,9,8],\n              &#x5B;5,3,1]])\n\nB = np.array(&#x5B;&#x5B;35],\n              &#x5B;65],\n              &#x5B;17]])\n\n# PROCEDIMIENTO\nAB = pivoteafila(A,B,vertabla=True)\n\nAB = gauss_eliminaAdelante(AB,vertabla=True)\n\nX = gauss_eliminaAtras(AB,vertabla=True)\n\n# SALIDA\nprint('soluci\u00f3n X: ')\nprint(X)\n<\/pre><\/div>\n\n\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 1Eva2011TI_T3_MN Precios unitarios en factura, k Las ecuaciones basadas en las sumas de (cantidad)(preciounitario ) representan el valor pagado en cada factura. Siendo Xi el precio unitario de cada material: se escriben en la forma matricial Ax=B luego se escribe la matriz aumentada: se pivotea por filas buscando tener una matriz diagonal dominante, Luego [&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-3628","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\/3628","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=3628"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/3628\/revisions"}],"predecessor-version":[{"id":21709,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/3628\/revisions\/21709"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=3628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=3628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=3628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}