Bien, esto es porque usted ha olvidado tomar en cuenta la matriz de permutación que se genera por la descomposición LU de la rutina. Usted tiene que recordar dos hechos: 1.) Eliminación gaussiana generalmente se realiza fila de intercambios para numérica razones de estabilidad, y 2.) el determinante de una matriz cambia de signo si la intersección de las filas.
En Mathematica , al menos, la función que va a rescatar a es Signature[]
, lo que le da la firma de la permutación requiere a su vez la matriz de permutación (que Mathematica salidas como revueltos lista de los números de 1 a n, donde n es el tamaño de la matriz) en la matriz de identidad.
Así, para utilizar su ejemplo en Mathematica:
m={{-1, 2, 3, 5}, {-7, -4, 5, 4}, {-89, 7, 8, -6}, {8, 6, -1, 4}};
comparamos
Det[m]
-2067
con la siguiente:
{lu, p, c} = LUDecomposition[m]
{{{-1, 2, 3, 5}, {7, -18, -16, -31}, {-8, -11/9, 31/9, 55/9}, {89, 19/2, -963/31, 2067/62}}, {1, 2, 4, 3}, 1}
Ahora, LUDecomposition[]
aquí salidas de tres cosas: la fusión de las L U matrices, la permutación, y la condición de número. Podemos obtener la tentativa determinante multiplicando juntos los elementos de la diagonal de lu
, así:
Tr[lu, Times]
2067
Aquí es donde Signature
viene en:
Signature[{1, 2, 4, 3}]
-1
Tenga en cuenta que para activar {1, 2, 4, 3}
a {1, 2, 3, 4}
, se necesita un intercambio; es decir, a cambiar el tercer y cuarto elementos. Desde el 1 es impar, la firma es -1.
Por lo tanto,
Signature[p]*Tr[lu, Times]
-2067
da la respuesta correcta.