![Python金融数据分析(原书第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/920/37647920/b_37647920.jpg)
上QQ阅读APP看书,第一时间看更新
2.6 LU分解
LU分解,也称为上下因子分解(lower upper factorization),是一种线性方程组的求解方法。LU分解将矩阵A分解为两个矩阵的乘积:一个下三角矩阵L和一个上三角矩阵U。分解过程如下所示:
A = LU
![050-03](https://epubservercos.yuewen.com/7EA104/19927563908062806/epubprivate/OEBPS/Images/050-03.jpg?sign=1738773453-1NugqC4ldKjGiJmtqTbcMqrvXTGyv19L-0-f1a0ade83e41af170cf48bc9a60618b8)
矩阵A中,a = l11u11,b = l11u12,以此类推。下三角矩阵对角线右上方系数全部为零,相反即为上三角矩阵。
相对于Cholesky分解,LU分解可应用于任意方阵,而Cholesky分解只能用于正定矩阵。
不同于之前的例子,这次我们通过SciPy模块的linalg
包实现LU分解,从而进行矩阵方程的求解。
![051-01](https://epubservercos.yuewen.com/7EA104/19927563908062806/epubprivate/OEBPS/Images/051-01.jpg?sign=1738773453-ubjJiWMeNXjqqnFteAKxYNthV7fLqLoM-0-719e3c8e347eddfe3a6d9df81fc10477)
输入下列代码,显示x
的值:
![051-02](https://epubservercos.yuewen.com/7EA104/19927563908062806/epubprivate/OEBPS/Images/051-02.jpg?sign=1738773453-dvFjLerCg5OnHEl2FFD9uFcCA4sgIdJt-0-04a08ef5fd4be289ccd141a9a92bcff5)
运算得到a、b、c的值分别为6
、15
和-23
。
此处我们应用scipy.linalg
的lu_factor()
函数,将LU变量定义为矩阵A的LU分解形式,利用lu_solve()
函数求解该方程组。
如果我们利用lu()
函数对矩阵A进行LU分解,会得到三个变量:置换矩阵P、下三角函数L和上三角函数U:
![051-03](https://epubservercos.yuewen.com/7EA104/19927563908062806/epubprivate/OEBPS/Images/051-03.jpg?sign=1738773453-zx6RWjIHHBBsfTmmK0duXFiMhwWA0ftg-0-1f50a3ef707743893a9418b0788c6ac9)
得到上述变量后,可以将矩阵A和LU分解形式的关系表示如下:
![051-04](https://epubservercos.yuewen.com/7EA104/19927563908062806/epubprivate/OEBPS/Images/051-04.jpg?sign=1738773453-fjmRa2Mh0b9iSD0OevyD1lUgkGqh5T3x-0-96707f1ddcfb97a1ca642840ff620d1d)
LU分解可以理解为高斯消元法的矩阵形式,将复杂矩阵分解为两个简单的三角矩阵。