![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=1739909372-hQQwDwS7ShAIpNK09hMxgHEkMmldvPWU-0-ffd412267fe492079825408d230ba69a)
矩阵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=1739909372-u47P6GyOVR7RJ82Ck9G88t3Qbja4joa8-0-8a607cd8e48216318e96b9b1d7e58c37)
输入下列代码,显示x
的值:
![051-02](https://epubservercos.yuewen.com/7EA104/19927563908062806/epubprivate/OEBPS/Images/051-02.jpg?sign=1739909372-h5YjkHd40VEOLWQKlsfvLmQldfzWXCnp-0-ca2172ebe85e59e2f745cab96e48d309)
运算得到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=1739909372-Url0DBZGX0osk6dWBMR4Gd9eo4u6OWrg-0-226555ef4611c5e2cca27f5abe4cda1e)
得到上述变量后,可以将矩阵A和LU分解形式的关系表示如下:
![051-04](https://epubservercos.yuewen.com/7EA104/19927563908062806/epubprivate/OEBPS/Images/051-04.jpg?sign=1739909372-qlVKfAKuYo18AvfkH62tylVF9NK7xgQu-0-b2757d2f162562950aaca921d9cb081e)
LU分解可以理解为高斯消元法的矩阵形式,将复杂矩阵分解为两个简单的三角矩阵。