stringtranslate.com

eliminación gaussiana

Animación de eliminación gaussiana. La fila roja elimina las siguientes filas, las filas verdes cambian su orden.

En matemáticas, la eliminación gaussiana , también conocida como reducción por filas , es un algoritmo para resolver sistemas de ecuaciones lineales . Consiste en una secuencia de operaciones por filas realizadas en la matriz de coeficientes correspondiente. Este método también se puede utilizar para calcular el rango de una matriz, el determinante de una matriz cuadrada y la inversa de una matriz invertible . El método lleva el nombre de Carl Friedrich Gauss (1777-1855). Para realizar la reducción de filas en una matriz, se utiliza una secuencia de operaciones elementales de filas para modificar la matriz hasta que la esquina inferior izquierda de la matriz se llene con ceros, tanto como sea posible. Hay tres tipos de operaciones elementales con filas:

Usando estas operaciones, una matriz siempre se puede transformar en una matriz triangular superior , y de hecho una que está en forma escalonada por renglones . Una vez que todos los coeficientes principales (la entrada distinta de cero más a la izquierda en cada fila) son 1, y cada columna que contiene un coeficiente principal tiene ceros en otros lugares, se dice que la matriz está en forma escalonada por filas reducida . Esta forma final es única; en otras palabras, es independiente de la secuencia de operaciones de fila utilizadas. Por ejemplo, en la siguiente secuencia de operaciones con filas (donde se realizan dos operaciones elementales en filas diferentes en el primer y tercer paso), las matrices tercera y cuarta son las que están en forma escalonada por filas, y la matriz final es la única fila reducida. forma escalonada.

El uso de operaciones por filas para convertir una matriz en forma escalonada por filas reducida a veces se denominaEliminación de Gauss-Jordan . En este caso, el términoeliminación gaussianase refiere al proceso hasta que alcanza su forma triangular superior o escalonada de filas (no reducida). Por razones computacionales, al resolver sistemas de ecuaciones lineales, a veces es preferible detener las operaciones por filas antes de que la matriz se reduzca por completo.

Definiciones y ejemplo de algoritmo.

El proceso de reducción de filas utiliza operaciones de filas elementales y se puede dividir en dos partes. La primera parte (a veces llamada eliminación directa) reduce un sistema dado a una forma escalonada, a partir de la cual se puede saber si no hay soluciones, si hay una solución única o si hay infinitas soluciones. La segunda parte (a veces llamada sustitución inversa ) continúa usando operaciones de fila hasta que se encuentra la solución; en otras palabras, pone la matriz en forma escalonada reducida por filas.

Otro punto de vista, que resulta muy útil para analizar el algoritmo, es que la reducción de filas produce una descomposición matricial de la matriz original. Las operaciones elementales de fila pueden verse como la multiplicación de la izquierda de la matriz original por matrices elementales . Alternativamente, una secuencia de operaciones elementales que reduce una sola fila puede verse como una multiplicación por una matriz de Frobenius . Luego, la primera parte del algoritmo calcula una descomposición LU , mientras que la segunda parte escribe la matriz original como el producto de una matriz invertible determinada de forma única y una matriz escalonada de filas reducida determinada de forma única.

Operaciones de fila

Hay tres tipos de operaciones elementales con filas que se pueden realizar en las filas de una matriz:

  1. Intercambia las posiciones de dos filas.
  2. Multiplica una fila por un escalar distinto de cero .
  3. Suma a una fila un múltiplo escalar de otra.

Si la matriz está asociada a un sistema de ecuaciones lineales, entonces estas operaciones no cambian el conjunto solución. Por lo tanto, si el objetivo es resolver un sistema de ecuaciones lineales, entonces usar estas operaciones de renglón podría facilitar el problema.

Forma escalonada

