什么是LU分解
将一个矩阵 $A$ 表示成 $A = LU$ 的形式,其中 $L$ 是下三角矩阵, $U$ 是上三角矩阵。这就是所谓的LU分解。例如:
上面的例子中 $A$ 是方阵。如果 $A$ 不是方阵呢?这种情况下,我们希望 $L$ 和 $U$ 中有一个是方阵,并且是三角矩阵;而另一个尽量做成三角矩阵。比如这样的形式:
为什么要做LU分解
LU分解其实就是一个运算优化。无论是求解行列式,还是线性方程组等,完全可以直接使用 $A$ 本身来求解。但使用 $LU$ 矩阵的计算量非常小,小到相对来说是可以忽略的。更何况实际编程中,我们还可以将 $LU$ 矩阵保存,即可以用来求行列式,也可以用来求解线性方程组,可谓“一次计算,到处方便”。下面就分别举例看一下。
利用LU分解求行列式
行列式有一个性质,即如果 $A=LU$ ,则 $detA = det(LU) = (detL)(detU)$ 。
行列式还有一个性质,即对于对角矩阵 $B$ ,其行列式的值对角元素的乘积。
因此对于文章开头的例子中的矩阵 $A$ ,其行列式 $detA = (1 * 1 * 1)(1 * (-3) * 4) = -12$
利用LU分解求解线性方程组
如果要求 $Ax = y$ 中的向量 $x$ ,将 $A$ 进行 $LU$ 分解以后,则 $LUx = y$ 。因此求解 $x$ 的问题变成了先求 $Lz = y$ 中的向量 $z$ ,再求 $Ux =