una sarrus resueltos propiedades por paso metodo matriz los ejercicios determinantes determinante cofactores calcular 5x5 4x4 3x3 algorithm language-agnostic determinants

algorithm - sarrus - ¿Cuál es el mejor algoritmo para encontrar un determinante de una matriz?



metodo de cofactores (4)

Reducción de filas

La forma más sencilla (y no mala) de encontrar el determinante de una matriz nxn es mediante la reducción de filas. Al tener en cuenta algunas reglas simples sobre los determinantes, podemos resolverlo de la siguiente forma:

det ( A ) = α * det ( R ), donde R es la forma escalonada de la fila de la matriz original A , y α es algún coeficiente.

Encontrar el determinante de una matriz en forma escalonada es realmente fácil; Solo encuentras el producto de la diagonal. Resolver el determinante de la matriz original A se reduce a calcular α a medida que encuentra el escalón R de fila.

Lo que necesitas saber

¿Qué es la forma escalonada de la fila?

Vea este link para una definición simple
Nota: No todas las definiciones requieren 1s para las entradas iniciales, y no es necesario para este algoritmo.

Puedes encontrar R usando las operaciones de fila elemental

Intercambiando filas, sumando múltiplos de otra fila, etc.

Deriva α de las propiedades de las operaciones de fila para determinantes

  1. Si B es una matriz obtenida multiplicando una fila de A por alguna constante ß distinta de cero, entonces

    det ( B ) = ß * det ( A )

    • En otras palabras, puedes esencialmente ''factorizar'' una constante de una fila simplemente tirando de ella por delante del determinante.
  2. Si B es una matriz obtenida intercambiando dos filas de A , entonces

    det ( B ) = -det ( A )

    • Si intercambias filas, voltea la señal.
  3. Si B es una matriz obtenida agregando un múltiplo de una fila a otra fila en A , entonces

    det ( B ) = det ( A )

    • El determinante no cambia.

Tenga en cuenta que puede encontrar el determinante, en la mayoría de los casos, solo con la Regla 3 (cuando creo que la diagonal de A no tiene ceros), y en todos los casos con solo las Reglas 2 y 3. La Regla 1 es útil para los humanos que hacen matemáticas. Papel, tratando de evitar fracciones.

Ejemplo

(Hago pasos innecesarios para demostrar cada regla con mayor claridad)
| 2 3 3 1 | A =| 0 4 3 -3 | | 2 -1 -1 -3 | | 0 -4 -3 2 | R 2 <-> R 3 , -α -> α (Rule 2) | 2 3 3 1 | -| 2 -1 -1 -3 | | 0 4 3 -3 | | 0 -4 -3 2 | R 2 - R 1 -> R 2 (Rule 3) | 2 3 3 1 | -| 0 -4 -4 -4 | | 0 4 3 -3 | | 0 -4 -3 2 | R 2 /(-4) -> R 2 , -4α -> α (Rule 1) | 2 3 3 1 | 4| 0 1 1 1 | | 0 4 3 -3 | | 0 -4 -3 2 | R 3 - 4R 2 -> R 3 , R 4 + 4R 2 -> R 4 (Rule 3, applied twice) | 2 3 3 1 | 4| 0 1 1 1 | | 0 0 -1 -7 | | 0 0 1 6 | R 4 + R 3 -> R 3 | 2 3 3 1 | 4| 0 1 1 1 | = 4 ( 2 * 1 * -1 * -1 ) = 8 | 0 0 -1 -7 | | 0 0 0 -1 |

¿Alguien puede decirme cuál es el mejor algoritmo para encontrar el valor determinante de una matriz de tamaño N x N ?


No estoy muy familiarizado con la factorización de LU, pero sé que para obtener L o U, debe hacer que la matriz inicial sea triangular (ya sea triangular superior para U o triangular inferior para L). Sin embargo, una vez que obtenga la matriz en forma triangular para algunos nxn matriz A y asumiendo que la única operación que utiliza su código es Rb - k * Ra, solo puede resolver det (A) = Π T (i, i) de i = 0 a n (es decir, det (A) = T (0,0) x T (1,1) x ... x T (n, n)) para la matriz triangular T. Consulte este enlace para ver de qué estoy hablando acerca de. http://matrix.reshish.com/determinant.php


Si realizó una investigación inicial, probablemente haya encontrado que con N> = 4, el cálculo de un determinante de la matriz se vuelve bastante complejo. Con respecto a los algoritmos, le recomendaría un artículo de Wikipedia sobre los determinantes de Matrix , específicamente la sección "Implementación algorítmica".

Desde mi propia experiencia, puede encontrar fácilmente un algoritmo de descomposición LU o QR en las bibliotecas de matriz existentes, como Alglib . Sin embargo, el algoritmo en sí no es muy simple.


Here hay una extensa discusión.

Hay muchos algoritmos.

Una simple es tomar la descomposición de LU . Entonces, desde

det M = det LU = det L * det U

y tanto L como U son triangulares, el determinante es un producto de los elementos diagonales de L y U Eso es O(n^3) . Existen algoritmos más eficientes.