ガウス消去法

連立一次方程式$Ax=b$を解くとき、直接法として、ガウス消去法はよく使用されます。

ガウス消去法のアイデアとして、行列の基本変形によって、拡大行列$[A|b]$の行に関する変形を行って、拡大行列をシンプルな形$[\widetilde{A}|\widetilde{b}] $にします。 例えば、$\widetilde{A}$が単位行列であるとき、方程式の解が$x=\widetilde{b}$となります。

行列の行に関する基本変形は以下の三種類があります。

以下の連立一次方程式$Ax=b$の例によって,ガウス消去法を説明します。 $$ A= \left( \begin{array}{cccc} 2& 1 & -2 & 3\\ 2 & 0 & 4 & 1 \\ 3 & 0 & 5& 2\\ 1 & -1 & 2 & 1 \end{array} \right) \quad b= \left( \begin{array}{cccc} 11\\ -5\\ -5\\ -4 \end{array} \right) $$

1. 三角行列までの変換

まず、上記の行列$A$とベクトル$b$の拡大行列$[A|b]$について、基本変換を行って、上三角行列までに変換します。

準備

Aとbを定義します。nを行列のサイズにします。MATLABでは、連立一次方程式の解は x=A\b という形で解けます。

Step 1. 行列の一列目の作業

Aの行列の第1行を使って、行列の一番目の列の対角以下の成分を0に変形します。

まず、第1行のalpha倍を第2行に加えます。

次に、第1行のalpha倍を第3行に加えます。

第4行の1列目の成分を消去するために、第1行のalpha倍を第4行に加えます。

演習1.

上記のコードをforループでまとめてください。

Step 2. 行列の2列目の作業

Aの行列の第2行を使って、行列の2番目の列の対角以下の成分を0に変形します。

演習2.

上記のコードをループで書き直して、ガウス消去法のコードを完成せよ。

2. 後退代入法による方程式を解く

連立一次方程式$Ax=b$の拡大行列$[A|b]$をガウス消去法によって三角行列までに変換する後、以下の形の行列が得られる。

$$ [U|\hat{b}]= \left( \begin{array}{cccc|c} u_{11} & u_{12} & u_{13} & u_{14} & \hat{b}_1\\ 0 & u_{22} & u_{23} & u_{24} & \hat{b}_2\\ 0 & 0 & u_{33} & u_{34}& \hat{b}_3\\ 0 & 0 & 0 & u_{44} & \hat{b}_4 \end{array} \right)\:. $$

ここで、$U$は上三角行列であり、$Ux=\hat{b}$と$Ax=b$は同じ解をもっている。

後退代入法によって、$Ux=\hat{b}$の解$x=(x_1, x_2, x_3, x_4)$の各成分$x_i$を順番に算出することができます。

演習3.

後退代入法のコードを作成しなさい。

レポート課題

以下の行列Aとベクトルbの拡大行列$[A|b]$に対して、以下の作業を行ってください。