Processing math: 100%

martes, 20 de diciembre de 2022

Cálculo rápido del determinante de una matriz cuadrada A, dada ésta factorizada como A=LU

Es sabido que dadas dos matrices cuadradas y del mismo orden, A y B, se tiene que \text{det}(AB)=\text{det}(A)\cdot \text{det}(B); por tanto, si una matriz M viene ya expresada como el producto de una matriz triangular inferior por una matriz triangular superior (factorización M=LU) —ya se trate de la factorización de Crout o bien de la de Doolittle—, el cálculo del determinante de M es muy rápido.

Teniendo en cuenta que el determinante de una matriz cuadrada triangular es igual al producto de los elementos de su diagonal principal, entonces el cálculo del determinante de \text{det}(M)=\text{det}(L)\cdot \text{det}(U) requiere únicamente n-1 multiplicaciones (el producto de los elementos de la diagonal principal del factor que no tenga unos en la misma), ya que la otra matriz factor tiene determinante igual a 1, habida cuenta de que los elementos de su diagonal principal son todos ellos unos.

Ejemplo con una matriz M=LU (factorizada por el m. de Doolittle: matriz L con unos en la diagonal principal)

Con 2 multiplicaciones podemos calcular el determinante de una matriz cuadrada de orden 3, siempre que conozcamos la factorización LU de la misma. Hago los cálculos de comprobación con GNU Octave:

% Sea la matriz   
   A=[1,-1,2;1,2,2;1,1,-1]
A =

   1  -1   2
   1   2   2
   1   1  -1

>> [L,U]=lu(A)
L =

   1.0000        0        0
   1.0000   1.0000        0
   1.0000   0.6667   1.0000

U =

   1  -1   2
   0   3   0
   0   0  -3


% det(L)=1 (no hace falta hacer ningún cálculo, pues
% de antemano conocemos este resultado, puesto que
% L es una matriz diagonal con unos en la diagonal
% principal, y, por tanto, su determinante es igual a 1)

% A continuación vemos las dos multiplicaciones que 
% he comentado arriba:
% det(U)=1·3·(-3)=(1\cdot 3)\cdot (-3)=-9

% En efecto, por el algoritmo por defecto:
>> det(U)
ans = -9

% Así pues det(L)·det(U)=1·(-9)=-9
% en efecto, por el algoritmo por defecto:
>> det(L)*det(U)
ans = -9

% y nótese que, por el algoritmo por defecto,
>> det(A)
ans = -9

  

\diamond

-oOo-

Referencias

[1] J.F. Fernando; J.M. Gamboa; J.M. Ruiz, Álgebra lineal (vol. 1), Sanz y Torres, Madrid, 2011
[2] F. García; A. Nevot, Análisis numérico, Paraninfo, Madrid, 1992
[3] John W. Eaton; David Bateman; Søren Hauberg; Rik Wehbring, Free Your Numbers (Manual de GNU Octave), https://www.gnu.org/software/octave/octave.pdf

No hay comentarios:

Publicar un comentario