1. 程式人生 > >線性代數筆記10——矩陣的LU分解

線性代數筆記10——矩陣的LU分解

blog 線性方程組 能夠 向量 alt 過程 http ont 形式

  在線性代數中, LU分解(LU Decomposition)是矩陣分解的一種,可以將一個矩陣分解為一個單位下三角矩陣和一個上三角矩陣的乘積(有時是它們和一個置換矩陣的乘積)。LU分解主要應用在數值分析中,用來解線性方程、求反矩陣或計算行列式。

什麽是LU分解

  如果有一個矩陣A,將A表示成下三角矩陣L和上三角矩陣U的乘積,稱為A的LU分解。

技術分享圖片

  更進一步,我們希望下三角矩陣的對角元素都為1:

技術分享圖片

  一旦完成了LU分解,解線性方程組就會容易得多。

LU分解的步驟

  上一章講到,對於滿秩矩陣A來說,通過左乘一個消元矩陣,可以得到一個上三角矩陣U。

技術分享圖片

  可以看到,L實際上就是消元矩陣的逆。容易知道二階矩陣的逆:

技術分享圖片

  現在假設A是一個3×3矩陣,在不考慮行交換的情況下,通過消元得到上三角矩陣的過程是:

技術分享圖片

LU 分解的前提

  並非所有矩陣都能進行LU分解,能夠LU分解的矩陣需要滿足以下三個條件:

  1. 矩陣是方陣(LU分解主要是針對方陣);
  2. 矩陣是可逆的,也就是該矩陣是滿秩矩陣,每一行都是獨立向量;
  3. 消元過程中沒有0主元出現,也就是消元過程中不能出現行交換的初等變換。

LU分解的意義

  LU分解的意義在於求解大型方程組。一個方程組可以簡化為Ax = b的形式,其中A是n階方陣,x是未知數組成的向量,b是n×1矩陣,例如:

技術分享圖片

  以往求解的方式有兩種,一是高斯消元法,二是對A求逆,使得x = A-1

b。第二種方式遠比消元法復雜,先看一下消元法的計算量。假設A是n階滿秩方陣,如果不寫成增廣矩陣,即不考慮 b,那麽第一次消元達到的效果是:

技術分享圖片

  其中方塊是A原來的元素,0是達到的效果,三角是經過消元運算後改變的元素。以第二行為例,為了使第一個元素為0,需要讓第一行乘以某個數(第一行n個元素,共進行了n次乘法運算),再將第一行和第二行相加或相減(第二行n個數與第一行的n個數相加,共進行了n次加法運算)。如果把一組乘法和加法看成一次運算,那麽第二行的消元共進行了n次運算;共有n-1行需要類似運算,所以第一次消元共進行了n(n - 1) ≈ n2 次運算。依次類推,第二次消元共進行了(n - 1)(n - 2) ≈ (n - 1)2

次運算……消元到最後,變成了上三角矩陣U,總運算次數是:

技術分享圖片

  經過約n3/3次運算後可以得到上三角矩陣U,由於是增廣矩陣,所以可以逐步求解x。

  LU分解的運算過程和高斯消元類似,首先經過n3/3次運算將A變成LU,使Ax = b變成(LU)x = L(Ux) = b,再對L求逆,使得Ux = L-1b,最後求解。

  看起來比高斯消元經歷了更多的步驟,那為什麽又說LU分解更快呢?在實踐中,b是輸出,輸出又經常變動,從Ax = b頻繁地變成Ax = b’,此時高斯消元就需要全部重新計算(高斯消元用增廣矩陣消元,變化過程是[A, b]→[U, b’]),這對大型矩陣來說及其耗時。反觀LU分解,因為它不依賴於b,所以計算一次後就可以存儲U和L-1,在輸出變化後也只是需要簡單的相乘。實際上,由於L已經是整理過的斜對角全是1的下三角矩陣,所以用高斯-諾當消元法對L求逆非常簡單。

允許行交換

  對於A = LU,我們之前限制了行的互換,但如果不可避免的必須進行行互換,只需要把A = LU變成 PA = LU就可以了,其中P是置換矩陣。實際上所有的A = LU都可以寫成PA = LU的形式,當A沒有行互換時,P就是單位矩陣。上一章敘述了置換矩陣的性質,P-1 = PT,所以A = P-1LU = PTLU

示例

  技術分享圖片

  如果A存在LU分解存,a,b滿足什麽條件?

  使用消元法逐一消去主元:

技術分享圖片

  由於E31 中出現了 –b/a,所以a ≠ 0

技術分享圖片

  b可以是任意常數。


  作者:我是8位的

  出處:http://www.cnblogs.com/bigmonkey

  本文以學習、研究和分享為主,如需轉載,請聯系本人,標明作者和出處,非商業用途!

  掃描二維碼關註公眾號“我是8位的”

技術分享圖片

線性代數筆記10——矩陣的LU分解