In [1]:
import scipy as sp
import scipy.linalg as alg
Para invertir la matriz $A$
$$ \begin{array}{c} A\vec{X} = \vec{b}\quad / A^{-1}\cdot \\ \vec{X} = A^{-1}\cdot\vec{b} \end{array} $$Con $\vec{X}$ las incognitas.
Luego de transformar $A$ en triangular. $$ \begin{array}{ccccc} &x_{1}+ & a'_{12}x_{2}+\ldots+a'_{1n}x_{n} & = & b'_{1} \\ && x_{2}+a'_{23}x_{3} + \ldots + a'_{2n}x_{n} & = & b'_{2} \\ && \vdots & & & \\ & & x_{n} & = & b'_{n} \end{array} $$
Nota: La descomposicion $LU$ no es unica. Por lo general, ademas se impone $l_{kk} = 1$ o $u_{kk} = 1$
Ejemplo:
Se resolvera el problema $A\vec{X} = \vec{b}$ con $$ A = \left[\begin{array}{cccc} 0&1&1&-3 \\ -2&3&1&4 \\ 0&0&0&1 \\ 3&1&0&0 \end{array}\right] b = \left[\begin{array}{c} 3 \\ -2 \\ 5 \\ 1 \end{array}\right] $$
In [2]:
A = sp.array([[0,1,1,-3],
[-2,3,1,4],
[0,0,0, 1],
[3,1,0,0]])
b = sp.array([3,-2,5,1])
alg.solve(A,b)
Out[2]: