domingo, 18 de diciembre de 2022

Factorización $LU$ de Doolittle empleando GNU Octave

Una matriz $A$ no singular puede descomponerse (factorizarse) de la forma $A=LU$, donde $L$ es una matriz triangular inferior y $U$ es una matriz triangular superior. En partircular, si los elementos de la diagonal de $L$ son unos, denominamos a dicha factorización $LU$ de Doolittle. A modo de ejemplo, voy a resolver la factorización $LU$ de Doolittle de la siguiente matriz de orden $3$ $$A=\begin{pmatrix}1&-1&2\\ 1&2&2 \\ 1&1&-1 \end{pmatrix}$$ utilizando GNU Octave (de manera automática)-

Mediante el uso de la herramienta GNU Octave voy a resolver el sistema escalonando por Gauss la matriz ampliada, con pivotamiento por columnas, obteniendo así una matriz equivalente (en cuanto a la solución del sistema) de tipo triangular superior:

 >> 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


Por tanto, podemos escribir $$\begin{pmatrix}1&-1&2\\ 1&2&2 \\ 1&1&-1 \end{pmatrix}=\begin{pmatrix}1&0&0\\ 1&1&0 \\ 1&0.6667&1 \end{pmatrix}\,\begin{pmatrix}1&-1&2\\ 0&3&0 \\ 0&0&-3 \end{pmatrix}$$ Comprobémoslo, empleando también Octave. En efecto,
>> L*U
ans =

   1  -1   2
   1   2   2
   1   1  -1

---

Nota

Habida cuenta de que el coficiente $0.6667$ es la aproximación de $\dfrac{2}{3}$ podemos escribir también de la forma $$\begin{pmatrix}1&-1&2\\ 1&2&2 \\ 1&1&-1 \end{pmatrix}=\begin{pmatrix}1&0&0\\ 1&1&0 \\ 1&2/3&1 \end{pmatrix}\,\begin{pmatrix}1&-1&2\\ 0&3&0 \\ 0&0&-3 \end{pmatrix}$$

-oOo-

Observación

Para hacer frente a posibles inestabilidades del método conviene tener en cuenta algunos casos especiales; así, por ejemplo, en el caso de que uno o varios elementos de la diagonal principal de la matriz a factorizar sea cero, será necesario premultiplicar la matriz por una o varias matrices elementales de permutación. Existe un segundo método llamado factorización $P A = L U $ (o $L U$ con pivote), que se usa en el análisis numérico para resolver sistemas de ecuaciones con más eficiencia y también para encontrar las matrices inversas.

-oOo-

Referencias

[1] 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

$\diamond$

No hay comentarios:

Publicar un comentario