Para cada fila de una matriz, si la fila no consta solo de ceros, entonces la entrada distinta de cero más a la izquierda se denomina coeficiente principal (o pivote ) de esa fila. Entonces, si dos coeficientes principales están en la misma columna, entonces se podría usar una operación de fila de tipo 3 para hacer que uno de esos coeficientes sea cero. Luego, al utilizar la operación de intercambio de filas, siempre se pueden ordenar las filas de modo que, para cada fila distinta de cero, el coeficiente principal esté a la derecha del coeficiente principal de la fila anterior. Si este es el caso, entonces se dice que la matriz está en forma escalonada por renglones. Entonces, la parte inferior izquierda de la matriz contiene solo ceros, y todas las filas cero están debajo de las filas distintas de cero. La palabra "escalón" se utiliza aquí porque uno puede pensar aproximadamente en las filas clasificadas por su tamaño, con la más grande en la parte superior y la más pequeña en la parte inferior.

Por ejemplo, la siguiente matriz está en forma escalonada por filas y sus coeficientes principales se muestran en rojo:

Está en forma escalonada porque la fila cero está en la parte inferior y el coeficiente principal de la segunda fila (en la tercera columna) está a la derecha del coeficiente principal de la primera fila (en la segunda columna).

Se dice que una matriz está en forma escalonada por filas reducida si, además, todos los coeficientes principales son iguales a 1 (lo que se puede lograr usando la operación elemental por filas del tipo 2), y en cada columna que contiene un coeficiente principal, todos los otras entradas en esa columna son cero (lo que se puede lograr usando operaciones de fila elementales del tipo 3).

Ejemplo del algoritmo

Supongamos que el objetivo es encontrar y describir el conjunto de soluciones del siguiente sistema de ecuaciones lineales:

La siguiente tabla es el proceso de reducción de filas aplicado simultáneamente al sistema de ecuaciones y su matriz aumentada asociada . En la práctica, no se suele tratar los sistemas en términos de ecuaciones, sino que se utiliza la matriz aumentada, que es más adecuada para manipulaciones informáticas. El procedimiento de reducción de filas se puede resumir de la siguiente manera: eliminar x de todas las ecuaciones inferiores a L 1 y luego eliminar y de todas las ecuaciones inferiores a L 2 . Esto pondrá el sistema en forma triangular . Luego, usando sustitución hacia atrás, se puede resolver cada incógnita.

La segunda columna describe qué operaciones de fila se acaban de realizar. Entonces, para el primer paso, la x se elimina de L 2 sumando3/2L1 a L2 .A continuación, x se elimina de L 3 sumando L 1 a L 3 . Estas operaciones de fila están etiquetadas en la tabla como

Una vez que y también se elimina de la tercera fila, el resultado es un sistema de ecuaciones lineales en forma triangular, por lo que la primera parte del algoritmo está completa. Desde un punto de vista computacional, es más rápido resolver las variables en orden inverso, proceso conocido como sustitución hacia atrás. Se ve que la solución es z = −1 , y = 3 y x = 2 . Entonces existe una solución única para el sistema de ecuaciones original.

En lugar de detenerse una vez que la matriz esté en forma escalonada, se podría continuar hasta que la matriz esté en forma escalonada por filas reducida , como se hace en la tabla. El proceso de reducción de filas hasta que se reduce la matriz a veces se denomina eliminación de Gauss-Jordan, para distinguirlo de detenerse después de alcanzar la forma escalonada.

Historia

El método de eliminación gaussiana aparece –aunque sin pruebas– en el texto matemático chino Capítulo Ocho: Matrices rectangulares de los nueve capítulos sobre el arte matemático . Su uso se ilustra en dieciocho problemas, con dos a cinco ecuaciones. La primera referencia al libro con este título data del año 179 d.C., pero partes del mismo se escribieron aproximadamente en el año 150 a.C. [1] [2] [3] Fue comentado por Liu Hui en el siglo III.

El método en Europa surge de las notas de Isaac Newton . [4] [5] En 1670, escribió que todos los libros de álgebra que conocía carecían de una lección para resolver ecuaciones simultáneas, que Newton luego proporcionó. La Universidad de Cambridge finalmente publicó las notas como Arithmetica Universalis en 1707, mucho después de que Newton abandonara la vida académica. Las notas fueron ampliamente imitadas, lo que convirtió (lo que ahora se llama) la eliminación gaussiana en una lección estándar en los libros de texto de álgebra a finales del siglo XVIII. Carl Friedrich Gauss ideó en 1810 una notación para la eliminación simétrica que fue adoptada en el siglo XIX por computadoras manuales profesionales para resolver las ecuaciones normales de problemas de mínimos cuadrados. [6] El algoritmo que se enseña en la escuela secundaria recibió el nombre de Gauss recién en la década de 1950 como resultado de la confusión sobre la historia del tema. [7]

