前言
看了麻省理工的线性代数的一部分课程,主要是补补课,大二线代忘得差不多,主要目的是学习SVD,学习SVD之前补补前面的课,第一课就是LU分解了。
什么是LU分解
L是指下三角矩阵,U是指上三角矩阵,也就是说一个矩阵可以分解为下三角矩阵和上三角矩阵的乘积,下三角阵对角元是1,上三角是主元,貌似课上是这么说的。对于任意矩阵A可以写成:
还可以写成A=LDU,其中D是对角阵,例如:
这是LU分解而LDU则是
L是一堆初等变换乘积的逆,为什么是逆呢?
我们可以假设对于一个3*3的矩阵A化为上三角矩阵U需要将第二行第一个元素化为0,这一初等变换记作E21将第三行第一个,第二个元素化为0记作E31,E32
那么原式可以写为
为了简单我们令E31=E,那么另外两个的乘积可以设为:
注意到最终结果存在一个10,我们在消去第二行第一个元素时是乘以-2倍的,对于第三行是乘-5的,这两个是消元系数,但是10并不是,我们不想出现10,那么看看他们的逆呢?
很明显没有10了而这就是我们要的L只体现消元系数,而没有其他的数字。
LU分解有什么用?
在机器学习中目前没发现作用,度娘说LU分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式。
附:化为上(下)三角的时间复杂度:
是n3,n*n的矩阵,消去第一列是n2,第二列是(n+1)2...求和约为n3。