第二節、矩陣消元(高斯消元)


一、矩陣消元(高斯消元法)

  在解方程組時我們經常用到消元法,通過對方程的倍乘、加減等操作可以得到所求方程的解。

  既然方程組可以用消元法進行求解,那么方程組變成矩陣自然也可以使用消元法。

  矩陣消元目的主要是通過行變換將矩陣對角線下方的數字都變成0,從而可以回代求線性方程組的解

  我們用該方程組演示: ,拿出它的系數矩陣A:,右側向量b:

  消元的過程是將A進行行變換得到上三角陣U,然后回代右側向量,最后求解

 1.消元的知識准備:對左側系數矩陣消元(A->U)

  我們保留矩陣的第一行,然后消去下方所有行的多余變量

  先從x位置開始。

  既然要消去x,那么我們只需要關心矩陣的第一列,如圖

  在圖中我們可以看到,關鍵的位置是紅色標記的1(我們將這種位置的數字稱為“主元”,因為它是第一個出現的,所以叫它“主元一”),而我們的目的是將藍色標記的位置都變成0。

  操作很簡單,第一行不變(因為它是主元行),第二行整體減去一倍的第一行,第三行不做變化(因為它本來就是0)。

  於是我們得到了如下圖的矩陣,可以看到,第一列的元素除了第一行都變成了0。

  然后,我們處理y。

  繼續觀察矩陣

  如今,-3是新的主元(主元二),而我們要消去的是藍色位置的1。

  操作依舊簡單,第一、二行都不變,將第三行減去-1/3倍的第二行。

  然后得到這樣的一個矩陣。(把主元標記一下

  事實上對系數矩陣的消元到這里就結束了,我們得到了一個上三角矩陣(因為它只有上半部分的三角形里有數字),我們用U表示它

  順便一提,消元時主元不能為0,如果主元為0,可以將主元所在的行與它下面的主元位置非0的行進行交換(比如 變成)。

  再順便一提,行列式的值就是主元的乘積,所以該矩陣行列式得9

  如果沒有可以進行交換的行,方程無解,這種情況以后再討論。

 2.消元的第一步:對增廣矩陣消元([A  b] -> [U  b']

  在正常的對方程組的消元過程中,等號右邊的項與左邊進行相同的操作,在矩陣中也是一樣。

  對於方程組,我們得到了它的系數矩陣A:,然后,我們把它的右側向量b:放到A中,得到一個新矩陣:

 

  我們管這個新矩陣叫做“增廣矩陣”,因為它是原矩陣增加一部分構成的,我們可以把它寫作[A  b]。

  對於增廣矩陣的每一行,我們作與上方系數矩陣消元相同的操作,從而得到U和經過行變換的b構成的增廣矩陣[U  b']

  注:正常的消元直接操作增廣矩陣即可,上面對系數矩陣單獨消元只是為了加深各位的理解。

 3.消元的第二步:回代

  經過上面的變換,增廣矩陣變成了這個樣子:

  把它改寫成方程組

  求解,得到x=-1/9,y=-4/9,z=7/9

 

 二、用矩陣描述消元過程:E[A  b]=[U  b']

  上方我們討論了如何進行矩陣消元,現在,讓我們換一種思考方式,用矩陣相乘來描述消元的過程。

 (1)預備知識

  之前我們曾討論過矩陣乘向量的問題,我們的結論是:矩陣乘向量的結果實際是矩陣列的線性組合

  但是,矩陣消元用到的都是矩陣的行,那么,矩陣的行之間是否也有相似的性質呢?按套路來講,如果沒有這種性質我就不會問這個問題了。

  事實上,當一個向量乘一個矩陣時,得到的結果就是該矩陣行的線性組合

  比如,其結果相當於1*[1 1] + 2*[1 -2] = [3 -3]。

  這里加上一些略微超前的概念:在一個矩陣A的左邊乘一個矩陣(簡稱左乘),就是對A進行行變換,而在A右邊乘一個矩陣(簡稱右乘),就是對A進行列變換。

 (2)用矩陣消元

  我們依然用這個方程進行演示,拿出它的系數矩陣A:,右側向量b:

  我們想要得到一個矩陣E,它可以表示出我們消元的整個過程,也就是用E與A相乘便能直接得到U

  還記得我們之前消元的步驟么?

  1.首先,保持第一行不變,第二行整體減去一倍的第一行,第三行同樣不變。

  即,我們需要拿出-1倍的第一行,然后將它和第二行進行線性組合(相加),然后其他行不變(注意,在矩陣消元時我們是用兩行相減,而“線性組合”是相加)。

  按照需求,我們只需要在A的左邊乘上(我們用E1表示這個矩陣)

  為什么是這個矩陣?我們一行一行地看。

  首先,A的第一行不變,因此我們需要拿出A的1個第一行,0個第二行,0個第三行(進行線性組合),於是1 0 0組成了E1的第一行。

  然后,我們需要-1個A的第一行,1個第二行,0個第三行進行線性組合,所以 -1 1 0組成了E1的第二行。

  第三行不變,因此需要0個第一行,0個第二行,1個第三行,所以E1的第三行是0 0 1

  經過變換,我們得到了

  2.然后,保持一、二行不變,將1/3個第二行與第三行進行線性組合

  可以自己寫出需要左乘的矩陣嗎?嘗試着自己推導一下

  你的結果是它嗎 ?我們用E2來表示這個矩陣。

  經過這次變換,我們得到了我們想要的矩陣U:(U是一個上三角矩陣)。

  現在,我們可以用一個不太完美的式子來表達消元的全過程了:

  E2(E1A)=U

  3.最后,合並消元步驟

  我們想要的結果是類似於EA=U這樣的干凈整潔的式子,怎么做到呢?

  在這里需要引入一條新的有關矩陣乘法的性質:矩陣乘法滿足結合律(但不滿足交換律)

  換句話說,E2(E1A)=(E2E1)A。(但AB≠BA)

  即E=(E2E1),我們管E叫做消元矩陣。

  4.整體描述

  用矩陣描述消元便是找到一個矩陣E(由每一步消元的消元矩陣相乘得到),使得EA=U,然后將其應用於增廣矩陣[A  b]從而得到[U  b'],完成消元。

 

  后面還會介紹EA=U的變形

三、置換矩陣

  我們可以用矩陣相乘來完成矩陣的行交換與列交換,而用到的矩陣便叫做置換矩陣

 行交換

  我們消元時通過左乘矩陣實現了行與行的線性組合,那么,如果想要將兩行進行交換,需要怎么做呢?

  召喚個矩陣先:

  假設我們想要這個矩陣的第一二行(得到

  對於新矩陣的第一行,我們相當於拿出了0個原矩陣的第一行,1個原矩陣的第二行,0個原矩陣的第三行。

  對於新矩陣的第二行,我們相當於拿出了1個原矩陣的第一行,0個原矩陣的第二行,0個原矩陣的第三行。

  對於新矩陣的第三行,我們相當於拿出了0個原矩陣的第一行,0個原矩陣的第二行,1個原矩陣的第三行。

  因此,我們只需在原矩陣的基礎上左乘一個。(各行顏色不同是為了便於理解其構成方式,沒有其他特別含義)

  我們管左乘的這個矩陣叫做置換矩陣,用P表示。

 列交換

  之前提到過,左乘即操作行,右乘即操作列

  召喚一個矩陣:

  想要交換這個矩陣的第一二列,得到

  對於新矩陣的第一,我們相當於拿出了0個原矩陣的第一列,1個原矩陣的第二列,0個原矩陣的第三列。

  對於新矩陣的第二列,我們相當於拿出了1個原矩陣的第一列,0個原矩陣的第二列,0個原矩陣的第三列。

  對於新矩陣的第三列我們相當於拿出了0個原矩陣的第一列,0個原矩陣的第二列,1個原矩陣的第三列。

  所以,只需要右乘

  注意:這個矩陣雖然和上面交換行的置換矩陣長相相同,但性質與構成的方式卻完全不同(行交換的置換矩陣是一行一行構成的,而列交換的卻是一列一列構成的)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM