矩阵分解 三角分解(LU分解)

三角分解(LU分解)

在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。LU分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式。

本质上,LU分解是高斯消元的一种表达方式。首先,对矩阵A通过初等行变换将其变为一个上三角矩阵。对于学习过线性代数的同学来说,这个过程应该很熟悉,线性代数考试中求行列式求逆一般都是通过这种方式来求解。然后,将原始矩阵A变为上三角矩阵的过程,对应的变换矩阵为一个下三角矩阵。这中间的过程,就是Doolittle algorithm(杜尔里特算法)。

例子1:

A = LU,这里将A的对应元素求出。可以直接顺序计算LU值

矩阵分解 三角分解(LU分解)_第1张图片


例子2: 
若AX=b是一个非奇异系统,那么高斯消元法将A化简为一个上三角矩阵。若主轴上没有0值,则无需交互行,因此只需进行第3类初等行变换(把第 i 行加上第 j 的 k 倍)即可完成此变换。例如 
矩阵分解 三角分解(LU分解)_第2张图片 
第3类行变换可以通过左乘相应的初等矩阵image实现,对上例来说进行的3个变换就是相应初等矩阵的乘积。注意最右边是一个下三角矩阵L 
这里写图片描述 
从而有G3G2G1A=U,即A=G11G12G13U。因此A=LU,为一个下三角与一个上三角矩阵的乘积,因此称为LU分解。 
注意: 
1)U是高斯消元的结果,且对角线上是主元 
2)L对角线上是1,对角线下面的元素image恰恰是在式1中用于消去(i,j)位置上元素的乘子。

LU分解常用来求解线性方程组,求逆矩阵或者计算行列式。例如在计算行列式的时候,A=LUdet(A)=det(L)det(U)。而对于三角矩阵来说,行列式的值即为对角线上元素的乘积。所以如果对矩阵进行三角分解以后再求行列式,就会变得非常容易。

在线性代数中已经证明,如果方阵A是非奇异的,即A的行列式不为0,LU分解总是存在的。


在计算机程序中常常用到这种方法解线性代数方程组。它的优点是存储量很省。L和U中的三角零元素都不必存储,这样只用一个n阶仿真就可以把L和U存储起来。

即:下三角存储L各元素而上三角存储U的元素。

再考察公式S会发现A中任一元素aij只在计算lij(j<=i)和uij(u>=j)中用到一次,以后就不再出现了,因为完全可以利用原始数据A的单元,一个个逐次存储L或U中

的相应元素,即:

矩阵分解 三角分解(LU分解)_第3张图片



下面是关于使用LU分解求解方程组Ax = b:

当系数矩阵A完成了LU分解后,方程组Ax = b就可以化为L(Ux) = b,等价于求解两个方程组Ly = b和Ux = y;

具体计算公式为

矩阵分解 三角分解(LU分解)_第4张图片

采用LU分解有如下特点:

(1)LU分解与右端向量无关。先分解,后回代,分解的运算次数正比于n^3,回代求解正比于n^2。遇到多次回代时,分解的工作不必重新做,这样节省计算时间。

(2)分解按步进行,前边分解得到的信息为后边所用。

(3)【A】矩阵的存储空间可利用,节省存储。


你可能感兴趣的:(矩阵分解)