Algunos autores utilizan el término eliminación gaussiana para referirse únicamente al procedimiento hasta que la matriz está en forma escalonada, y utilizan el término eliminación Gauss-Jordan para referirse al procedimiento que termina en forma escalonada reducida. El nombre se utiliza porque es una variación de la eliminación gaussiana descrita por Wilhelm Jordan en 1888. Sin embargo, el método también aparece en un artículo de Clasen publicado el mismo año. Jordan y Clasen probablemente descubrieron la eliminación de Gauss-Jordan de forma independiente. [8]

Aplicaciones

Históricamente, la primera aplicación del método de reducción por filas es para resolver sistemas de ecuaciones lineales. A continuación se muestran algunas otras aplicaciones importantes del algoritmo.

Determinantes informáticos

Para explicar cómo la eliminación gaussiana permite calcular el determinante de una matriz cuadrada, debemos recordar cómo las operaciones elementales por renglones cambian el determinante:

Si la eliminación gaussiana aplicada a una matriz cuadrada A produce una matriz escalonada por filas B , sea d el producto de los escalares por los que se ha multiplicado el determinante, utilizando las reglas anteriores. Entonces el determinante de A es el cociente entre d del producto de los elementos de la diagonal de B :

Computacionalmente, para una matriz n × n , este método solo necesita operaciones aritméticas O( n 3 ) , mientras que usar la fórmula de Leibniz para los determinantes requiere operaciones O( n !) (número de sumandos en la fórmula), y la expansión recursiva de Laplace requiere O( 2 n ) operaciones (número de subdeterminantes a calcular, si ninguno se calcula dos veces). Incluso en las computadoras más rápidas, estos dos métodos son poco prácticos o casi impracticables para n superior a 20.

Encontrar la inversa de una matriz

Se puede utilizar una variante de la eliminación gaussiana llamada eliminación de Gauss-Jordan para encontrar la inversa de una matriz, si existe. Si A es una matriz cuadrada de n × n , entonces se puede utilizar la reducción de filas para calcular su matriz inversa , si existe. Primero, la matriz identidad n × n se aumenta a la derecha de A , formando una matriz de bloques n × 2 n [ A | I ] . Ahora, mediante la aplicación de operaciones elementales con renglones, encuentre la forma escalonada reducida de esta matriz de n × 2 n . La matriz A es invertible si y sólo si el bloque izquierdo puede reducirse a la matriz identidad I ; en este caso el bloque derecho de la matriz final es A −1 . Si el algoritmo no puede reducir el bloque izquierdo a I , entonces A no es invertible.

Por ejemplo, considere la siguiente matriz:

Para encontrar la inversa de esta matriz, se toma la siguiente matriz aumentada por la identidad y se reduce por filas como una matriz de 3 × 6:

Al realizar operaciones por filas, se puede comprobar que la forma escalonada reducida por filas de esta matriz aumentada es

Se puede pensar en cada operación de fila como el producto izquierdo de una matriz elemental . Denotando por B el producto de estas matrices elementales, mostramos, a la izquierda, que BA = I , y por tanto, B = A −1 . A la derecha, mantuvimos un registro de BI = B , que sabemos que es lo inverso deseado. Este procedimiento para encontrar la inversa funciona para matrices cuadradas de cualquier tamaño.

Rangos y bases informáticas

El algoritmo de eliminación gaussiano se puede aplicar a cualquier matriz A de m × n . De esta manera, por ejemplo, algunas matrices de 6 × 9 se pueden transformar en una matriz que tiene una forma escalonada por filas como

a , b , c , d , eTArangoATespacio vectorialAa , b , c , d , eTAproducto escalarcomo matriz

