{"id":1230,"date":"2017-06-12T09:15:23","date_gmt":"2017-06-12T14:15:23","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=1230"},"modified":"2026-02-15T06:12:47","modified_gmt":"2026-02-15T11:12:47","slug":"metodo-gauss-determinante","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u03\/metodo-gauss-determinante\/","title":{"rendered":"3.9.1 M\u00e9todo de Gauss - determinante de matriz con Python"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Determinante<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><br><a name=\"concepto\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"concepto\">1. Determinante de matriz<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Rodr\u00edguez 4.3.9 p129, Burden 6.4 p296, Chapra 9.1.2 p250.<\/p>\n\n\n\n<p>El determinante de una matriz cuadrada triangular superior tambi\u00e9n puede calcularse como el producto de los coeficientes de la diagonal principal, considerando el n\u00famero de cambios de fila del pivoteo <strong>k<\/strong>.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> det(A) = (-1)^k \\prod_{i=1}^n a_{i,i} <\/span>\n\n\n\n<p>Si observamos que en las secciones anteriores se tiene desarrollado los algoritmos&nbsp; para obtener la matriz triangular superior en el m\u00e9todo de Gauss, se usan como punto de partida para obtener los resultados del c\u00e1lculo del determinante.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Determinante<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><br><a name=\"concepto\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ejercicio\">2. Ejercicio<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>:&nbsp;1Eva_IIT2010_T2 Sistema ecuaciones, X0 = unos,&nbsp;Chapra Ejemplo 9.12 p277<\/p>\n\n\n\n<p>Calcular el <strong>determinante<\/strong> de la matriz <strong>A<\/strong> del sistema A.X=B dado por<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> A= \\begin{pmatrix} 0.4 &amp; 1.1 &amp; 3.1 \\\\ 4 &amp; 0.15 &amp; 0.25 \\\\2 &amp; 5.6 &amp; 3.1 \\end{pmatrix}<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> B= [7.5, 4.45, 0.1] <\/span>\n\n\n\n<p>El&nbsp; algoritmo para ejercicio se convierte en una extensi\u00f3n de los algoritmos anteriores.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = &#091;&#091;0.4, 1.1 ,  3.1],\n     &#091;4.0, 0.15, 0.25],\n     &#091;2.0, 5.6 , 3.1]]\nB = &#091;7.5, 4.45, 0.1]<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Determinante<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><br><a name=\"concepto\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmo\">3. Algoritmo en Python<\/h2>\n\n\n\n<p>El algoritmo parte de lo realizado en m\u00e9todo de Gauss, indicando que la matriz a procesar es solamente A. Se mantienen los procedimientos de <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u03\/pivoteo-parcial-filas\/\" data-type=\"post\" data-id=\"1226\">pivoteo parcial por filas<\/a> y <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-unidades\/mn-u03\/metodo-gauss\/#eliminaadelante\" data-type=\"post\" data-id=\"1212\">eliminaci\u00f3n hacia adelante<\/a>.<\/p>\n\n\n\n<p>Para contar el n\u00famero de cambios de filas, se a\u00f1ade un contador de&nbsp; <strong><code>pivoteado<\/code><\/strong> dentro del condicional para intercambio de filas.<\/p>\n\n\n\n<p>Para el resultado del operador <strong>multiplica<\/strong>ci\u00f3n, se usan todas las casillas de la diagonal al acumular las <strong>multiplica<\/strong>ciones.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Determinante de una matriz A\n# convirtiendo a diagonal superior \nimport numpy as np\n\n# INGRESO\nA = &#x5B;&#x5B;0.4, 1.1 ,  3.1],\n     &#x5B;4.0, 0.15, 0.25],\n     &#x5B;2.0, 5.6 , 3.1]]\nB = &#x5B;7.5, 4.45, 0.1]\n\n# PROCEDIMIENTO\n# Matrices como arreglo, numeros reales\nA = np.array(A,dtype=float)\nB = np.array(B,dtype=float)\n\n# Matriz aumentada AB\nB_columna = np.transpose(&#x5B;B])\nAB  = np.concatenate((A,B_columna),axis=1)\nAB0 = np.copy(AB) # copia de AB\n\n# Pivoteo parcial por filas\ntamano = np.shape(AB)\nn = tamano&#x5B;0]\nm = tamano&#x5B;1]\n\n# Para cada fila en AB\npivoteado = 0 # contador para cambio fila\n\nfor i in range(0,n-1,1):\n    # columna desde diagonal i en adelante\n    columna = abs(AB&#x5B;i:,i])\n    dondemax = np.argmax(columna)\n    \n    if (dondemax !=0): # NO en diagonal\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 # cuenta cambio fila\n        \n# Actualiza A y B pivoteado\nAB1 = np.copy(AB)\n\n# eliminaci\u00f3n hacia adelante\nfor i in range(0,n-1,1):\n    pivote   = AB&#x5B;i,i]\n    adelante = i + 1\n    for k in range(adelante,n,1):\n        factor  = AB&#x5B;k,i]\/pivote\n        AB&#x5B;k,:] = AB&#x5B;k,:] - AB&#x5B;i,:]*factor\n\n# calcula determinante\nmultiplica = 1\nfor i in range(0,n,1):\n    multiplica = multiplica*AB&#x5B;i,i]\ndeterminante = ((-1)**pivoteado)*multiplica\n\n# SALIDA\nprint('Pivoteo parcial por filas')\nprint(AB1)\nprint('Cambios de fila, pivoteado: ',pivoteado)\nprint('eliminaci\u00f3n hacia adelante')\nprint(AB)\nprint('determinante: ')\nprint(determinante)\n<\/pre><\/div>\n\n\n<p>Se aplica la operaci\u00f3n de la f\u00f3rmula planteada para el m\u00e9todo, y se presenta el resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>Pivoteo parcial por filas\n&#091;&#091;4.   0.15 0.25 4.45]\n &#091;2.   5.6  3.1  0.1 ]\n &#091;0.4  1.1  3.1  7.5 ]]\nCambios de fila, pivoteado:  2\neliminaci\u00f3n hacia adelante\n&#091;&#091; 4.          0.15        0.25        4.45      ]\n &#091; 0.          5.525       2.975      -2.125     ]\n &#091; 0.          0.          2.49076923  7.47230769]]\ndeterminante: \n55.04599999999999<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Determinante<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><br><a name=\"concepto\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"funcion\">4. Algoritmo como funci\u00f3n en Numpy<\/h2>\n\n\n\n<p>El resultado se puede verificar usando la funci\u00f3n de Numpy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; np.linalg.det(A)\n55.04599999999999<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#concepto\">Determinante<\/a><\/p>\n\n\n\n<p><a href=\"#ejercicio\">Ejercicio<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">Algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#funcion\">funci\u00f3n<\/a><br><a name=\"concepto\"><\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Determinante Ejercicio Algoritmo funci\u00f3n 1. Determinante de matriz Referencia: Rodr\u00edguez 4.3.9 p129, Burden 6.4 p296, Chapra 9.1.2 p250. El determinante de una matriz cuadrada triangular superior tambi\u00e9n puede calcularse como el producto de los coeficientes de la diagonal principal, considerando el n\u00famero de cambios de fila del pivoteo k. Si observamos que en las secciones [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-mn-unidades","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"class_list":["post-1230","post","type-post","status-publish","format-standard","hentry","category-mn-u03"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1230","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=1230"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1230\/revisions"}],"predecessor-version":[{"id":21564,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1230\/revisions\/21564"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}