Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

4 votos

Cálculo determinante a partir de la descomposición

Que yo sepa descomposición LU permiten calcular el determinante de la matriz de fácil y barato fórmula: Det[A] = Det[L] Det[U] = Det[U]

Intentar esto en Mathematica 7 me da el resultado correcto por valor absoluto, es decir, ignora los determinantes negativos y los transforma a los positivos.

Código de ejemplo:

matrixA = {{-1, 2, 3, 5}, {-7, -4, 5, 4}, {-89, 7, 8, -6}, {8, 6, -1, 4}};

Det[matrixA] da -2067

pero

{lu, p, c} = LUDecomposition[matrixA]

u = lu SparseArray[{i_, j_} /; j >= i -> 1, {4, 4}]

Det[u] es 2067

Bien, la pregunta es obvia: ¿cómo conseguir el correcto determinante en Mathematica usando descomposición LU?

5voto

Andrew Puntos 140

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.

3voto

Lars Truijens Puntos 24005

De la documentación: "Por lo tanto, multiplicar L y U recrea la matriz original permutada con el vector de pivote de fila". Por lo tanto, necesita multiplicar por Signature[p] para obtener el signo correcto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X