Todo esto se aplica también a la forma escalonada reducida, que es un formato escalonado particular.

Eficiencia computacional

El número de operaciones aritméticas necesarias para realizar la reducción de filas es una forma de medir la eficiencia computacional del algoritmo. Por ejemplo, para resolver un sistema de n ecuaciones para n incógnitas realizando operaciones de fila en la matriz hasta que esté en forma escalonada, y luego resolviendo cada incógnita en orden inverso, se requieren n ( n + 1)/2 divisiones, (2 n 3 + 3 n 2 − 5 n )/6 multiplicaciones, y (2 n 3 + 3 n 2 − 5 n )/6 restas, [9] para un total de aproximadamente 2 n 3 /3 operaciones. Por tanto, tiene una complejidad temporal de O( n 3 ) .

Esta complejidad es una buena medida del tiempo necesario para todo el cálculo cuando el tiempo de cada operación aritmética es aproximadamente constante. Este es el caso cuando los coeficientes están representados por números de coma flotante o cuando pertenecen a un cuerpo finito . Si los coeficientes son números enteros o números racionales representados exactamente, las entradas intermedias pueden crecer exponencialmente, por lo que la complejidad de los bits es exponencial. [10] Sin embargo, existe una variante de eliminación gaussiana, llamada algoritmo de Bareiss , que evita este crecimiento exponencial de las entradas intermedias y, con la misma complejidad aritmética de O( n 3 ) , tiene una complejidad de bits de O( n 5 ) .

Este algoritmo se puede utilizar en una computadora para sistemas con miles de ecuaciones e incógnitas. Sin embargo, el costo se vuelve prohibitivo para sistemas con millones de ecuaciones. Estos grandes sistemas generalmente se resuelven utilizando métodos iterativos . Existen métodos específicos para sistemas cuyos coeficientes siguen un patrón regular (ver sistema de ecuaciones lineales ).

Para poner una matriz n × n en forma escalonada reducida mediante operaciones por filas, se necesitan n 3 operaciones aritméticas, lo que supone aproximadamente un 50% más de pasos de cálculo. [11] [ se necesita aclaración ]

Algoritmo de tiempo fuertemente polinomial

Jack Edmonds realizó una mejora adicional en 1967. Demostró que la eliminación gaussiana se puede realizar en un tiempo fuertemente polinomial . [12] : 37  El principal desafío es cómo representar los números racionales generados durante el cálculo:

Como corolario, los siguientes problemas se pueden resolver en tiempo fuertemente polinomial: [12] : 40 

inestabilidad numérica

Un posible problema es la inestabilidad numérica , provocada por la posibilidad de dividir entre números muy pequeños. Si, por ejemplo, el coeficiente principal de una de las filas es muy cercano a cero, entonces para reducir la matriz por filas, sería necesario dividirla por ese número. Esto significa que cualquier error que existiera para el número cercano a cero se amplificaría. La eliminación gaussiana es numéricamente estable para matrices diagonalmente dominantes o definidas positivas . Para matrices generales, la eliminación gaussiana generalmente se considera estable cuando se utiliza pivote parcial , aunque hay ejemplos de matrices estables para las que es inestable. [13]

Generalizaciones

La eliminación gaussiana se puede realizar en cualquier campo , no solo en los números reales.

El algoritmo de Buchberger es una generalización de la eliminación gaussiana a sistemas de ecuaciones polinómicas . Esta generalización depende en gran medida de la noción de orden monomial . La elección de un orden en las variables ya está implícita en la eliminación gaussiana, manifestándose como la elección de trabajar de izquierda a derecha al seleccionar las posiciones de los pivotes.

Calcular el rango de un tensor de orden mayor que 2 es NP-difícil . [14] Por lo tanto, si P ≠ NP , no puede haber un tiempo polinómico análogo a la eliminación gaussiana para tensores de orden superior (las matrices son representaciones de matriz de tensores de orden 2).

Pseudocódigo

Como se explicó anteriormente, la eliminación gaussiana transforma una matriz A dada de m × n en una matriz en forma escalonada por filas .

