{"id":4403,"date":"2019-11-27T08:00:23","date_gmt":"2019-11-27T13:00:23","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=4403"},"modified":"2026-02-26T11:11:04","modified_gmt":"2026-02-26T16:11:04","slug":"s1eva2019tii_t3-circuito-electrico","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s1eva20\/s1eva2019tii_t3-circuito-electrico\/","title":{"rendered":"s1Eva2019TII_T3 Circuito el\u00e9ctrico"},"content":{"rendered":"\n<p><strong>Ejercicio<\/strong>:<a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-evalua\/mn-1e20\/1eva2019tii_t3-circuito-electrico\/\" data-type=\"post\" data-id=\"4433\"> 1Eva2019TII_T3 Circuito el\u00e9ctrico<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"254\" height=\"197\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/12\/circuitoElectrico01.png\" alt=\"circuito El\u00e9ctrico con fuente de voltaje y corriente\" class=\"wp-image-14142\" \/><\/figure>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\begin{cases} 55 I_1 - 25 I_4 = -200 \\\\ -37 I_3 - 4 I_4 = -250 \\\\ -25 I_1 - 4 I_3 + 29 I_4 = 100 \\end{cases} <\/span>\n\n\n\n<p>junto al detalle que I<sub>2<\/sub>=-10<\/p>\n\n\n\n<p>Las ecuaciones del problema son:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 55 I_1 - 25 I_4 =-200<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -37 I_3 - 4 I_4 =-250<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -25 I_1 - 4 I_3 +29 I_4 =100<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_2 =-10<\/span>\n\n\n\n<p>Planteo del problema en la forma A.X=B<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091; 55.0, 0,  0, -25],\n     &#091;  0  , 0,-37,  -4],\n     &#091;-25  , 0, -4,  29],\n     &#091;  0  ,  1, 0,   0]]\n\nB = &#091;-200,-250,100,-10]<\/code><\/pre>\n\n\n\n<p>El ejercicio se puede simplificar con una matriz de 3x3 dado que una de las corrientes I<sub>2<\/sub> es conocida con valor -10, queda resolver el problema para<br>[I<sub>1<\/sub> ,I<sub>3<\/sub> ,I<sub>4<\/sub> ]<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091; 55.0,   0, -25],\n     &#091;  0  , -37,  -4],\n     &#091;-25  ,  -4,  29]]\n\nB = &#091;-200,-250,100]<\/code><\/pre>\n\n\n\n<p>conformando la matriz aumentada<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;  55.    0.  -25. -200.]\n &#091;   0.  -37.   -4. -250.]\n &#091; -25.   -4.   29.  100.]]<\/code><\/pre>\n\n\n\n<p>que se pivotea por filas para acercar a matriz diagonal dominante:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;  55.    0.  -25. -200.]\n &#091;   0.  -37.   -4. -250.]\n &#091; -25.   -4.   29.  100.]]<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Literal a<\/h2>\n\n\n\n<p>Para m\u00e9todos directos se aplica el m\u00e9todo de eliminaci\u00f3n hacia adelante.<\/p>\n\n\n\n<p>Usando el primer elemento en la diagonal se convierten en ceros los n\u00fameros debajo de la posici\u00f3n primera de la diagonal<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;  55.    0.  -25.         -200.      ]\n &#091;   0.  -37.   -4.         -250.      ]\n &#091;   0.   -4.   17.636363      9.090909]]<\/code><\/pre>\n\n\n\n<p>luego se contin\u00faa con la segunda columna:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;  55.    0.  -25.         -200.      ]\n &#091;   0.  -37.   -4.         -250.      ]\n &#091;   0.    0.   18.068796     36.117936]]<\/code><\/pre>\n\n\n\n<p>y para el m\u00e9todo de Gauss se emplea sustituci\u00f3n hacia atr\u00e1s<br>se determina el valor de I<sub>4<\/sub><\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 18.068796 I_4 = 36.11793612 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_4 =\\frac{36.11793612}{18.068796}= 1.99891216<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -37 I_3 -4 I_4 = -250 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -37 I_3= -250 + 4 I_4 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_3=\\frac{-250 + 4 I_4}{-37} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_3=\\frac{-250 + 4 (1.99891216)}{-37} = 6.54065815 <\/span>\n\n\n\n<p>y planteando se obtiene el \u00faltimo valor<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 55 I_1 +25 I_4 = -200 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> 55 I_1 = -200 -25 I_4<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_1 = \\frac{-200 -25 I_4}{55}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_1 = \\frac{-200 -25(1.99891216)}{55} = -2.7277672<\/span>\n\n\n\n<p>con lo que el vector soluci\u00f3n es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;-2.7277672   6.54065815  1.99891216]<\/code><\/pre>\n\n\n\n<p>sin embargo, para verificar la respuesta se aplica A.X=B<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>verificar que A.X = B, obteniendo nuevamente el vector B.\n&#091;-200.  -250.  100.]]<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>La norma de la matriz infinito se determina como:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> ||x|| = max\\Big[ |x_i| \\Big] <\/span>\n\n\n\n<p>considere que en el problema el t\u00e9rmino en A de magnitud mayor es 55.<br>El vector suma de filas es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091; | 55|+|   0|+|-25| ],   &#091;&#091;80],\n &#091; |  0|+| -37|+| -4| ], =  &#091;41],\n &#091; &#091;-25|+|  -4|+| 29| ]]    &#091;58]]\n\npor lo que la norma \u221e ejemplo ||A||\u221e \nes el m\u00e1ximo de suma de filas: 80<\/code><\/pre>\n\n\n\n<p>para revisar la estabilidad de la soluci\u00f3n, se observa el n\u00famero de condici\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; np.linalg.cond(A)\n4.997509004325602<\/code><\/pre>\n\n\n\n<p>En \u00e9ste caso no est\u00e1 muy alejado de 1. De resultar alejado del valor ideal de uno,&nbsp; la soluci\u00f3n se considera poco estable. Peque\u00f1os cambios en la entrada del sistema generan grandes cambios en la salida.<\/p>\n\n\n\n<p><strong>Tarea<\/strong>: Matriz de transici\u00f3n de Jacobi<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Literal c<\/h2>\n\n\n\n<p>En el m\u00e9todo de Gauss-Seidel acorde a lo indicado, se inicia con el vector cero. Como no se indica el valor de tolerancia para el error, se considera tolera = 0.0001<\/p>\n\n\n\n<p>las ecuaciones para el m\u00e9todo son:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_1 =\\frac{-200 + 25 I_4}{55} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_3 = \\frac{-250+ 4 I_4}{-37}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_4 =\\frac{100 +25 I_1 + 4 I_3}{29} <\/span>\n\n\n\n<p>Como I<sub>2<\/sub> es constante, no se usa en las iteraciones<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> I_2 =-10<\/span>\n\n\n\n<p>teniendo como resultados de las iteraciones:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Matriz aumentada\n&#091;&#091;  55.    0.  -25. -200.]\n &#091;   0.  -37.   -4. -250.]\n &#091; -25.   -4.   29.  100.]]\nPivoteo parcial:\n  Pivoteo por filas NO requerido\nIteraciones Gauss-Seidel\nitera,&#091;X]\n      diferencia,errado\n0 &#091;0. 0. 0.] 2e-05\n1 &#091;-3.6363636  6.7567568  1.2454461]\n   &#091;3.6363636 6.7567568 1.2454461] 6.756756756756757\n2 &#091;-3.0702518  6.6221139  1.7149021]\n   &#091;0.5661119 0.1346428 0.469456 ] 0.5661118513783094\n3 &#091;-2.8568627  6.5713619  1.891858 ]\n   &#091;0.2133891 0.050752  0.1769559] 0.2133891067340583\n4 &#091;-2.7764282  6.5522316  1.9585594]\n   &#091;0.0804345 0.0191304 0.0667014] 0.08043447732439457\n5 &#091;-2.7461094  6.5450206  1.9837016]\n   &#091;0.0303188 0.007211  0.0251423] 0.030318816370094925\n6 &#091;-2.7346811  6.5423025  1.9931787]\n   &#091;0.0114283 0.0027181 0.0094771] 0.011428316023939011\n7 &#091;-2.7303733  6.541278   1.996751 ]\n   &#091;0.0043078 0.0010246 0.0035723] 0.004307767346479974\n8 &#091;-2.7287495  6.5408918  1.9980975]\n   &#091;0.0016238 0.0003862 0.0013465] 0.001623761494915943\n9 &#091;-2.7281375  6.5407462  1.9986051]\n   &#091;0.0006121 0.0001456 0.0005076] 0.0006120575185017962\n10 &#091;-2.7279068  6.5406913  1.9987964]\n   &#091;2.3070778e-04 5.4871039e-05 1.9131760e-04] 0.00023070777766820427\n11 &#091;-2.7278198  6.5406707  1.9988685]\n   &#091;8.6962544e-05 2.0682983e-05 7.2114885e-05] 8.696254366213907e-05\n12 &#091;-2.727787   6.5406629  1.9988957]\n   &#091;3.2779493e-05 7.7962038e-06 2.7182845e-05] 3.277949307367578e-05\n13 &#091;-2.7277747  6.5406599  1.998906 ]\n   &#091;1.2355839e-05 2.9386860e-06 1.0246249e-05] 1.235583874370505e-05\n14 &#091;-2.72777    6.5406588  1.9989098]\n   &#091;4.6573860e-06 1.1077026e-06 3.8622013e-06] 4.6573859666665385e-06\nnumero de condici\u00f3n: 4.997509004325604\nrespuesta con Gauss-Seidel\n&#091;-2.72777    6.5406588  1.9989098]\n&gt;&gt;&gt;<\/code><\/pre>\n\n\n\n<p>con lo que el vector resultante es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>respuesta con Gauss-Seidel\n&#091;-2.72777 6.5406588 1.9989098]<\/code><\/pre>\n\n\n\n<p>que para verificar, se realiza la operaci\u00f3n A.X<br>observando que el resultado es igual a B<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;-200.00002751]\n &#091;-249.9999956 ]\n &#091; 100.0000125 ]]<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Soluci\u00f3n alterna<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>Usando la matriz de 4x4, los resultados son iguales para las corrientes<br>[I<sub>1<\/sub> ,I<sub>2<\/sub> , I<sub>3<\/sub> ,I<sub>4<\/sub> ]. Realizando la matriz aumentada,<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;  55.    0.    0.  -25. -200.]\n &#091;   0.    0.  -37.   -4. -250.]\n &#091; -25.    0.   -4.   29.  100.]\n &#091;   0.    1.    0.    0.  -10.]]<\/code><\/pre>\n\n\n\n<p>que se pivotea por filas para acercar a matriz diagonal dominante:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;  55.    0.    0.  -25. -200.]\n &#091;   0.    1.    0.    0.  -10.]\n &#091;   0.    0.  -37.   -4. -250.]\n &#091; -25.    0.   -4.   29.  100.]]<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Literal a<\/h2>\n\n\n\n<p>Para m\u00e9todos directos se aplica el m\u00e9todo de <strong>eliminaci\u00f3n hacia adelante<\/strong>.<\/p>\n\n\n\n<p>Usando el primer elemento&nbsp; en la diagonal.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;  55.     0.     0.   -25.         -200.        ]\n &#091;   0.     1.     0.     0.          -10.        ]\n &#091;   0.     0.   -37.    -4.         -250.        ]\n &#091;   0.     0.    -4.    17.63636364    9.09090909]]<\/code><\/pre>\n\n\n\n<p>para el segundo no es necesario, por debajo se encuentran valores cero.<br>Por lo que se pasa al tercer elemento de la diagonal<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;  55.     0.     0.    -25.         -200.        ]\n &#091;   0.     1.     0.      0.          -10.        ]\n &#091;   0.     0.   -37.     -4.         -250.        ]\n &#091;   0.     0.     0.     18.06879607   36.11793612]]<\/code><\/pre>\n\n\n\n<p>y para el m\u00e9todo de Gauss se emplea <strong>sustituci\u00f3n hacia atr\u00e1s<\/strong>.<br>para x<sub>4<\/sub>:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">18.06879607 x_4 = 36.11793612<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">x_4 = 1.99891216<\/span>\n\n\n\n<p>para x<sub>3<\/sub>:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">-37 x_3 -4 x_3 = -250<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">37 x_3 = 250-4 x_4 = 250-4(1.99891216)<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">x_3 = 6.54065815<\/span>\n\n\n\n<p>como ejercicio, continuar con x<sub>1<\/sub>, dado que x<sub>2<\/sub>=-10<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">55 x_1 + 25 x_4 = -200<\/span>\n\n\n\n<p>El vector soluci\u00f3n obtenido es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>el vector soluci\u00f3n X es:\n&#091;&#091; -2.7277672 ]\n &#091;-10.        ]\n &#091;  6.54065815]\n &#091;  1.99891216]]<\/code><\/pre>\n\n\n\n<p>sin embargo, para verificar la respuesta se aplica A.X=B.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;&#091;-200.]\n &#091;-250.]\n &#091; 100.]\n &#091; -10.]]<\/code><\/pre>\n\n\n\n<p>Se revisa el n\u00famero de condici\u00f3n de la matriz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; np.linalg.cond(A)\n70.21827416891405<\/code><\/pre>\n\n\n\n<p>Y para \u00e9ste caso, el n\u00famero de condici\u00f3n se encuentra alejado del valor 1, contrario a la respuesta del la primera forma de soluci\u00f3n con la matriz 3x3. De resultar alejado del valor ideal de uno, la soluci\u00f3n se considera poco estable. Peque\u00f1os cambios en la entrada del sistema generan grandes cambios en la salida.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo en Python<\/h2>\n\n\n\n<p>Presentado por partes para revisi\u00f3n:<\/p>\n\n\n\n<p>Para el m\u00e9todo de Gauss, los resultados del algoritmo se muestran como:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Matriz aumentada\n&#091;&#091;  55.    0.  -25. -200.]\n &#091;   0.  -37.   -4. -250.]\n &#091; -25.   -4.   29.  100.]]\nPivoteo parcial:\n  Pivoteo por filas NO requerido\nElimina hacia adelante:\n fila 0 pivote:  55.0\n   factor:  0.0  para fila:  1\n   factor:  -0.45454545454545453  para fila:  2\n fila 1 pivote:  -37.0\n   factor:  0.10810810810810811  para fila:  2\n fila 2 pivote:  18.06879606879607\n&#091;&#091;  55.            0.          -25.         -200.        ]\n &#091;   0.          -37.           -4.         -250.        ]\n &#091;   0.            0.           18.06879607   36.11793612]]\nsoluci\u00f3n: \n&#091;-2.7277672   6.54065815  1.99891216]<\/code><\/pre>\n\n\n\n<p>Instrucciones en Python usando las funciones creadas en la unidad:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 1Eva_IIT2019_T3 Circuito el\u00e9ctrico\n# M\u00e9todo de Gauss\n# Soluci\u00f3n a Sistemas de Ecuaciones\n# de la forma A.X=B\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, 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,'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                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    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    tamano = np.shape(AB)\n    n = tamano&#x5B;0]\n    m = tamano&#x5B;1]\n    # Sustituci\u00f3n 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 = 0\n        for j in range(i+1,ultcolumna,1):\n            suma = suma + AB&#x5B;i,j]*X&#x5B;j]\n        X&#x5B;i] = (AB&#x5B;i,ultcolumna]-suma)\/AB&#x5B;i,i]\n    return(X)\n\n# INGRESO\nA = &#x5B;&#x5B; 55.0,   0, -25],\n     &#x5B;  0  , -37,  -4],\n     &#x5B;-25  ,  -4,  29]]\n\nB = &#x5B;-200,-250,100]\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('soluci\u00f3n: ')\nprint(X)\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>Resultados con el algoritmo de Gauss Seidel<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Matriz aumentada\n&#091;&#091;  55.    0.  -25. -200.]\n &#091;   0.  -37.   -4. -250.]\n &#091; -25.   -4.   29.  100.]]\nPivoteo parcial:\n  Pivoteo por filas NO requerido\nIteraciones Gauss-Seidel\nitera,&#091;X]\n      diferencia,errado\n0 &#091;0. 0. 0.] 2e-05\n1 &#091;-3.6363636  6.7567568  1.2454461]\n   &#091;3.6363636 6.7567568 1.2454461] 6.756756756756757\n2 &#091;-3.0702518  6.6221139  1.7149021]\n   &#091;0.5661119 0.1346428 0.469456 ] 0.5661118513783094\n3 &#091;-2.8568627  6.5713619  1.891858 ]\n   &#091;0.2133891 0.050752  0.1769559] 0.2133891067340583\n4 &#091;-2.7764282  6.5522316  1.9585594]\n   &#091;0.0804345 0.0191304 0.0667014] 0.08043447732439457\n5 &#091;-2.7461094  6.5450206  1.9837016]\n   &#091;0.0303188 0.007211  0.0251423] 0.030318816370094925\n6 &#091;-2.7346811  6.5423025  1.9931787]\n   &#091;0.0114283 0.0027181 0.0094771] 0.011428316023939011\n7 &#091;-2.7303733  6.541278   1.996751 ]\n   &#091;0.0043078 0.0010246 0.0035723] 0.004307767346479974\n8 &#091;-2.7287495  6.5408918  1.9980975]\n   &#091;0.0016238 0.0003862 0.0013465] 0.001623761494915943\n9 &#091;-2.7281375  6.5407462  1.9986051]\n   &#091;0.0006121 0.0001456 0.0005076] 0.0006120575185017962\n10 &#091;-2.7279068  6.5406913  1.9987964]\n   &#091;2.3070778e-04 5.4871039e-05 1.9131760e-04] 0.00023070777766820427\n11 &#091;-2.7278198  6.5406707  1.9988685]\n   &#091;8.6962544e-05 2.0682983e-05 7.2114885e-05] 8.696254366213907e-05\n12 &#091;-2.727787   6.5406629  1.9988957]\n   &#091;3.2779493e-05 7.7962038e-06 2.7182845e-05] 3.277949307367578e-05\n13 &#091;-2.7277747  6.5406599  1.998906 ]\n   &#091;1.2355839e-05 2.9386860e-06 1.0246249e-05] 1.235583874370505e-05\n14 &#091;-2.72777    6.5406588  1.9989098]\n   &#091;4.6573860e-06 1.1077026e-06 3.8622013e-06] 4.6573859666665385e-06\nnumero de condici\u00f3n: 4.997509004325604\nrespuesta con Gauss-Seidel\n&#091;-2.72777    6.5406588  1.9989098]\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_IIT2019_T3 Circuito el\u00e9ctrico\n# Algoritmo Gauss-Seidel\n# soluci\u00f3n de matrices\n# m\u00e9todos iterativos\n# Referencia: Chapra 11.2, p.310,\n#      Rodriguez 5.2 p.162\nimport numpy as np\n\ndef gauss_seidel(A,B,X0,tolera, iteramax=100,\n                 vertabla=False, precision=4):\n    ''' M\u00e9todo de Gauss Seidel, 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 = 2*tolera*np.ones(n, dtype=float)\n    errado = np.max(diferencia)\n    X = np.copy(X0)\n\n    itera = 0\n    if vertabla==True:\n        print('Iteraciones Gauss-Seidel')\n        print('itera,&#x5B;X]')\n        print('      diferencia,errado')\n        print(itera, X, errado)\n        np.set_printoptions(precision)\n    while (errado&gt;tolera and itera&lt;iteramax):\n        for i in range(0,n,1):\n            xi = B&#x5B;i]\n            for j in range(0,m,1):\n                if (i!=j):\n                    xi = xi-A&#x5B;i,j]*X&#x5B;j]\n            xi = xi\/A&#x5B;i,i]\n            diferencia&#x5B;i] = np.abs(xi-X&#x5B;i])\n            X&#x5B;i] = xi\n        errado = np.max(diferencia)\n        itera = itera + 1\n        if vertabla==True:\n            print(itera, X)\n            print('  ', diferencia, errado)\n    # No converge\n    if (itera&gt;iteramax):\n        X=itera\n        print('iteramax superado, No converge')\n    return(X)\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# INGRESO\nA = &#x5B;&#x5B; 55.0,   0, -25],\n     &#x5B;  0  , -37,  -4],\n     &#x5B;-25  ,  -4,  29]]\n\nB = &#x5B;-200,-250,100]\n\nX0  = &#x5B;0.,0.,0.]\n\ntolera = 0.00001\niteramax = 100\nverdecimal = 7\n\n# PROCEDIMIENTO\n# numero de condicion\nncond = np.linalg.cond(A)\n\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\nrespuesta = gauss_seidel(A,B,X0, tolera,\n                         vertabla=True, precision=verdecimal)\n\n# SALIDA\nprint('numero de condici\u00f3n:', ncond)\nprint('respuesta con Gauss-Seidel')\nprint(respuesta)\n<\/pre><\/div>\n\n\n<p>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 1Eva2019TII_T3 Circuito el\u00e9ctrico junto al detalle que I2=-10 Las ecuaciones del problema son: Planteo del problema en la forma A.X=B El ejercicio se puede simplificar con una matriz de 3x3 dado que una de las corrientes I2 es conocida con valor -10, queda resolver el problema para[I1 ,I3 ,I4 ] conformando la matriz aumentada [&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-4403","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\/4403","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=4403"}],"version-history":[{"count":5,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/4403\/revisions"}],"predecessor-version":[{"id":21803,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/4403\/revisions\/21803"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=4403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=4403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=4403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}