1. 程式人生 > >數值分析_Gauss的全消元與列消元

數值分析_Gauss的全消元與列消元

說明

對於初學者來說,或者說對於我來說…一直覺得直接看矩陣的角標很難一下子就在腦海裡出現這個矩陣的元素應該出現的位置,所以在看一些數值分析的演算法的時候,就需要用文字將演算法慢慢的領悟。

主元法用比較通俗易懂的表達即是利用矩陣初等變換不改變矩陣的性質這個依據,選取較大值的元素作為主元,所以列主元法和全主元法只是取最大值的範圍不一樣而已。

全主元法求解線性方程組

全主元法顧名思義即是在全部元素範圍內選取最大值作為主元,以以下矩陣所代表的方程組為例: [12315410030.112] \left[ \begin{array}{ccc|c} 1&2&3&1\\ 5&4&10&0\\ 3&-0.1&1&2 \end{array} \right]

由於我們可能對矩陣列的位置進行改變,這有可能使最後的解xnxn對應的值與我們期望的解順序不一致,因此我們還需要新建一個一維陣列來儲存解的順序: W(i)=(123)W(i)=\begin{pmatrix}1&2&3\end{pmatrix} 首先,我們需要找到全部元素中值最大的元素(絕對值),在本例中是10,並將10通過行變換和列變換移到a11的位置: [10450321110.132]W(i)=(321) \left[ \begin{array}{ccc|c} 10&4&5&0\\ 3&2&1&1\\ 1&-0.1&3&2\\ \end{array} \right] 且W(i)=\begin{pmatrix}3&2&1\end{pmatrix}
消元處理: [1045000.80.5100.52.52]W(i)=(321) \left[ \begin{array}{ccc|c} 10&4&5&0\\ 0&0.8&-0.5&1\\ 0&-0.5&2.5&2\\ \end{array} \right] 且W(i)=\begin{pmatrix}3&2&1\end{pmatrix} 在剩下的部分再次進行主元選取,即找到最大值(絕對值),可以看出最大值為2.5,我們將2.5移動到a22的位置: [1054002.50.5200.50.81]W(i)=(312) \left[ \begin{array}{ccc|c} 10&5&4&0\\ 0&2.5&-0.5&2\\ 0&-0.5&0.8&1\\ \end{array} \right] 且W(i)=\begin{pmatrix}3&1&2\end{pmatrix} 消元處理: [1054002.50.52000.71.4]W(i)=(312) \left[ \begin{array}{ccc|c} 10&5&4&0\\ 0&2.5&-0.5&2\\ 0&0&0.7&1.4\\ \end{array} \right] 且W(i)=\begin{pmatrix}3&1&2\end{pmatrix} 至此,求解所需的上三角陣已經得到,接下來要進行的操作就是依次回代求值。並得到結果: x(i)=(1.41.22)x(i)=\begin{pmatrix}-1.4&1.2&2\end{pmatrix} 但實際上我們得到解的順序是不對的,所以我們應該結合位置陣列W(i)W(i)重新調整順序,並在之後得到結果: x(i)=(1.221.4)x(i)=\begin{pmatrix}1.2&2&-1.4\end{pmatrix}

列主元法求解線性方程組

在瞭解了全主元法之後列主元的理解相對簡單,我感覺列主元的一個優點是不需要進行解順序的調整,因為在求解的過程中不涉及到列變換,只進行行變換,接下來我們沿用上一個例子,進行列主元法的說明: [12315410030.112] \left[ \begin{array}{ccc|c} 1&2&3&1\\ 5&4&10&0\\ 3&-0.1&1&2 \end{array} \right] 這次,我們首先只觀察第一列中的最大值,即5,處在第二行的位置,我們通過行變換將其調整到第一行: [54100123130.112] \left[ \begin{array}{ccc|c} 5&4&10&0\\ 1&2&3&1\\ 3&-0.1&1&2 \end{array} \right] 消元處理: [5410001.21102.552] \left[ \begin{array}{ccc|c} 5&4&10&0\\ 0&1.2&1&1\\ 0&-2.5&-5&2 \end{array} \right] 在第二列的剩餘部分尋找最大值,即-2.5,再次進行行初等變換: [5410002.55201.211] \left[ \begin{array}{ccc|c} 5&4&10&0\\ 0&-2.5&-5&2\\ 0&1.2&1&1 \end{array} \right] 消元處理: [5410002.552001.41.96] \left[ \begin{array}{ccc|c} 5&4&10&0\\ 0&-2.5&-5&2\\ 0&0&-1.4&1.96 \end{array} \right] 至此我們通過列主元法也得到了求解所需的上三角矩陣,通過回代得到最後的解: x(i)=(1.221.4)x(i)=\begin{pmatrix}1.2&2&-1.4\end{pmatrix}

最後

這是我自己整理來用於自己課後反思和作業的想法記錄,所以有些地方可能不是非常嚴謹和科學,思路僅供參考,歡迎討論!