高斯 約當(Gauss Jordan)消元法

2021-07-03 12:00:18 字數 2604 閱讀 8493

選主元的高斯-約當(gauss-jordan)消元法在很多地方都會用到,例如求乙個矩陣的逆矩陣、解線性方程組(插一句:lm演算法求解的乙個步驟),等等。它的速度不是最快的,但是它非常穩定(來自網上的定義:乙個計算方法,如果在使用此方法的計算過程中,捨入誤差得到控制,對計算結果影響較小,稱此方法為數值穩定的

),同時它的求解過程也比較清晰明了,因而人們使用較多。下面我就用乙個例子來告訴你gauss-jordan法的求解過程吧。順便再提及一些注意事項以及擴充套件話題。

對本文中所提到的「主元」等概念的解釋,可以參考此鏈結。

假設有如下的方程組:

寫成矩陣形式就是:ax=b,其中:

且x=(x1, x2, x3)t。

現對矩陣a作

初等變換

,同時矩陣b也作同樣的初等變換,則當a化為單位矩陣的時候,有:

顯而易見,我們得到了方程組的解x=(1, 2, 4)t。

所以,我們要以一定的策略,對a和b施以一系列的初等變換,當a化為單位矩陣的時候,b就為方程組的解。

選主元的g-j消元法通過這樣的方法來進行初等變換:在每乙個迴圈過程中,先尋找到主元,並將主元通過行變換(無需列變換)移動到矩陣的主對角線上,然後將主元所在的行內的所有元素除以主元,使得主元化為1;然後觀察主元所在的列上的其他元素,將它們所在的行減去主元所在的行乘以一定的倍數,使得主元所在的列內、除主元外的其他元素化為0,這樣就使得主元所在的列化為了單位矩陣的形式。這就是乙個迴圈內做的工作。然後,在第二輪迴圈的過程中,不考慮上一輪計算過程中主元所在的行和列內的元素,在剩下的矩陣範圍內尋找主元,然後(如果其不在主對角線上的話)將其移動到主對角線上,並再次進行列的處理,將列化為單位矩陣的形式。餘下的步驟依此類推。具體的計算過程的乙個例子,請看下面我舉的求逆矩陣的過程。

如果要解係數矩陣相同、右端向量不同的n個方程組,在設計程式的時候,沒有必要」解n次方程組「,我們完全可以在程式中,將所有的右端向量以矩陣的資料結構(類似於二維陣列)來表示,在係數矩陣作行變換的時候,矩陣裡的每乙個右端向量也做同樣的變換,這樣,我們在一次求解運算的過程中,實際上就是同時在解n個方程組了,這是要注意的地方。

那麼,g-j法為什麼可以用來求逆矩陣?

假設ax=e,其中,a為n階係數矩陣(與上面的解線性方程組對照);e為單位矩陣,即e=(e1,e2,…,en),其中ei (i=1,2,…,n) 為單位列向量;x為n個列向量構成的矩陣,即x=(x1,x2,…,xn),其中xi (i=1,2,…,n) 為列向量。於是,可以把等式ax=e看成是求解n個線性方程組axi=ei (i=1,2,…,n),求出了所有的xi之後,也即得到了矩陣x。而由ax=e可知,矩陣x是a的逆矩陣,即x=a-1。這樣,就求出了a的逆矩陣了。於是,求逆矩陣的過程被化成了解線性方程組的過程,因此我們可以用gauss-jordan消元法來求逆矩陣。

求逆矩陣時,係數矩陣a和單位矩陣e可以共用一塊儲存區,在每一次約化過程中,係數矩陣逐漸被其逆矩陣替代。

在這裡,我用乙個實際的例子來說明g-j法求逆矩陣的過程:

有如下的方程組:

顯而易見,該方程組對應的係數矩陣a和右端向量矩陣b(此處只有乙個右端向量)分別為:

其實在求逆矩陣的過程中,矩陣b無關緊要,可以忽略,不過此處還是把它寫出來了。下面,把單位矩陣e附在a的右邊,構成另乙個矩陣(a|e):

下面,我們就通過矩陣的初等變換,將a化為單位矩陣e,而e則化為了a的逆矩陣。以下是轉化步驟:

現在,原來的矩陣a有一列被化為了單位陣的形式。

現在,原來的矩陣a又有一列被化為了單位陣的形式。

現在,原來的矩陣a的所有列都被化為了單位陣的形式。

可見,以上過程非常適合於計算機程式設計求解。

至此,我們完成了從a到e的轉換,這個過程中使用了選主元的方法,但沒有使用列交換。於是,原來的單位矩陣e就變成了a-1,即:

有人說,在進行轉化的過程中,如果某一步發現選中的主元為0,怎麼辦?當然,這種情況就進行不下去了(矩陣是奇異的)。

高斯 約當消元法(隨機程式,UVA 10828)

就是有一類題目 就是給你乙個圖,和乙個起始點 可以很抽象,比如uva 11762需要你自己建模。也可以很具體,比如就是乙個網格 然後每個節點都有一定概率轉移到另一些節點。具體解法就是 如果是有向無環圖就用動態規劃或者記憶化搜尋。否則就是高斯消元。本題就是高斯消元。然後如果使用高斯 約當消元法就可以省...

高斯消元法(n 3)順序,主元,約當

模板題目 順序高斯消元 拿列主元隨便改的 int n double a 111 111 ans 111 signed main rpp i,n cout cout for int i n i 1 i rpp i,n printf 2f n ans i cout return0 列主元消除法 加減消元...

約當標準型 特徵向量到約當標準型

線性變換及其矩陣表示和相似變換 給定一組有限維向量空間v的基,乙個線性變換t v v 的關於這組基的 矩陣分量 t i,j 定義為 t ej sigma i 1 to n,t i,j ei t 1,j e1 t 2,j e2 t n,j en 也就是說,這個線性變換把基向量ej變換成乙個新向量,它是...