En el siguiente pseudocódigo , A[i, j]denota la entrada de la matriz A en la fila i y la columna j con los índices comenzando desde 1. La transformación se realiza en el lugar , lo que significa que la matriz original se pierde para eventualmente ser reemplazada por su forma escalonada por filas.

h := 1 /* Inicialización de la fila dinámica */k := 1 /* Inicialización de la columna dinámica */mientras que h ≤ my k ≤ n /* Encuentra el k-ésimo pivote: */ i_max := argmax (i = h ... m, abs(A[i, k])) si A[i_max, k] = 0 /* No hay pivote en esta columna, pasa a la siguiente columna */ k := k + 1 de lo contrario  intercambiar filas (h, i_max) /* Hacer para todas las filas debajo del pivote: */ para i = h + 1 ... m: f := A[i, k] / A[h, k] /* Rellena con ceros la parte inferior de la columna dinámica: */ A[yo, k] := 0 /* Hacer para todos los elementos restantes en la fila actual: */ para j = k + 1 ... n: A[i, j] := A[i, j] - A[h, j] * f /* Aumentar fila y columna dinámica */ h := h + 1 k := k + 1

Este algoritmo difiere ligeramente del analizado anteriormente al elegir un pivote con el valor absoluto más grande . Un giro parcial de este tipo puede ser necesario si, en el lugar de giro, la entrada de la matriz es cero. En cualquier caso, elegir el valor absoluto más grande posible del pivote mejora la estabilidad numérica del algoritmo, cuando se utiliza punto flotante para representar números.

Al completar este procedimiento, la matriz estará en forma escalonada por filas y el sistema correspondiente podrá resolverse mediante sustitución inversa.

Ver también

Referencias

  1. ^ "DOCUMENTA MATHEMATICA, Vol. Volumen extra: Historias de optimización (2012), 9-14". www.emis.de.​ Consultado el 2 de diciembre de 2022 .
  2. ^ Calinger 1999, págs. 234-236
  3. ^ Timoteo Gowers; Junio ​​Barrow-Green; Imre Leader (8 de septiembre de 2008). El compañero de matemáticas de Princeton. Prensa de la Universidad de Princeton. pag. 607.ISBN 978-0-691-11880-2.
  4. ^ Grcar 2011a, págs. 169-172
  5. ^ Grcar 2011b, págs. 783–785
  6. ^ Lauritzen, pág. 3
  7. ^ Grcar 2011b, pag. 789
  8. ^ Althoen, Steven C.; McLaughlin, Renate (1987), "Reducción de Gauss-Jordan: una breve historia", The American Mathematical Monthly , Mathematical Association of America, 94 (2): 130–142, doi :10.2307/2322413, ISSN  0002-9890, JSTOR  2322413
  9. ^ Farebrother 1988, pag. 12
  10. ^ Colmillo, Xin Gui; Havas, George (1997). "Sobre el peor de los casos de complejidad de la eliminación gaussiana de enteros" (PDF) . Actas del simposio internacional de 1997 sobre computación simbólica y algebraica . ISSAC '97. Kihei, Maui, Hawái, Estados Unidos: ACM. págs. 28-31. doi :10.1145/258726.258740. ISBN 0-89791-875-4.[ enlace muerto permanente ]
  11. ^ JB Fraleigh y RA Beauregard, Álgebra lineal. Addison-Wesley Publishing Company, 1995, Capítulo 10.
  12. ^ ab Grötschel, Martín ; Lovász, László ; Schrijver, Alexander (1993), Algoritmos geométricos y optimización combinatoria, Algoritmos y combinatoria, vol. 2 (2ª ed.), Springer-Verlag, Berlín, doi :10.1007/978-3-642-78240-4, ISBN 978-3-642-78242-8, señor  1261419
  13. ^ Préstamo Golub y Van 1996
  14. ^ Hillar, Cristóbal; Lim, Lek-Heng (7 de noviembre de 2009). "La mayoría de los problemas tensoriales son NP-difíciles". arXiv : 0911.1393 [cs.CC].

Trabajos citados

enlaces externos