De la página de Wikipedia sobre la eliminación gaussiana (con ediciones leves):
El número de operaciones aritméticas requeridas 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 al realizar operaciones de fila en la matriz hasta que esté en forma escalonada, y luego resolver para cada incógnita en orden inverso, requiere [matemáticas] \ frac {n (n + 1) } {2} [/ matemáticas] divisiones, [matemáticas] \ frac {2n ^ 3 + 3n ^ 2–5n} {6} [/ matemáticas] multiplicaciones, y [matemáticas] \ frac {2n ^ 3 + 3n ^ 2– 5n} {6} [/ math] sustracciones, [8], para un total de aproximadamente [math] \ frac {2n ^ 3} {3} [/ math] operaciones. Por lo tanto, tiene una complejidad aritmética de O ([matemáticas] n ^ 3 [/ matemáticas]); ver la gran notación O. Esta complejidad aritmética es una buena medida del tiempo necesario para todo el cálculo cuando el tiempo para 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 campo finito. Si los coeficientes son números enteros o números racionales exactamente representados, las entradas intermedias pueden crecer exponencialmente grandes, por lo que la complejidad de bits es exponencial. [9]
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 ([matemática] n ^ 3 [/ matemática]), tiene un poco de complejidad de O ([matemáticas] n ^ 5 [/ matemáticas]).
Este algoritmo se puede usar 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).
- ¿Cómo debo escribir mi propia biblioteca de álgebra lineal de C ++?
- Cómo resolver este problema de Matrix donde podría ser necesaria una división
- Cómo determinar si cierta expresión vectorial no tiene sentido o tiene sentido
- ¿Cómo podemos encontrar la magnitud del vector en un gráfico tridimensional?
- ¿Cuál es la base de las leyes de la suma de vectores? ¿Son hipotéticos o se basan en análisis experimentales?
Para poner una matriz n por n en forma escalonada reducida por operaciones de fila, se necesitan operaciones aritméticas [matemáticas] n ^ 3 [/ matemáticas]; que es aproximadamente un 50% más de pasos de cálculo. [10]