目录
Gauss 消去法的矩阵意义
注意:这里面讨论的不是列主元高斯消去法,所以算法可能不稳定。
A = L U A=LU A=LU
即 A 可以表示成为一个单位下三角阵 L 与一个上三角阵 U 的乘积
这就是矩阵的 LU 分解,也称为三角分解或 Doolittle 分解
矩阵的 LU 分解
那是不是所有的方阵都能够进行 LU 分解呢,如果不是,那又是哪些能够进行 LU 分解呢?
联系前面我们知道 Gauss 消元法顺利进行的条件是各个消元的主元不为 0 (即 a k k ( k − 1 ) ≠ 0 a_{kk}^{(k-1)} \neq 0 akk(k−1)̸=0 )。我们知道,能够进行 Gauss 消元与能够进行 LU 分解是等价的, Gauss 消元法也可以用来求行列式。
若将矩阵 A 的左上方各阶顺序主子矩阵记为 A 1 , A 2 , . . . , A n A_1,A_2,...,A_n A1,A2,...,An 。使用高斯消元法使得第 k 个消元的主元如果为 0 ,那么 d e t ( A k ) = 0 det(A_k)=0 det(Ak)=0 ,所以有:
若 n 阶方阵的各阶顺序主子行列式不为 0 ,则存在唯一的单位下三角矩阵 L 和上三角矩阵 U ,满足 A=LU
由此定理可以得到 LU 分解的计算公式:
{ μ 1 j = α 1 j , j = 1 , 2 , . . . , n l i 1 = α i 1 μ 11 , i = 2 , 3 , . . . , n μ i j = α i j − ∑ k = 1 i − 1 l i k u k j , j = i , i + 1 , . . . , n , i = 2 , 3 , . . , n l k i = 1 μ i i ( α k i − ∑ t = 1 i − 1 l k t μ t i ) , k = i + 1 , . . . , n , i = 2 , 3 , . . , n \left\{ \begin{array}{l} {\mu _{1j}} = {\alpha _{1j}}{\rm{ }},j = 1,2,...,n\\ {l_{i1}} = \frac{
{
{\alpha _{i1}}}}{
{
{\mu _{11}}}}{\rm{ }},i = 2,3,...,n\\ {\mu _{ij}} = {\alpha _{ij}} - \sum\limits_{k = 1}^{i - 1} {
{l_{ik}}{u_{kj}}} {\rm{ }},j = i,i + 1,...,n,i = 2,3,..,n\\ {l_{ki}} = \frac{1}{
{
{\mu _{ii}}}}({\alpha _{ki}} - \sum\limits_{t = 1}^{i - 1} {
{l_{kt}}{\mu _{ti}}} ){\rm{ }},k = i + 1,...,n,i = 2,3,..,n \end{array} \right. ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧μ1j=α1j,j=1,2,...,nli1=μ11αi1,i=2,3,...,nμij=αij−k=1∑i−1likukj,j=i,i+1,...,n,i=2,3,..,nlki=μii1(αki−t=1∑i−1lktμti),k=i+1,...,n,i=2,3,..,n
所以要先计算 U 中的第 i 行元素,再计算 L 中的第 i 列元素(因为计算 L 中的第 i 列元素需要知道 u i i u_{ii} uii )。总的时间复杂度为 O ( n 3 ) O(n^3) O(n3) 。
我们在存储时,可以将 LU 存储在一个矩阵中,减小空间消耗:
( a 11 ( 0 ) a 12 ( 0 ) a 13 ( 0 ) ⋯ a 1 n ( 0 ) β 1 ( 0 ) l 21 a 22 ( 1 ) a 23 ( 1 ) ⋯ a 2 n ( 1 ) β 2 ( 1 ) l 31 l 32 a 33 ( 2 ) ⋯ a 3 n ( 2 ) β 3 ( 2 ) ⋱ ⋮ ⋮ l n 1 l n 2 l n 3 ⋯ a n n ( n − 1 ) β n ( n − 1 ) ) {\begin{pmatrix} {a_{11}^{(0)}}&{a_{12}^{(0)}}&{a_{13}^{(0)}}& \cdots &{a_{1n}^{(0)}}&{\beta _1^{(0)}}\\ {
{l_{21}}}&{a_{22}^{(1)}}&{a_{23}^{(1)}}& \cdots &{a_{2n}^{(1)}}&{\beta _2^{(1)}}\\ {
{l_{31}}}&{
{l_{32}}}&{a_{33}^{(2)}}& \cdots &{a_{3n}^{(2)}}&{\beta _3^{(2)}}\\ {}&{}&{}& \ddots & \vdots & \vdots \\ {
{l_{n1}}}&{
{l_{n2}}}&{
{l_{n3}}}& \cdots &{a_{nn}^{(n - 1)}}&{\beta _n^{(n - 1)}} \end{pmatrix}} ⎝⎜⎜⎜⎜⎜⎜⎛a11(0)l21l31ln1a12(0)a22(1)l32ln2a13(0)a23(1)a33(2)ln3⋯⋯⋯⋱⋯